| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> R语言数学建模(4)模式甄别 -> 正文阅读 |
|
[人工智能]R语言数学建模(4)模式甄别 |
模式(Pattern):分散于大量数据集中的极少量的零星数据组成的数据集合模式通常具有其他众多数据所没有的,某种局部的,非随机性的,非常规的特殊结构或相关性,很可能是某些重要因素所导致的必然结构(偶然中的必然,有点哲学)。 模式甄别实际上就是对于一大堆数据进行分类,哪些属于异常数据,哪些属于正常数据,这里我们介绍有监督学习的模式甄别,模式甄别实际上就是运用分类算法甄别出数据中的异常项。本文认为因变量1为模式,0或3为正常或缺失。 一,数据预处理我们进行data mining 前需做的一步是知道数据长啥样,包括缺失值的检验,变量的选择,需不需要降维等等等。 模式甄别与普通的分类问题最大的区别在于,模式甄别的数据集并不平衡,即一个数据集中异常值往往远远小于正常值,我们可以用imbalance rate = balance/imbalance 来表示一个数据集的不平衡程度,对于一个非平衡数据集,一些经典算法如决策树,神经网络,logistics回归就不具有理想的预测效果了这主要是因为1类样较少,对总的预测误差的贡献低于0类,solutions是将其变为平衡 1,基于数据的平衡数据重抽样可以将非平衡数据集变为平衡,主要有欠抽样与过抽样。 过抽样(Random Over-sampling):随机又放回的复制少数类样本。 ? ? ? ? ? ?disadvantage:缺点很显然,复制后存在多重共线性,模型会拟合噪声造成过拟合 欠抽样(Random Under-sampling):取出少数类样本,在多数类样本中随机抽取相同数量的样本与少数类样本bind成为新的样本 r语言中的sample函数可以用来抽样 sample(data,size=)size表示你要抽的数目length(data)*0.7表示抽取70%的数据 2,基于算法的平衡由于过抽样与欠抽样本身的局限,SMOTE是一种改进的算法基本原理:相距较近的少数类样本仍然是一类,在相距较近的负类之间插入负类的“人造合成”观测 从观测点Xi的k个负类中随机挑选一个近邻Yi ? ? ? ? ? ? ? ? ?Newi = Xi + rand(0,1)*(Yi-Xi)这就生成了一个“人造合成”的新的负类 R语言实现: install.packages("DMwR") SMOTE(formula,data,perc.over,perc.under,k=k) formula: 输出变量~输入变量 data : 数据集 k : 规定近邻个数 perc.over : 指定合成率m,? ? ? 一个负类观测制造m/100个人工合成的负类观测 perc.under :指定正类的欠抽样比例w? ? 人造合成的负类观测数为n,则意味着从正类中随机抽取 ? ? ? ? ? ? ? ? ? ? ?n*(w/100)个正类观测,与所有的负类观测形成新数据集 二,有监督侦测1,朴素贝叶斯假设1:模式观测和正常观测分别来自两个不同的分布 假设2:两个分布的概率分布函数一直,一般假定为正态 假设3:特征变量之间条件独立 install.packages("klaR") NaiveBayes(x=输入变量矩阵或数据框,grouping=输出变量,fL=0) 返回结果 apriori:估计的先验概率 tables:给出各个输入变量在各个类别中的均值和标准差 predict(object = NaiveBayes, newdata = 输入变量矩阵或数据框) 返回结果: class:给出各个观测的预测类别 posterior:给出各个观测属于各类别的概率 2,logistic回归model <- glm(formula,data,family=binomial(link=logit")) pre.model <- predict(model,newdata,type="response") 三,模式甄别的半监督学习解决分类变量缺失带来的问题,只知道极少数的标签变量值,如何仅依据较少的已知标签变量值,找到特征变量与标签变量取值的规律性,并利用这种规律,预测新样本是否为模式观测,是模式甄别半监督侦测的核心。 selftrain model step1:取出数据集D中的完整观测为一子集Dj step2:基于Dj建立分类模型Mj step3:用Mj预测D-Dj将其中置信度较高的观测放入Dj,得到较大的完整观测数据集重复step2 install.packages("DMwR") SelfTrain(R公式,data,learner("分类模型函数名"),predFunc="预测函数名",thrConf=0.9,MaxIts=10,percFull=比率阈值) thrconf = 指定预测置信度,置信度大于阈值合并到Dj,若不再有观测能合并,结束迭代 MaxIts = 指定最大迭代次数 percFuLL= 当Dj/D大于等于指定阈值时迭代结束 learner = 分类模型的参数通过list设定,如 ? ? ? ? ? ? ? learner("glm",list(family=binomal(link="logit"))) predFunc = 用户自定义预测函数,需返回含有两个数据框的域,第一个代表预测值, 第二个代表预测置信度 data中位置标签设为NA |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 20:40:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |