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包供了各種建立預測模型的函數,包括參數選擇和重要性量度;