【算法总结】10+数据挖掘、机器 学习算法R常用函数总结(下)
九、聚类:层次聚类、动态聚类Kmeans、
距离和相似系数
stats包中的dist(x, method = "euclidean",diag= FALSE, upper = FALSE, p = 2) :来计算距离。
其中,x是样本矩阵或者数据框。
method表示计算哪种距离,method的取值有:“euclidean” 欧几里德距离,就是平方再开方;“maximum ”切比雪夫距离 ;“manhattan”绝对值距离;“canberra” Lance 距离 ;“minkowski”明科夫斯基距离,使用时要指定p值;“binary ”定性变量距离.定性变量距离: 记m个项目里面的 0:0配对数为m0 ,1:1配对数为m1,不能配对数为m2,距离=m1/(m1+m2);
diag 为TRUE的时候给出对角线上的距离。
upper为TURE的时候给出上三角矩阵上的值。
stats包中的as.dist(m,diag=F, upper=F)函数:m为距离信息的对象将被转换为一个“dist”对象。默认的方法,“dist”对象,或一个矩阵(距离)或一个对象可以强制转换为一个矩阵。(仅使用矩阵的下三角,其余的则被忽略)。diag是否显示距离矩阵的对角线。upper是否显示矩阵的上三角。
stats包中的scale(x, center = TRUE, scale = TRUE) :对数据矩阵做中心化和标准化变换。如只中心化 scale(x,scale=F) ,
eigen():返回矩阵的特征值和特征向量
stats包中的sweep(x, MARGIN, STATS, FUN="-",…) :对矩阵进行运算。MARGIN为1,表示行的方向上进行运算,为2表示列的方向上运算。STATS是运算的参数。FUN为运算函数,默认是减法。
fpc包中的plotcluster(x,clvecd)函数:判别投影图。x为矩阵或者可以转化为矩阵的数字对象;clvecd为可以转化为整数的类向量。
1、层次聚类
stats包中的hclust(d,method = "complete", members=NULL) 函数:进行层次聚类。d为距离矩阵;method表示类的合并方法,single最短距离法,complete最长距离法,median中间距离法,mcquitty 相似法,average 类平均法,centroid重心法,ward离差平方和法;members为NULL或d长度的矢量。
stats包中的cutree(tree,k, h)函数:把一棵树变成一组数据。tree为hclust()函数产生的数;k为分组数。
stats包中的rect.hclust(tree, k =NULL, which = NULL, x = NULL, h = NULL,border = 2, cluster = NULL)函数:绘制矩形周围的层次聚类,来确定类的个数。tree就是求出来的对象。k为分类的个数,h为类间距离的阈值。border是画出来的颜色,用来分类的。
2、动态聚类:Kmeans
stats包中的kmeans(x,centers, iter.max = 10, nstart = 1,algorithm =c("Hartigan-Wong","Lloyd","Forgy", "MacQueen")):来进行聚类。x为数字矩阵。centers是初始类的个数或者初始类的中心。iter.max是最大迭代次数。nstart是当centers是数字的时候,随机集合的个数。algorithm是算法,默认是第一个。
3、DBSCAN聚类
fpc包中的dbscan(data,eps, MinPts, scale, method, seeds, showplot, countmode)函数:产生基于密度的任意形状的聚类。data为数据框或矩阵;eps是距离的半径,eps参数设为0.6,即两个点之间距离小于0.6则归为一个簇;minpts是最少多少个点; scale是否标准化(我猜);method 有三个值raw,dist,hybird,分别表示,数据是原始数据避免计算距离矩阵,数据就是距离矩阵,数据是原始数据但计算部分距离矩阵;showplot画不画图,0不画,1和2都画;countmode,可以填个向量,用来显示计算进度。
如果eps设置过大,则所有的点都会归为一个簇,如果设置过小,那么簇的数目会过多。如果MinPts设置过大的话,很多点将被视为噪声点。
fpc包中的plotcluster(x,clvecd)函数:判别投影图。x为矩阵;clvecd为用整数表示类的向量。
十、EM算法:最大期望算法(Expectation-maximizationalgorithm,又译期望最大化算法)
1、mclust包中的Mclust(data, G)函数:基于模型的聚类,BICEM采用分层高斯混合模型聚类初始化参数优化模型。G为BIC要计算的混合分量的整数向量;
mclust包中的mclustBIC()函数:BIC基于模型的聚类。predict函数分类需要指定type="class"
十一、Bootstrap(自助法)算法
boot包中在boot(data, statistic, R, formula)函数:自助算法。data:数据,可以是向量,矩阵,数据框;statistic:统计量,如均值,中位数,回归参数,回归里的R^2等;R:调用统计量函数次数
boot包中的boot.ci(boot.out,type)函数:实现Bootstrap置信区间的计算。boot.out为boot()的输出结果;type返回置信区间的类型,R中提供的有"norm","basic", "stud","perc", "bca",all可以指定包含所有。
十二、bagging(装袋)算法
1、ipred包中的bagging(formula, data)函数:装袋分类,回归和存活树。
2、adabag包中的bagging(formula, data)函数:装袋分类,回归和存活树。
十三、Boosting、adaboost、xgboost
1、boosting回归,使用到的函数包为mboost,使用函数为mboost.用法如下:
mboost(formula, data= list(),
baselearner = c("bbs", "bols", "btree","bss", "bns"), …)
其中formular需要使用到函数btree():
btree(…,tree_controls = ctree_control(stump = TRUE, mincriterion = 0, savesplitstats =FALSE))
2、adabag包中的boosting(formula, data)函数:用Adaboost.M1算法创建模型。
adabag包中的errorevol(object,newdata)函数:计算误差演变的步骤。object为boosting()函数或bagging()函数的输出;newdata为新数据。
predict函数分类需要指定type="class"
3、xgboost包中的xgb.DMatrix(data, missing)函数:构建xgb.dmatrix对象从稠密矩阵,稀疏矩阵或本地文件。data为数据对象;missing表示为稠密矩阵时,选择充当缺失值的数。
xgboost包中的xgboost(data,label, max.depth, eta, nround, objective)函数:创建xgboost模型的一个接口,可以使用更先进的xgb.train()函数接口。data为dgCMatrix、本地文件或者xgb.DMatrix;label为响应变量,如果为本地文件或xgb.DMatrix时不必设置此文件;eta为每提高一步的时间步长;max.depth为树的最大深度;nround为最大迭代次数;objective函数,reg:linear表示线性回归,binary:logistic表示分类的逻辑线性回归。
xgboost包中的xgb.cv(data,label, max.depth, eta, nround, objective, nfold)函数:创建xgboost模型的Cross Valudation功能。data为dgCMatrix、本地文件或者xgb.DMatrix;label为响应变量,如果为本地文件或xgb.DMatrix时不必设置此文件;eta为每提高一步的时间步长;max.depth为树的最大深度;nround为最大迭代次数;objective函数,reg:linear表示线性回归,binary:logistic表示分类的逻辑线性回归;nfold为原始数据集随机划分成大小相等的子样本nfold。
xgboost包中的xgb.train(param=list(),data, nrounds)函数:极限阶梯训练模型。param为参数列表;data作为一个xgb.dmatrix作为输入;nrounds表示迭代的最大次数。
十四、协同过滤:
1、recommenderlab包中的rowCounts(x)函数:每行的评分。x为ratingMatrix对象。
recommenderlab包中的colCounts(x)函数:每列的评分。x为ratingMatrix对象。
recommenderlab包中的rowMeans(x)函数:行式的评级法。x为ratingMatrix对象。
recommenderlab包中的Recommender(data, k, method, Normalize, normalize_sim_matrix,na_as_zero, minRating)函数:创建推荐模型。data为训练数据;K取多少个最相似的item,默认为30;method相似度算法,默认为采用余弦相似算法cosine;Normalize采用何种归一化算法,默认均值归一化x-mean;normalize_sim_matrix是否对相似矩阵归一化,默认为否;na_as_zero是否将NA作为0,默认为否;minRating:最小评分,默认不设置;
recommenderlab提供了6中不同的推荐方法method:random(随机推荐(real ratings)),popular(基于流行度推荐(real data)),ibcf(基于项目协同过滤(real data)),ubcf(基于用户协同过滤(real data)),SVD(基于SVD近似推荐(real data)),PCA(基于主成分分析的推荐(real data))
recommenderlab包中的predict(object, data, n, type)函数:使用推荐模型预测。object为推荐模型;data为测试数据集;n为top-N推荐名单号码。type推荐类型,默认的类型是“topnlist”创建一个推荐列表与建议。“rating”收益预测与已知的评级代表的Na。”ratingmatrix”返回一个完成评分矩阵。
recommenderlab包中的evaluationScheme(data, method, train, given, goodRating)函数:创建模型评估方案。data为ratingMatrix数据集;train划分为训练集的数据比例;given表示用来进行模型评价的items的数量;goodRating评价的阀值,goodRating=5表示大于等于5的都是好的;k运行评估的折数或倍数(split的默认值为1)
method为评估的方法,有简单划分split、k折交叉验证cross-validation、自助法bootstrap。split为是随机分配给训练集的对象的比例,并将其用于测试集,默认为1;cross-validation创建一个交叉验证方案。数据被随机分成K个和每个运行K-1部分用于训练,其余部分用于测试。在所有的运行后,每一部分都被用作测试集;bootstrap创建的训练集,通过取一个引导样本(采样与更换)的大小在数据集的数量。所有的对象不在训练集被用于测试。
recommenderlab包中的getData(x, type)函数:读取数据。x为evaluationScheme模型;type为trian、know、unknown(train表示训练集数据;know表示用户已经评分的,要用来预测的items;unknown表示用户已经评分,要被预测以便于进行模型评价的items)getData 的参数 given 便是来设置用于预测的项目数量。
recommenderlab包中的dropNA(x)函数:显示稀疏矩阵不包含NA。x为矩阵。
recommenderlab包中的normalize(x, method)函数:标准化。x为一个realRatingMatrix;method为标准化的方法,有center和Z-score两种。
recommenderlab包中的evaluate(x, method, n)函数:评估推荐模型。x为评估计划,evaluationScheme类型;type为评估“topNList”或“ratings";n为top-N的推荐数,只有在type="topNList"时;
method为字符串或列表。如果给定一个字符串,它定义了用于评价的推荐方法。如果几个推荐方法需要进行比较,方法包含一个嵌套列表。每个元素描述一个推荐方法,包括一个列表,包含两个元素:一个名为“方法”的字符串,包含该方法的方法和一个列表名“参数”,包含用于此推荐方法的参数。
recommenderlab包中的plot()函数:为评价结果创建ROC曲线图或者precision-recall曲线图。annotate为T/F(evaluate为字符串时),为N、1:N(evaluate为list时)
2、reshape包的cast(data, forumla, value)函数:铸造函数,铸造成你想要的形状。data为要改变的数据框;formula为铸造函数;value为列名。
3、arules包中的image()函数:二元关联矩阵的视觉检查。(默认在加载recommenderlab包时加载)
十五、关联规则(Aprior算法)
R中提供了两个专用于关联规则的软件包,即arules包和arulesViz包,前者用于产生关联规则的定量化结果,后者用于产生关联规则的可视化结果。
1、
> rules <-apriori(titanic.raw, control=list(verbose=F),parameter=list(minlen=2, supp=0.005, conf=0.8),appearance=list(rhs=c("Survived=No","Survived=Yes"), default="lhs"))
arules包中的apriori(data,parameter=list(support,minlen, maxlen, confidence))函数:Aprior算法挖掘频繁项集的关联规则,Apriori算法采用逐层寻找频繁项集。
data为transactions类型对象或者任何可以转化为transactions类型的数据结构;
parameter为APparameter类型的对象,参数有support项目集的最小支持度值(默认为0.1);minlen为项目集每项的最小数目2(默认为1),可以删除项集为空和1的;maxlen为项目集每项的最大数目(默认为10);confidence为可信度(默认为0.8)
data为apriori函数和eclat函数所能接受的“交易”格式数据,可以通过as()函数将常见的二元矩阵、数据框进行转换;
parameter以列表的形式存储模型所需的支持度、置信度、每个项集所含项数的最大值/最小值和输出结果类型等参数,默认情况下支持度为0.1,置信度为0.8,项集中最大项数为10,最小项数为1,输出关联规则/频繁项集类型的结果;
appearance可为先决条件X和关联结果Y指定明确的项集(一般是分析人员感兴趣的项集),默认情况下不为X和Y指定某些项集;在appearance中设置rhs=c("Survived=No","Survived=Yes")确保关联规则的右侧rhs只出现"Survived=No"和 "Survived=Yes",当设置default="lhs"时所有的项集都可以出现在作出lhs上,关联规则的左侧;both为关联规则的两侧。
control用来控制函数性能,如对项集进行升序或降序,生成算法运行的报告进程等,verbose=F可以设置压缩过程的细节信息
arules包中的quality(rules)函数:返回挖掘的结果,包括支持度、置信度和提升度。rules为Aprior模型。
arules包中的is.subset(x,y)函数:查找超集和子集,查询x中的每个元素是否为y的子集。注意,此方法非常消耗内存,因此非常慢。
arules包中的inspect(x)函数:显示关联规则或可读形式的transactions。x为关联规则、transactions、itemMatrix类型数据集。
arules包中的subset(x,subset)函数:求关联规则、transactions、itemMatrix的子集。subset为元素的逻辑表达式。
arules包中的sort(x,decreasing, by)函数:关联规则的排序方法。decreasing默认为decreasing=T降序排序,升序为decreasing=F;by为排序的属性,默认为按一个属性排序。
arules包中的eclat(data,parameter)函数:eclat算法挖掘频繁数据集项。data为transactions类型或者任何可以转化为transactions类型的数据结构。parameter为ECparameter类型对象,参数有support项目集的最小支持度值(默认为0.1),minlen为项目集每项的最小数目(默认为1),maxlen为项目集每项的最大数目(默认为10),confidence为可信度(默认为0.8)
arules包中的itemFrequency()函数:获取单项的频率或支持度。
arules包中的itemFrequencyPlot(x,support, topN)函数:创建一个item频率的条形图,针对transcation数据画频繁项的图。support为最小支持度;topN为画出最大频率的前topN项,按降序作图。
2、关联规则、频繁数据集图形可视化参数
arulesViz包中的plot(x, shading, control, method)函数:关联规则和itemsets可视化的绘图方法。x为关联规则或者频繁数据集对象;method为画图方法(有10种方法);shading为阴影选项;control为控制图像参数列表。
十六、PageRank算法
1、igraph包中的random.graph.game()函数或者erdos.renyi.game(n, p.or.m,directed)函数:根据Erdos-Renyi模型生成随机图形。n为图中的顶点数;p.or.m为以任意两点为边的概率或者图中的边数;directed图是否将被引导,默认为F。
igraph包中的page.rank(graph)函数:PageRank算法。graph对象。
2、dplyr包中的arrange(.data, …)函数:按变量排列成行,可以使用desc来降序排列变量。
十七、时间序列常用到的函数
1、stats包中的HoltWinters(x, gamma)函数:霍尔特-温特斯计算一个给定的时间序列过滤波。x为ts的对象;gamma用于季节性成分的γ参数,如果设置为假,则一个非季节性模型。
stat包中的ts(data,start, end, frequency)函数:创建时间序列的对象。data为时间序列值的向量或矩阵;start为第一次观察的时间;end为最后一次观察的时间;frequency为每单位时间的观测次数。
stats包中的plot.ts()函数:画时间对象的图形。
stats包中的ts.plot()函数:画几个时间序列的共同图,但frequency要相同;plot.ts()基于不同的时间序列基线
stats包中的lag.plot(x, lags,do.lines)函数:时间序列的延迟图。x表示时间序列;lags为所需延迟图的个数;do.lines为F表示不绘制线,为T表示绘制线。
stats包中的stl(x,s.window, robust)函数:时间序列的季节分解。x为用于分解的单一时间序列;s.window为季节性时间跨度;robust表示使用鲁棒你和的逻辑指示。
stat包中的decompose(x)函数:使用移动平均法,将时间序列分解成季节性、趋势和不规则的组件。x为一个时间序列。
stats包中的acf(x,lag.max)函数:计算自相关和自相关函数的估计。x为时间序列的对象;lag.max为acf函数计算的最大滞后数。
stats包中的pacf(x,lag.max)函数:用于偏自相关函数。x为时间序列的对象;lag.max为acf函数计算的最大滞后数。
stats包中的ts.intersect(…,dframe)函数:绑定2个或多个时间序列。…为要绑定的2个或多个时间序列;dframe为T表示返回个数据框。
stats包中的lag(x,k)函数:延迟一个时间序列。x为一个时间序列;k为滞后的时间单位数。
stats包中的arima.sim(model,n)函数:模拟ARIMA模型。model为一个组件的列表分别指定ar和ma系数,选择一个可以使用的组件顺序,一个空的列表给出了ARIMA(0,0,0)模型,即白噪声;n为序列的长度。
stats包中的arima(x,order, xreg, seasonal, method, include.mean)函数:拟合ARIMA模型的单变量时间序列。x为一个单变量时间序列(被预测的变量);order为一个规范的非季节性ARIMA模型的一部分,order包括三个整数部分,AR order、差分程度和MA order;xreg为一个向量或矩阵的外部回归,必须和x有相同的数量(预测变量);seasonal为一个规范的季节ARIMA模型的一部分,加上期间,应该是一个组件的顺序和时间,但一个规范的一个数字向量的长度为3将成为一个合适的列表与规范的顺序。method为估计方法,ML为极大似然估计,CSS为条件最小二乘估计,默认为最小二乘法;include.mean:是否包含均值项(intercept)。
stats包中的time(x)函数:创建时间序列的矢量采样。x为单变量或多变量时间序列。
stats包中的resid(object)函数:提取模型残差。object为一个模型残差提取的对象。
stats包中的spec.pgram(x,spans)函数:一个平滑周期图的时间序列的谱密度估计。x为单变量或多变量的时间序列;spans为奇整数给改良丹尼尔平滑用来平滑周期图的宽度向量
stats包中的spec.ar()函数:一个AR时间序列的谱密度估计。x为一个单变量的时间序列或AR拟合结果;
stats包中的Box.test(x,lag, type)函数:Box-Pierce和Ljung-Box测试。x为数字型向量或单变量时间序列;lag为基于滞后相关系数的统计;type测试的类型(部分匹配)。
stats包中的tsdiag(object)函数:时间序列诊断图。object为一个拟合的时间序列模型。
stats包中的filter(x, sides, init)包:时间序列的线性过滤波(将线性滤波应用于单变量时间序列,或将一系列时间序列分开)。x为一个单变量或多变量时间序列;sides为卷积滤波器,sides=1滤波系数仅为过去的值,sides=2他们是围绕滞后0;init为递归滤波器,指定时间序列的初始值在开始值之前,在相反的时间顺序,默认是一组零。
base包中的as.POSIXct(x)函数:日期时间转化函数,功能操作对象的类“POSIXlt”和“POSIXct”代表日历日期和时间。x为一个要转化的对象。
2、
forecast包中的forecast.HoltWinters(object, h)函数:用霍尔特-温特斯对象预测,对单变量时间序列模型返回Holt-Winters预测等信息。object为HoltWinters对象;h为预测周期。
forecast包中的forecast.Arima(object, h, xreg, level)函数:使用ARIMA或ARFIMA模型预测。object为ARIMA类对象;h为预测的时间周期数,如果xreg参数被使用,忽略h值,使用xreg的值;xreg为预测变量的未来值;level为预测区间的置信水平。
forecast包中的plot.forecast(x)函数:预测图。x为通过forecast生成的预测对象。
forecast包中的auto.arima(x, ic, trace)函数:拟合最佳的单变量时间序列的ARIMA模型,函数提供尽可能的模型。x为一个单变量的时间序列;ic为用于模型选择的信息准则,包aicc/aic/bic,(ic=”bic”对参数个数要求非常严格);trace为T时,ARIMA模型的列表将会显示。
3、
nlme包中的gls(model,data, correlation, method)函数:用广义最小二乘法拟合线性模型。model为模型公式对象;data为数据;correlation为相关结构类;method为ML表示对数似然最大化,为REML表示限制对数似然最大化,默认为REML。
nlme包中的corARMA(p,q)函数:ARMA(p, q)相关结构。p指定AR自动回归;q指定MA移动平均,默认都为0.
作者:军军,北京数据开发工程师。
本文由作者军军授权数据人网发表,并经数据人网审核。转载此文章需经作者同意,并请附上出处(数据人网)及本页链接:http://shujuren.org/index.php/Article/update/aid/128
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!