rpart.plot(fit,branch=1,branch.type=2,type=1,extra=102,shadow.col=”gray”,box.col=”green”,
split.cex=1.2,main=”Kyphosis决策树”) #提供了复杂度损失修剪的修剪方法
printcp(fit):告诉分裂到哪一层,CP,nsplit,rel,error,交叉验证的估计误差(xerror),标准误差(xstd)
prune(fit,cp=fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"]):剪枝函数
【备注】:1)CRAN的 MachineLearning任务列表有对树方法的细节描述。
2)分类树也常常是重要的多元方法,rpart包正是这样的包,
3)rpart.permutation包还可以做rpart()模型的置换(permutation)检验。
4)TWIX包的树可以外部剪枝。
5)hier.part包分割多元数据集的方差。
6)mvpart包可做多元回归树,
7)party包实现了递归分割(recursive partitioning),
8)rrp包实现了随机递归分割。
9)caret包可做分类和回归训练,进而caretLSF包实现了并行处理。
10)kknn包的k-近 邻法可用于回归,也可用于分类。
4、支持向量机:
【包】:e1071,kernlab
【函数】:svm(x_train,y_train,type="C-classification",cost=10,kernel="radial",probability=TRUE,scale=FALSE)
svp=ksvm(x,y,type="C-svc",kernel="rbf",kpar=list(sigma=1),C=1)
5、无监督分类~聚类分析:
【包】:stats
【函数】:系统聚类:hclust(d,method=”complete”,members=NULL)
快速聚类:kmeans(x,centers,iter.max=10,nstart=1,algorithm=“Hartigan-Wong”)
距离函数:dist(x,method=”euclidean”,diag=FALSE,upper=FALSE,p=2)
【备注】:1)CRAN的Cluster任务列表全面的综述了R实现的聚类方法。
2)stats里提供等级聚类hclust()和k-均值聚类kmeans()。
3)cluster包里有大量的聚类和可视化技 术,
4)clv包里则有一些聚类确认程序,
5)e1071包的classAgreement()可计算Rand index比较两种分类结果。
6)Trimmed k-means聚类分析可由trimcluster包实现,
7)聚类融合方法(Cluster Ensembles)由clue包实现,
8)clusterSim包能帮助选择最佳的聚类,
9)hybridHclust包提供一些混合聚类方法。
10)energy包里有基于E统计量的距离测度函数edist()和等级聚类方法hclust.energy()。
11)LLAhclust包提供基于似然(likelihood linkage)方法的聚类,也有评定聚类结果的指标。
12)fpc包里有基于Mahalanobis距离的聚类。
13)clustvarsel包有多种基于模型的聚类。
14)模糊聚类(fuzzy clustering)可在cluster包和hopach包里实现。
15)Kohonen包提供用于高维谱(spectra)或模式(pattern)的有监督和无监督的SOM算法。
16)clusterGeneration包帮助模拟聚类。
17)CRAN的Environmetrics任务列表里也有相关的聚类算法的综述。
18)mclust包实现了基于模型的聚类,
19)MFDA包实现了功能数据的基于模型的聚类。
6、关联分析:
【包】:arules,Matrix,lattice,arulesViz
【函数】:apriori(Groceries,parameter=list(support=0.01,confidence=0.2))
eclat(Groceries, parameter = list(support = 0.05),control = list(verbose=FALSE))
7、主成分分析:
【包】:stats
【函数】:princomp(data,cor=False,scores=TRUE,covmat=NULL,subset=rep(TRUE,nrow(as.matrix(x))) ,…)
prcomp(data,cor=False,scores=TRUE,covmat=NULL,subset=rep(TRUE,nrow(as.matrix(x))) ,…)
prcomp:采用观测值的奇异值分解方法;princomp:采用相关系数阵的特征值分解方法
【备注】:1)stats 包的prcomp()(基于svd())和princomp()(基于eigen())能计算主成分。
2)sca包做单分量分析。
3)nFactors可评价碎石 图(Scree plot),
4)paran包可评估主成分分析得到的主成分和因子分析得到的因子。
5)pcurve包做主曲线(Principal Curve)分析和可视化。
6)gmodels包提供适合大矩阵的fast.prcomp()和fast.svd()。
7)kernlab包里的kpca()用核 方法做非线性的主成分分析。
8)pcaPP包用投影寻踪(projection pursuit)法计算稳健/鲁棒(robust)主成分。
9)amap包的acpgen()和acprob()函数分别针对广义(generalized) 和稳健(robust)主成分分析。
8、对应分析:
【包】:ca,MASS,vegan,FactoMineR
【函数】:简单对应分析:ca(data,...)
多重对应分析:mjca(data,...)
plot3d.ca(ca(data,nd=3))
plot(mjca(data,lambda="Burt"))
【备注】:1)MASS包的corresp()和mca()可以做简单和多重对应分析;
2)ca包提供单一、多重和联合对应分析;
3)FactoMineR包的CA()和MCA()函数也能做类似的简单和多重对应分析,还有画图函数,
homals可执行同质分析。
9、因子分析:
【包】:psycho,stats
【函数】:Bartlett球形检验:cortest.bartlett(cor(data),n=length(data))
factanal(~X1 + X2 + X3 + X4,data=freeny,factors=1)
10、神经网络
【包】:nnet
【备注】:nnet包执行单隐层前馈神经网络,nnet是VR包的一部分。
11、随机森林:(回归和分类)
【包】:randomForest,ipred,varSelRF
【备注】:1)ipred包用bagging的思想做回归,分类和生存分析,组合多个模型;
2)party包也提供了基于条件推断树的随机森林法;
3)varSelRF包用随机森林法做变量选择。
12、递归拆分:(回归,分类,生存分析)
【包】:rpart,tree
【备注】:1)递归拆分利用树形结构模型,来做回归、分类和生存分析,主要在rpart包和tree里执行,尤其推荐rpart包。
2)Weka里也有这样的递归拆分法,如:J4.8, C4.5, M5,包Rweka提供了R与Weka的函数的接口
13、Boosting:(提高给定任意学习算法精确度的方法)
【包】:gbm,boost
【备注】:1)gbm包做基于树的梯度下降boosting;
2)boost包包括LogitBoost和L2Boost;
3)GAMMoost包提供基于boosting 的广义相加模型(generalized additive models)的程序;
4)mboost包做基于模型的boosting。
14、模型确认和选择:
【包】:e1071,ipred,svmpath,ROCR,caret,caretLSF
【函数】:tune,errorest,cost,
【备注】:1)e1071 包的tune()函数在指定的范围内选取合适的参数;
2)svmpath包里的函数可用来选取支持向 量机的cost参数C;
3)ROCR包提供了可视化分类器执行效果的函数,如画ROC曲线;
4)caret包供了各种建立预测模型的函数,包括参数选择和重要性量度;