【算法总结】10+数据挖掘、机器 学习算法R常用函数总结(上)
预测函数:predict() type="prob"判别该量度的昆虫归类为A、B和C的概率;type="response":判别该量度的昆虫的类别;
预测分类的概率的函数predict(…, type)参数type:
R语音里面不同模型,参数type取值也不同。例如,可能取值有prob、posterior、raw(朴素贝叶斯)、probability(请参考使用包的帮助文档确定),type="class"表示结果为分类。
mice包中的mice(data, m)函数:通过链式方程产生多个虚值。data为数据框或包含不完整数据的矩阵,缺省值为NA;m为多重插补数,默认为5。(随机森林)
stats包中的cutree(tree,k, h)函数:把一棵树变成一组数据。tree为hclust()函数产生的数;k为分组数。
> model_id <- cutree(model_hclust, 3) 函数cuttree()将数据iris分类结果iris.hc编为三组分别以1,2,3表示
R语言plyr等包合并、排序、分析数据并编制香农-威纳指数
plyr包中的colwise(fun)函数:列式函数,在数据框的列上操作的函数。fun为要数据框的列上操作的函数。
数据预处理包:dplyr
常用包:
1、caret包中的train(formula, data, method,metirc, trControl, tuneGrid, preProcess)函数(不同调谐参数的预测模型):设置一个网格的调整参数的一些分类和回归例程,适合每个模型,并计算基于重采样的性能测量。method指定分类或回归模型的字符串;metric指定将用于选择的最佳模型的概要度量的字符串;trControl定义控制函数行为值的列表;tuneGrid一个数据框可能的调整值,列名与调整参数相同;preProcess为指定的预处理参数。
caret包中的trainControl(method,number, repeats, selectionFunction)函数:训练控制参数。method为重采样方法,有boot/boot632/cv/repeatedcv/LOOCV/LGOCV/none/oob/adaptive_cv/adaptive_boot/adaptive_LGOCV;number为重采样的迭代次数;repeats为几重交叉验证;selectionFunction选择最佳调整参数的函数。
caret包中的findCorrelation(x,cutoff)函数:确定高度相关变量。x为相关系数矩阵;cutoff成对相关系数绝对值的截止值。
caret包中的rfeControl(functions,method, number)函数:控制特征选择算法。functions为一个模型拟合、预测和变量重要性的函数列表;method为外部的重采样方法(boot、cv等);number为N-fold CV或重采样迭代次数。
caret包中的rfe(x,y, sizes, rfeControl)函数:一个简单的逆向选择,即递归特征选择(RFE)。x为预测模型的数据库或矩阵;y为训练集的输出;sizes是应保留特征数的整数数字向量;rfeControl为一个包含拟合和预测函数的选择列表。
createdatapartition(y, times, p=0.5, list)函数:创建一系列的测试/训练的分区。y为真实分类数据,一个输出的向量,如果是createtimeslices,这些应该是按时间的顺序;times为创建的分区的数目,除非重复实验,否则需要一个就行;p训练集占数据集的比重;list为F是不将结果列在列表中。
createresample()函数:创建一个或多个Bootstrap样本;
Createfolds()函数:将数据分为K组;
createtimeslices()函数:创建交叉验证样本信息可用于时间序列数据。
2、R语言sqldf包的sqldf()函数:对数据框做SQL操作
newdf <-sqldf("select * from mtcars where carb=1 order by mpg",row.names =TRUE)
3、R中常用的几个扩展包,其中包括用ggplot2包来绘图,用glmnet包做回归,用tm包进行文本挖掘,用plyr、reshape、lubridate和stringr包进行数据预处理,stringr包处理字符串。
4、在数据分析的过程中,我们经常需要对数据建模并做预测。在众多的选择中,randomForest, gbm和glmnet是三个尤其流行的R包,它们在Kaggle的各大数据挖掘竞赛中的出现频率独占鳌头,被坊间人称为R数据挖掘包中的三驾马车。根据我的个人经验,gbm包比同样是使用树模型的randomForest包占用的内存更少,同时训练速度较快,尤其受到大家的喜爱。
irr包中的Kappa2()函数:计算科恩Kappa和权重Kappa作为2者一致性的一个指标。
一、线性回归
R 中的工具:
regsubsets函数进行feature选择;
glmnet包用于ridge,lasso;
pls包中的pcr()函数用于PCR,plsr()函数用于PLS;
mgcv包用于GAM;
lme4包用于mixed effects model
1、通过car(DAAG)包的vif()函数,返回的是方差的膨胀因子,如果膨胀因子大于10,则说明有多重共线性(用于解决多重共线性,判断膨胀因子)。用法如下:
> library(DAAG)
>lm.reg<-lm(Employed~GNP+Unemployed+Armed.Forces+Population+Year,data=longley)
> vif(lm.reg,digits=4)
GNP Unemployed Armed.Forces Population Year
1034.000 23.260 3.152 225.700 732.600 膨胀因子大多大于10,存在严重的相关性
一般来说kappa大于1000,或vif大于10说明存在复共线性。
(car包中的)回归诊断实用函数
函数 |
目的 |
qqPlot() |
分位数比较图 |
durbinWatsonTest() |
对误差自相关性做Durbin-Watson检验 |
crPlots() |
成分与残差图 |
ncvTest() |
对非恒定的误差方差做得分检验 |
spreadLevelPlot() |
分散水平检验 |
outlierTest() |
Bonferroni离群点检验 |
avPlots() |
添加的变量图形 |
inluencePlot() |
回归影响图 |
scatterplot() |
增强的散点图 |
scatterplotMatrix() |
增强的散点图矩阵 |
vif() |
方差膨胀因子 |
car包中的qqPlot(x, labels, id.method, simulate)函数:分位比较图。x为lm对象;labels为文本字符串向量;id.method为点识别方法;simulate为T,计算置信区间。
2、car包的scatterplotMatrix()函数:返回的是N*N的散点图矩阵。增强的散点图矩阵单因素显示沿着对角线;SPM是scatterplotmatrix(散点图矩阵)缩写。此功能只需设置一个与自定义面板功能对的调用(用于画图判断)。例如:
states<-as.data.frame(state.x77[,c("Murder","Population", "Illiteracy","Income","Frost")]) #简化数据框
cor(states) #相关性检测
library(car)
scatterplotMatrix(states,spread=F,lty.smooth=2) spread=T为方差函数的估计;
car包中的scatterplot()函数:可以很容易、方便地绘制二元关系图;增强的散点图
car包的vif()函数:用于计算膨胀因子(用于解决多重共线性)。
car包中的outlierTest(model)函数:Bonferrnoi离群点检测。model为lm或glm对象。是根据单个最大(或正或负)残差值的显著性来判断是否有离群点,若不显著,则说明数据集中没有离群点,若显著,则必须删除该离群点,然后再检验是否还有其他离群点存在。
car包中的influencePlot()函数,可将离群点、杠杆点和强影响点的信息整合到一幅图形中
car包中的influencePlot(mdoel,id.method)函数:回归影像图。model为线性或广义线性模型;id.method为“identify”为交互点识别。
3、psych包用于主成分分析
psych包中的princomp()函数:可以根据原始数据或相关系数矩阵做主成分分析 。格式为:principal(x,nfactors=,rotate=,scores=)
其中:x是相关系数矩阵或原始数据矩阵;nfactors设定主成分个数(默认为1);rotate指定旋转的方式(“none”或“varimax”)[默认最大方差旋转(varimax);scores设定是否需要计算主成分得分(“T”或”F”)(默认不需要)。
psych包中的fa.parallel()函数:可以判断主成分的个数,其使用格式为: fa.parallel(x,fa = , n.iter =)
其中,x为待研究的数据集或相关系数矩阵,fa为主成分分析(fa="pc")或者因子分析(fa = "fa"),n.iter指定随机数据模拟的平行分析的次数。
4、利用MASS包中的函数lm.ridge()来实现岭回归
利用ridge包中的linearRidge()函数进行自动选择岭回归参数
通过effects包中的effect()函数,可以用图形展示交互项的结果
利用ridge包中的linearRidge()函数进行自动选择岭回归参数
5、lars包提供了lasso()函数(lasso:套锁算法,用于解决多重共线性):Lasso算法则是一种能够实现指标集合精简的估计方法。并利用AIC准则和BIC准则给统计模型的变量做一个截断,进而达到降维的目的。因此,我们通过研究Lasso可以将其更好的应用到变量选择中去。
lars包提供的lars()函数:这些是套索所有的变种,并提供系数和适合整个序列,从零开始,以最小二乘法拟合。
lars包的cv.lars()函数:计算交叉验证误差曲线的Lars。cva <- cv.lars(x2, y, K = 10, plot.it = TRUE) #10折叠交叉验证,并绘制cv(交叉验证)的变化图。
lars包中的coef.lars()函数或者predict.lars()函数:从拟合的lars模型预测或提取系数;当lars()生产解决方案的整个路径,predict.lars允许提取沿着路径在特定的点预测。coef <- coef.lars(laa, mode = "fraction", s = best) #获取使得CV最小时的系数 (请参考多重共线性中的lasso算法)
S 一个值,或一个向量值,索引路径。它的值取决于mode= argument。默认情况下(mode= “step”),应该采取p和0之间的值
Mode Mode="step"是指S =参数指标的Lars的步数,系数将返回相应的值对应于step s。如果mode="fraction",然后应该是0和1之间的数,它指的是系数向量范数比,相对为了规范在全最小二乘解。Mode="norm"指的是指L1范数的系数向量。Mode="lambda"用套索正则化参数的;其他型号是最大相关(不让Lars /逐步模型)。允许缩写。
共glmnet包实现lasso套锁算法,用cv.glmnet()函数来实现cv(交叉验证):做为glmnet K-fold交叉验证,产生了一个图,并返回一个值λ。
gla <- cv.glmnet(x2, y, nfolds = 10) #cv做交叉验证来确定模型,nfolds=10其实是默认值
折叠数-默认为10。虽然折叠数可以当样本容量大(留一CV),这是不推荐用于大型数据集。最小值是允许nfolds= 3
二、主成分分析
1、psych包的实例请参照 主成分分析2:psych包
psych包中的常用函数:
principal() 含多种可选的方差放置方法的主成分分析
fa() 可用主轴、最小残差、加权最小平方或最大似然法估计的因子分析
fa.parallel() 含平等分析的碎石图
factor.plot() 绘制因子分析或主成分分析的结果
fa.diagram() 绘制因子分析或主成分分析的载荷矩阵
scree() 因子分析和主成分分析的碎石图
psych包中的fa.parallel()函数:可以判断主成分的个数,其使用格式为:
fa.parallel(x, fa = , n.iter =)
其中,x为待研究的数据集或相关系数矩阵,fa为主成分分析(fa= "pc")或者因子分析(fa = "fa"),n.iter指定随机数据模拟的平行分析的次数。
psych包中的principal( )函数:可以根据原始数据或相关系数矩阵做主成分分析,其使用格式为:
principal(x, nfactors =, rotate=, scores =)
其中,x是原始数据或相关系数矩阵,nfactors指定主成分个数,rotate指定旋转的方法(“none”或“varimax”),scores为是否需要计算主成分得分(“T”或”F”)。
使用fa()函数提取相应的因子,fa()函数的格式如下:fa(r,nfactors=,n.obs=,rotate=,scores=,fm=)
r是相关系数矩阵或者原始数据矩阵;
nfactors设定提取的因子数(默认为1);
n.obs是观测数(输入相关系数矩阵时需要填写);
rotate设定旋转的方法(默认互变异数最小法);
scores设定是否计算因子得分(默认不计算);
fm设定因子化方法(默认极小残差法)。
与PCA不同,提取公共因子的方法很多,包括最大似然法(ml)、主轴迭代法(pa)、加权最小二乘法(wls)、广义加权最小二乘法(gls)和最小残差法(minres)未旋转的主轴迭代因子法
作者:军军,北京数据开发工程师。
本文由作者军军授权数据人网发表,并经数据人网审核。转载此文章需经作者同意,并请附上出处(数据人网)及本页链接:http://shujuren.org/index.php/Article/update/aid/128
更多精彩内容,请点击阅读原文。
数据人网(http://shujuren.org),数据人学习、交流和分享的家园,专注于从数据中学习,努力发觉数据之洞见,积极利用数据之价值。为“让人懂数据、用数据”之使命坚持做点事情。大家可以来投稿,做分享和传播,可以给反馈。您有什么想法,请反馈给我们,谢谢。数据人网,我们共建和共享。
公众号推荐
数据科学自媒体,从数据里面学习。
长按二维码图片,选择识别二维码图片,添加即可。
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!