predict函数 R_学习|R语言做机器学习的常用函数总结
預(yù)測函數(shù):predict()?type="prob"判別該量度的昆蟲歸類為A、B和C的概率;type="response":判別該量度的昆蟲的類別;
預(yù)測分類的概率的函數(shù)predict(…, type)參數(shù)type:
R語音里面不同模型,參數(shù)type取值也不同。例如,可能取值有prob、posterior、raw(樸素貝葉斯)、probability(請參考使用包的幫助文檔確定),type="class"表示結(jié)果為分類。
mice包中的mice(data, m)函數(shù):通過鏈?zhǔn)椒匠坍a(chǎn)生多個虛值。data為數(shù)據(jù)框或包含不完整數(shù)據(jù)的矩陣,缺省值為NA;m為多重插補(bǔ)數(shù),默認(rèn)為5。(隨機(jī)森林)
stats包中的cutree(tree,k, h)函數(shù):把一棵樹變成一組數(shù)據(jù)。tree為hclust()函數(shù)產(chǎn)生的數(shù);k為分組數(shù)。
R語言plyr包合并、排序、分析數(shù)據(jù)并編制香農(nóng)-威納指數(shù)
plyr包中的colwise(fun)函數(shù):列式函數(shù),在數(shù)據(jù)框的列上操作的函數(shù)。fun為要數(shù)據(jù)框的列上操作的函數(shù)。
數(shù)據(jù)預(yù)處理包:dplyr常用包:
1、caret包中的train(formula, data, method,metirc, trControl, tuneGrid, preProcess)函數(shù)(不同調(diào)諧參數(shù)的預(yù)測模型):設(shè)置一個網(wǎng)格的調(diào)整參數(shù)的一些分類和回歸例程,適合每個模型,并計算基于重采樣的性能測量。method指定分類或回歸模型的字符串;metric指定將用于選擇的最佳模型的概要度量的字符串;trControl定義控制函數(shù)行為值的列表;tuneGrid一個數(shù)據(jù)框可能的調(diào)整值,列名與調(diào)整參數(shù)相同;preProcess為指定的預(yù)處理參數(shù)。
caret包中的trainControl(method,number, repeats, selectionFunction)函數(shù):訓(xùn)練控制參數(shù)。method為重采樣方法,有boot/boot632/cv/repeatedcv/LOOCV/LGOCV/none/oob/adaptive_cv/adaptive_boot/adaptive_LGOCV;number為重采樣的迭代次數(shù);repeats為幾重交叉驗證;selectionFunction選擇最佳調(diào)整參數(shù)的函數(shù)。
caret包中的findCorrelation(x,cutoff)函數(shù):確定高度相關(guān)變量。x為相關(guān)系數(shù)矩陣;cutoff成對相關(guān)系數(shù)絕對值的截止值。
caret包中的rfeControl(functions,method, number)函數(shù):控制特征選擇算法。functions為一個模型擬合、預(yù)測和變量重要性的函數(shù)列表;method為外部的重采樣方法(boot、cv等);number為N-fold
CV或重采樣迭代次數(shù)。
caret包中的rfe(x,y, sizes, rfeControl)函數(shù):一個簡單的逆向選擇,即遞歸特征選擇(RFE)。x為預(yù)測模型的數(shù)據(jù)庫或矩陣;y為訓(xùn)練集的輸出;sizes是應(yīng)保留特征數(shù)的整數(shù)數(shù)字向量;rfeControl為一個包含擬合和預(yù)測函數(shù)的選擇列表。
createdatapartition(y, times, p=0.5, list)函數(shù):創(chuàng)建一系列的測試/訓(xùn)練的分區(qū)。y為真實分類數(shù)據(jù),一個輸出的向量,如果是createtimeslices,這些應(yīng)該是按時間的順序;times為創(chuàng)建的分區(qū)的數(shù)目,除非重復(fù)實驗,否則需要一個就行;p訓(xùn)練集占數(shù)據(jù)集的比重;list為F是不將結(jié)果列在列表中。
createresample()函數(shù):創(chuàng)建一個或多個Bootstrap樣本;
Createfolds()函數(shù):將數(shù)據(jù)分為K組;
createtimeslices()函數(shù):創(chuàng)建交叉驗證樣本信息可用于時間序列數(shù)據(jù)。
2、R語言sqldf包的sqldf()函數(shù):對數(shù)據(jù)框做SQL操作
3、R中常用的幾個擴(kuò)展包,其中包括用ggplot2包來繪圖,用glmnet包做回歸,用tm包進(jìn)行文本挖掘,用plyr、reshape、lubridate和stringr包進(jìn)行數(shù)據(jù)預(yù)處理,stringr包處理字符串。
4、在數(shù)據(jù)分析的過程中,我們經(jīng)常需要對數(shù)據(jù)建模并做預(yù)測。在眾多的選擇中,randomForest, gbm和glmnet是三個尤其流行的R包,它們在Kaggle的各大數(shù)據(jù)挖掘競賽中的出現(xiàn)頻率獨占鰲頭,被坊間人稱為R數(shù)據(jù)挖掘包中的三駕馬車。根據(jù)我的個人經(jīng)驗,gbm包比同樣是使用樹模型的randomForest包占用的內(nèi)存更少,同時訓(xùn)練速度較快,尤其受到大家的喜愛。
irr包中的Kappa2()函數(shù):計算科恩Kappa和權(quán)重Kappa作為2者一致性的一個指標(biāo)。
(需要內(nèi)推數(shù)據(jù)工作,請加微信:luqin360)
一、線性回歸
R 中的工具:
regsubsets函數(shù)進(jìn)行feature選擇。
glmnet包用于ridge,lasso;
pls包中的pcr()函數(shù)用于PCR,plsr()函數(shù)用于PLS;
mgcv包用于GAM;
lme4包用于mixed effects model
1、通過car(DAAG)包的vif()函數(shù),返回的是方差的膨脹因子,如果膨脹因子大于10,則說明有多重共線性(用于解決多重共線性,判斷膨脹因子)。用法如下:
lm.reg<-lm(Employed~GNP+Unemployed+Armed.Forces+Population+Year,data=longley)vif(lm.reg,digits=4)
膨脹因子大多大于10,存在嚴(yán)重的相關(guān)性
一般來說kappa大于1000,或vif大于10說明存在復(fù)共線性。
(car包中的)回歸診斷實用函數(shù)?
car包中的qqPlot(x, labels, id.method, simulate)函數(shù):分位比較圖。x為lm對象;labels為文本字符串向量;id.method為點識別方法;simulate為T,計算置信區(qū)間。2、car包的scatterplotMatrix()函數(shù):返回的是N*N的散點圖矩陣。增強(qiáng)的散點圖矩陣單因素顯示沿著對角線;SPM是scatterplotmatrix(散點圖矩陣)縮寫。此功能只需設(shè)置一個與自定義面板功能對的調(diào)用(用于畫圖判斷)。例如:
"Population",?spread=T為方差函數(shù)的估計;
car包中的scatterplot()函數(shù):可以很容易、方便地繪制二元關(guān)系圖;增強(qiáng)的散點圖
car包的vif()函數(shù):用于計算膨脹因子(用于解決多重共線性)。
car包中的outlierTest(model)函數(shù):Bonferrnoi離群點檢測。model為lm或glm對象。是根據(jù)單個最大(或正或負(fù))殘差值的顯著性來判斷是否有離群點,若不顯著,則說明數(shù)據(jù)集中沒有離群點,若顯著,則必須刪除該離群點,然后再檢驗是否還有其他離群點存在。
car包中的influencePlot()函數(shù),可將離群點、杠桿點和強(qiáng)影響點的信息整合到一幅圖形中
car包中的influencePlot(mdoel,id.method)函數(shù):回歸影像圖。model為線性或廣義線性模型;id.method為“identify”為交互點識別。
3、psych包用于主成分分析
psych包中的princomp()函數(shù):可以根據(jù)原始數(shù)據(jù)或相關(guān)系數(shù)矩陣做主成分分析 。格式為:principal(x,nfactors=,rotate=,scores=)
其中:x是相關(guān)系數(shù)矩陣或原始數(shù)據(jù)矩陣;nfactors設(shè)定主成分個數(shù)(默認(rèn)為1);rotate指定旋轉(zhuǎn)的方式(“none”或“varimax”)[默認(rèn)最大方差旋轉(zhuǎn)(varimax);scores設(shè)定是否需要計算主成分得分(“T”或”F”)(默認(rèn)不需要)。
psych包中的fa.parallel()函數(shù):可以判斷主成分的個數(shù),其使用格式為: fa.parallel(x,fa = , n.iter
=)
其中,x為待研究的數(shù)據(jù)集或相關(guān)系數(shù)矩陣,fa為主成分分析(fa="pc")或者因子分析(fa = "fa"),n.iter指定隨機(jī)數(shù)據(jù)模擬的平行分析的次數(shù)。
4、利用MASS包中的函數(shù)lm.ridge()來實現(xiàn)嶺回歸
利用ridge包中的linearRidge()函數(shù)進(jìn)行自動選擇嶺回歸參數(shù)
通過effects包中的effect()函數(shù),可以用圖形展示交互項的結(jié)果
利用ridge包中的linearRidge()函數(shù)進(jìn)行自動選擇嶺回歸參數(shù)
5、lars包提供了lasso()函數(shù)(lasso:套鎖算法,用于解決多重共線性):Lasso算法則是一種能夠?qū)崿F(xiàn)指標(biāo)集合精簡的估計方法。并利用AIC準(zhǔn)則和BIC準(zhǔn)則給統(tǒng)計模型的變量做一個截斷,進(jìn)而達(dá)到降維的目的。因此,我們通過研究Lasso可以將其更好的應(yīng)用到變量選擇中去。
lars包提供的lars()函數(shù):這些是套索所有的變種,并提供系數(shù)和適合整個序列,從零開始,以最小二乘法擬合。
lars包的cv.lars()函數(shù):計算交叉驗證誤差曲線的Lars。cva lars包中的coef.lars()函數(shù)或者predict.lars()函數(shù):從擬合的lars模型預(yù)測或提取系數(shù);當(dāng)lars()生產(chǎn)解決方案的整個路徑,predict.lars允許提取沿著路徑在特定的點預(yù)測。coef
S 一個值,或一個向量值,索引路徑。它的值取決于mode= argument。默認(rèn)情況下(mode= “step”),應(yīng)該采取p和0之間的值
Mode Mode="step"是指S =參數(shù)指標(biāo)的Lars的步數(shù),系數(shù)將返回相應(yīng)的值對應(yīng)于step s。如果mode="fraction",然后應(yīng)該是0和1之間的數(shù),它指的是系數(shù)向量范數(shù)比,相對為了規(guī)范在全最小二乘解。Mode="norm"指的是指L1范數(shù)的系數(shù)向量。Mode="lambda"用套索正則化參數(shù)的;其他型號是最大相關(guān)(不讓Lars
/逐步模型)。允許縮寫。
共glmnet包實現(xiàn)lasso套鎖算法,用cv.glmnet()函數(shù)來實現(xiàn)cv(交叉驗證):做為glmnet K-fold交叉驗證,產(chǎn)生了一個圖,并返回一個值λ。
gla 折疊數(shù)-默認(rèn)為10。雖然折疊數(shù)可以當(dāng)樣本容量大(留一CV),這是不推薦用于大型數(shù)據(jù)集。最小值是允許nfolds= 3
二、主成分分析
1、psych包的實例請參照 主成分分析2:psych包
psych包中的常用函數(shù):
psych包中的fa.parallel()函數(shù):可以判斷主成分的個數(shù),其使用格式為:
fa.parallel(x, fa = , n.iter =)
其中,x為待研究的數(shù)據(jù)集或相關(guān)系數(shù)矩陣,fa為主成分分析(fa= "pc")或者因子分析(fa = "fa"),n.iter指定隨機(jī)數(shù)據(jù)模擬的平行分析的次數(shù)。
psych包中的principal( )函數(shù):可以根據(jù)原始數(shù)據(jù)或相關(guān)系數(shù)矩陣做主成分分析,其使用格式為:
principal(x, nfactors =, rotate=, scores =)
其中,x是原始數(shù)據(jù)或相關(guān)系數(shù)矩陣,nfactors指定主成分個數(shù),rotate指定旋轉(zhuǎn)的方法(“none”或“varimax”),scores為是否需要計算主成分得分(“T”或”F”)。
使用fa()函數(shù)提取相應(yīng)的因子,fa()函數(shù)的格式如下:fa(r,nfactors=,n.obs=,rotate=,scores=,fm=)
r是相關(guān)系數(shù)矩陣或者原始數(shù)據(jù)矩陣;
nfactors設(shè)定提取的因子數(shù)(默認(rèn)為1);
n.obs是觀測數(shù)(輸入相關(guān)系數(shù)矩陣時需要填寫);
rotate設(shè)定旋轉(zhuǎn)的方法(默認(rèn)互變異數(shù)最小法);
scores設(shè)定是否計算因子得分(默認(rèn)不計算);
fm設(shè)定因子化方法(默認(rèn)極小殘差法)。
與PCA不同,提取公共因子的方法很多,包括最大似然法(ml)、主軸迭代法(pa)、加權(quán)最小二乘法(wls)、廣義加權(quán)最小二乘法(gls)和最小殘差法(minres)未旋轉(zhuǎn)的主軸迭代因子法
三、貝葉斯
1、e1071包的naiveBayes函數(shù)提供了naive bayes的具體實現(xiàn),其用法如下:
0,?x:表示數(shù)字矩陣或數(shù)字變量的數(shù)據(jù)框;y:表示類向量;
laplace 默認(rèn)為0表示禁用拉普拉斯平滑,正數(shù)表示啟用拉普拉斯平滑
object:“NaiveBayes”類的對象
predict(object, newdata, type) object:naveBayes模型;newdata:測試數(shù)據(jù);type:預(yù)測類型,type如果為class代表是分類,如果是raw則代表概率的計算 ,predict函數(shù)分類需要指定type="class"
klaR包中的NaiveBayes()函數(shù):因為該函數(shù)比e1071包的naiveBayes()函數(shù)增加了兩個功能,一個是可以輸入先驗概率,另一個是在正態(tài)分布基礎(chǔ)上增加了核平滑密度函數(shù)。
predict()預(yù)測函數(shù)需要指定type="class"來分類
2、tm包通常用于文本的分析:
tm包中的函數(shù)Corpus()(或VCorpus):導(dǎo)入數(shù)據(jù)。函數(shù)的用法如下:Corpus(x,readerControl = list(reader
= x$DefaultReader, language ="en"),…)
對于這些資料來源(x),tm 包提供了一些相關(guān)的函數(shù),比如:DirSource(處理目錄)、VectorSource(由文檔構(gòu)成的向量)、
DataframeSource(數(shù)據(jù)框)等。
tm 包中的tm_map()函數(shù):可以通過maps 方式將轉(zhuǎn)化函數(shù)實施到每一個單上。m_map()的主要用法如下:tm_map(x, FUN,
…, useMeta = FALSE, lazy = FALSE)
再介紹字符串的處理,分割函數(shù):strsplit。使用格式為:
strsplit(x,split, fixed = FALSE, perl = FALSE, useBytes = FALSE)
主要參數(shù)說明:
X:字串向量,每個元素都將單獨進(jìn)行拆分。
Split:為拆分位置的字串向量,默認(rèn)為正則表達(dá)式匹配(fixed=FALSE)fixed=TRUE,表示使用普通文本匹配或正則表達(dá)式的精確匹配。
Perl:表示可以選擇是否兼容Perl的正則表達(dá)式的表述方式。
findFreqTerms(x, lowfreq, highfreq)函數(shù):在文檔術(shù)語或術(shù)語文檔矩陣中查找頻繁項。x為一個術(shù)語文檔矩陣;lowfreq為一個數(shù)字,表示較低的頻繁項;highfreq為一個數(shù)字,表示較高的頻繁項
3、caret包的函數(shù):(有K近鄰算法的函數(shù)knn3)
createdatapartition(y, times, p=0.5, list)函數(shù):創(chuàng)建一系列的測試/訓(xùn)練的分區(qū)。y為真實分類數(shù)據(jù),一個輸出的向量,如果是createtimeslices,這些應(yīng)該是按時間的順序;times為創(chuàng)建的分區(qū)的數(shù)目,除非重復(fù)實驗,否則需要一個就行;p訓(xùn)練集占數(shù)據(jù)集的比重;list為F是不將結(jié)果列在列表中。
createresample()函數(shù):創(chuàng)建一個或多個Bootstrap樣本;
Createfolds()函數(shù):將數(shù)據(jù)分為K組;
createtimeslices()
函數(shù):創(chuàng)建交叉驗證樣本信息可用于時間序列數(shù)據(jù)。
caret包中的knn3(formula,data, subset, k)函數(shù):K近鄰分類算法。formula為模型公式;data為數(shù)據(jù)集;subset為自數(shù)據(jù)集;k為選擇的近鄰個數(shù)
caret包中的predict.knn3(object,newdata, type)函數(shù)也可以寫成predict():K近鄰算法的預(yù)測函數(shù)。object為knn3類對象(K近鄰算法模型);newdata為要觀測數(shù)據(jù)的數(shù)據(jù)框;typetype如果為class代表是分類,如果是prop則代表概率的計算
4、gmodels包的CrossTable(x, y, prop.chisq, prop.t, dnn)函數(shù):獨立試驗因素的交叉制表。 x為向量或矩陣,如果y指定,必須是一個向量;y為一個矩陣或數(shù)據(jù)框的向量;prop.chisq為T時,每個單元的卡方貢獻(xiàn)將被包括;prop.t為T時,t分布的分布率將被包括;dnn在結(jié)果的尺寸中被給予的名稱。
四、K近鄰(KNN) 算法
1、class包的knn(train, test, cl, k=1)函數(shù):tarin為訓(xùn)練集數(shù)據(jù)矩陣或數(shù)據(jù)框;test為測試集數(shù)據(jù)矩陣或數(shù)據(jù)框;cl為訓(xùn)練集的真實分類數(shù)據(jù),應(yīng)是因子類型的;k為選擇的近鄰個數(shù)
class包中的knn1(train,test, cl)函數(shù):即 knn 中選擇 k = 1 的情況,因此 knn1 是 knn 的一個退化情況。
class包中的knn.cv(train, cl, k, prob):K最近鄰交叉驗證函數(shù)。train為訓(xùn)練集數(shù)據(jù);cl為訓(xùn)練集的真實分類因子;k為選擇的近鄰個數(shù);prob為T時,投票獲勝類將以概率返回。
其使用的方法是leave-one-out cross validation。即所有的樣本點都算到訓(xùn)練集中去,不設(shè)置測試集。對每個訓(xùn)練集中的樣本點,都使用剩余的樣本點中的 k 個最近鄰來進(jìn)行投票,從而決定該樣本點的分類。
2、 R語言里的kknn包也可以實現(xiàn)最鄰近算法——使用kknn函數(shù)
kknn(formula = formula(train),train, test, na.action =na.omit(), k= 7, distance = 2, kernel ="optimal", ykernel = NULL, scale=TRUE, contrasts= c('unordered' = "contr.dummy",ordered ="contr.ordinal")):為K最近鄰算法。其中,formula表示訓(xùn)練集的表達(dá)式對象;train為訓(xùn)練集的數(shù)據(jù)框或矩陣;test為測試集的數(shù)據(jù)庫或矩陣;distance為明科夫斯基距離;na.action 缺失值處理,默認(rèn)為去掉缺失值;kernel內(nèi)核使用,可能的選擇是“rectangular”(這是標(biāo)準(zhǔn)的加權(quán)KNN),"triangular","epanechnikov"(或β(2,2)),"biweight"(或β(3,3)),“triweight”(或β(4,4)),"cos","inv", "gaussian", "rank" and "optimal";k為考慮的鄰近數(shù)量
sample(x,size, replace=F, prob=NULL):采樣函數(shù)。x表示要取樣的源數(shù)據(jù)集,為一個向量;size非負(fù)整數(shù),要采樣的大小;replace表示是否為有返回采用,為F表示不返回采樣;prob用于獲取被采樣的向量的元素的概率權(quán)重向量
fitted():提取模型擬合值。
assign(x, value)賦值函數(shù)。x為變量名;value要賦值給x的值。assign("x",c(10.4, 5.6, 3.1, 6.4, 21.7)) 與x list.files(path, ignore.case):列出文件夾或目錄中的文件。path表示文件夾或路徑;ignore.case為T表示忽略大小寫。
read.fwf(file, widths):讀取固定格式寬度的文件到一個數(shù)據(jù)框中。file為要讀取的文件;widths給出寬度。
3、MASS包中的lda(x, grouping)函數(shù):線性判別分析。x為包含解釋性變量的矩陣或數(shù)據(jù)框;grouping為一個指定了觀測類因子
lad(formula, data, na.action)函數(shù):formula為分類公式;data為需要分類的數(shù)據(jù);na.action是否忽略NA值
4、caret包的函數(shù):(有K近鄰算法的函數(shù)knn3)
createdatapartition(y, times, p=0.5, list)函數(shù):創(chuàng)建一系列的測試/訓(xùn)練的分區(qū)。y為真實分類數(shù)據(jù),一個輸出的向量,如果是createtimeslices,這些應(yīng)該是按時間的順序;times為創(chuàng)建的分區(qū)的數(shù)目,除非重復(fù)實驗,否則需要一個就行;p訓(xùn)練集占數(shù)據(jù)集的比重;list為F是不將結(jié)果列在列表中。
createresample()函數(shù):創(chuàng)建一個或多個Bootstrap樣本;
Createfolds()函數(shù):將數(shù)據(jù)分為K組;
createtimeslices()函數(shù):創(chuàng)建交叉驗證樣本信息可用于時間序列數(shù)據(jù)。
caret包中的knn3(formula,data, subset, k)函數(shù):K近鄰分類算法。formula為模型公式;data為數(shù)據(jù)集;subset為子數(shù)據(jù)集;k為選擇的近鄰個數(shù)
caret包中的predict.knn3(object,newdata, type)函數(shù)也可以寫成predict():K近鄰算法的預(yù)測函數(shù)。object為knn3類對象(K近鄰算法模型);newdata為要觀測數(shù)據(jù)的數(shù)據(jù)框;typetype如果為class代表是分類,如果是prop則代表概率的計算
五、決策樹
決策樹與隨機(jī)森林包總結(jié):
party包中的ctree()函數(shù):不能很好的處理缺失值,含有缺失值的實例有時會被劃分到左子樹中,有時會被劃分到右子樹中,由替代規(guī)則決定。predict()函數(shù):測試集與訓(xùn)練集的分類變量水平不同(因子水平不同時),對測試集的預(yù)測會失敗。
rpart包中的rpart()函數(shù):構(gòu)建決策樹,允許選擇具有最小預(yù)測誤差的決策樹,然后在使用predict函數(shù)進(jìn)行預(yù)測。
randomForst包中的randomForest()函數(shù):不能處理帶有缺失值的數(shù)據(jù);分類水平劃分?jǐn)?shù)量最大為32(即因子水平為32)
party包中的cforest()函數(shù):沒有限定分類屬性的水平劃分?jǐn)?shù)(即因子水平數(shù))
1、rpart包的rpart(formula, data, method,control, parms)函數(shù):擬合rpart模型。formula為擬合公式;data為數(shù)據(jù)集;method:樹的末端數(shù)據(jù)類型選擇相應(yīng)的變量分割方法:連續(xù)性method=“anova”,離散型method=“class”,計數(shù)型method=“poisson”,生存分析型method=“exp”;parms用來設(shè)置三個參數(shù):先驗概率、損失矩陣、分類純度的度量方法(gini和information);control:為rpart算法的控制細(xì)節(jié)選項;cost我覺得是損失矩陣,在剪枝的時候,葉子節(jié)點的加權(quán)誤差與父節(jié)點的誤差進(jìn)行比較,考慮損失矩陣的時候,從將“減少-誤差”調(diào)整為“減少-損失”
rpart函數(shù)用來實現(xiàn)CART(分類回歸樹)
rpart包的rpart.control(minsplit, minbucket, maxdepth, cp,xval=10)函數(shù):對樹進(jìn)行一些設(shè)置。 minsplit是最小分支節(jié)點數(shù),這里指大于等于20,那么該節(jié)點會繼續(xù)分劃下去,否則停止;minbucket:葉子節(jié)點最小樣本數(shù);maxdepth:樹的深度;cp全稱為complexity parameter,指某個點的復(fù)雜度,對每一步拆分,模型的擬合優(yōu)度必須提高的程度,將要被修剪的rpart復(fù)雜性參數(shù);xval是10折交叉驗證。
rpart.plot包的rpart.plot(x, type,extra, branch)函數(shù):畫出rpart(決策樹)模型。x為rpart模型;extra在節(jié)點上顯示額外的信息,不同的數(shù)字代表不同的類型(請參考幫助);branch控制分支線的形狀,指定一個值在0(V形分支)和1(方形分支),默認(rèn)情況下(fallen.leaves)為1否則為2;type為畫圖的類型,分為5種:
0默認(rèn)。畫一個分裂的標(biāo)簽,在葉子的每一個分裂標(biāo)簽和一個節(jié)點標(biāo)簽。
1標(biāo)簽所有節(jié)點,不只是樹葉。
2像1,但繪制的標(biāo)簽下面的節(jié)點標(biāo)簽。
3為左、右方向畫單獨的拆分標(biāo)簽。
4像3,但標(biāo)簽的所有節(jié)點,不只是葉子節(jié)點,類似于文本。
rpart包的printcp(model)函數(shù):顯示優(yōu)化剪枝后的復(fù)雜參數(shù)表格。x表示擬合的模型對象。
rpart包的prune(model, cp)函數(shù):選擇具有最小xerror的cp(復(fù)雜性參數(shù))函數(shù)。tree為擬合的模型對象;cp全稱為complexity parameter,指某個點的復(fù)雜度,對每一步拆分,模型的擬合優(yōu)度必須提高的程度,將要被修剪的rpart復(fù)雜性參數(shù)。
2、C50包中的C5.0(x, y, trials=1, costs)函數(shù):x要預(yù)測的數(shù)據(jù)框或矩陣;y為因子類型的預(yù)測分類;trials一個整數(shù)時為指定的迭代次數(shù),一個值表示一個單一的模型;costs表示與可能出現(xiàn)的錯誤相關(guān)的成本矩陣。該矩陣應(yīng)具有碳列和行,其中,C是類級別的數(shù)
predict()預(yù)測函數(shù)需要指定type="class"來分類
3、在R中我們使用rpart包中的rpart()函數(shù)實現(xiàn)樹回歸(CART)
使用tree包中的tree()函數(shù)實現(xiàn)CART算法
4、party包中的ctree(formula, data, controls)函數(shù):決策樹。formula為模型擬合公式;data為訓(xùn)練數(shù)據(jù)集;controls為樹的控制條件,為ctree_control類。
party包中的ctree_control(minsplit,minbucket, maxsurrogate, maxdepth)函數(shù):party包中決策樹的控制條件。minsplit控制一個最小權(quán)重和的節(jié)點以便進(jìn)行分割;minbusket設(shè)置了一個最小權(quán)重和的葉子節(jié)點;maxsurrogate表示替代分裂點的數(shù)量以便用于評估;maxdepth控制決策樹的深度。其中,minsplit/minbusket可以設(shè)置為訓(xùn)練集的1/100,這些參數(shù)的值可以根據(jù)商業(yè)問題、領(lǐng)域?qū)<业慕?jīng)驗、數(shù)據(jù)、執(zhí)行算法需要的合理時間以及 決策樹的期望規(guī)模來設(shè)置。
六、隨機(jī)森林
1、R語言中有兩個軟件包可以運行隨機(jī)森林,分別是randomForest(Liaw,2012)和party
randomForest包中的randomForest(formula, data, ntree, nPerm, mtry, proximity,importace)函數(shù):隨機(jī)森林分類與回歸。ntree表示生成決策樹的數(shù)目(不應(yīng)設(shè)置太小);nPerm表示計算importance時的重復(fù)次數(shù),數(shù)量大于1給出了比較穩(wěn)定的估計,但不是很有效(目前只實現(xiàn)了回歸);mtry表示選擇的分裂屬性的個數(shù);proximity表示是否生成鄰近矩陣,為T表示生成鄰近矩陣;importance表示輸出分裂屬性的重要性。
函數(shù)randomForest()中有兩個非常重要的參數(shù),而這兩個參數(shù)又將影響模型的準(zhǔn)確性,它們分別是mtry和ntree。一般對mtry的選擇是逐一嘗試,直到找到比較理想的值,ntree的選擇可通過圖形大致判斷模型內(nèi)誤差穩(wěn)定時的值。randomForest包無法處理包含缺失值或者擁有超過32個等級水平的分類變量。
randomForest包中的rfImpute(formula, data)函數(shù):填補(bǔ)缺失值的預(yù)測數(shù)據(jù)使用接近于隨機(jī)森林。
randomForest包中的varImpPlot(x)函數(shù):變量重要性圖,變量的重要性dotchart通過隨機(jī)森林測量。x為randomForest模型對象。
importance()函數(shù)用于計算模型變量的重要性
MDSplot()函數(shù)用于實現(xiàn)隨機(jī)森林的可視化
rfImpute()函數(shù)可為存在缺失值的數(shù)據(jù)集進(jìn)行插補(bǔ)(隨機(jī)森林法),得到最優(yōu)的樣本擬合值
treesize()函數(shù)用于計算隨機(jī)森林中每棵樹的節(jié)點個數(shù)
2、party包中的cforest(formula, data,controls)函數(shù):隨機(jī)森林模型。formula為建模公式;data為訓(xùn)練數(shù)據(jù);controls為隨機(jī)森林生長的參數(shù)。
party包中的cforest_unbiased(mtry,ntree)函數(shù):隨機(jī)森林生長的控制參數(shù)。mtry為隨機(jī)森林算法隨機(jī) 采樣輸入的變量數(shù);ntry為隨機(jī)森林的樹數(shù)目。
七、支持向量機(jī)
1、e1071包中的svm()函數(shù),如下:
NULL,?主要參數(shù)說明:
Formula:分類模型形式,在第二個表達(dá)式中使用的的x,y可以理解為y~x。
Data:數(shù)據(jù)集
Subset:可以指定數(shù)據(jù)集的一部分作為訓(xùn)練集
Na.action:缺失值處理,默認(rèn)為刪除數(shù)據(jù)條目
Scale:將數(shù)據(jù)標(biāo)準(zhǔn)化,中心化,使其均值為0,方差為1.默認(rèn)自動執(zhí)行。
Type:SVM的形式,使用可參見上面的SVMformulation,type的選項有:C-classification,nu-classification,one-classification
(for noveltydetection),eps-regression,nu-regression。后面兩者為利用SVM做回歸時用到的,這里暫不介紹。默認(rèn)為C分類器,使用nu分類器會使決策邊界更光滑一些,單一分類適用于所有的訓(xùn)練數(shù)據(jù)提取自同一個類里,然后SVM建立了一個分界線以分割該類在特征空間中所占區(qū)域和其它類在特征空間中所占區(qū)域。
Kernel:指的是支持向量機(jī)的類型。在非線性可分時,我們引入核函數(shù)來做非線性可分,R提供的核介紹如下:線性核linear:使用它的話就成為線性向量機(jī),效果基本等價于Logistic回歸。但它可以處理變量極多的情況,例如文本挖掘;多項式核(polynomial):n次多項式核函數(shù),適用于圖像處理問題。選擇n的好方法是從1(一個線性模型)開始,然后遞增至估計誤差不再改進(jìn)為止。通常,相當(dāng)小的數(shù)目就足夠了;高斯核(radial):高斯核函數(shù),最流行易用的選擇。參數(shù)包括了sigma,其值若設(shè)置過小,會有過度擬合出現(xiàn);Sigmoid核(sigmoid):反曲核函數(shù),多用于神經(jīng)網(wǎng)絡(luò)的激活函數(shù),默認(rèn)為高斯核(RBF);
在kernlab包中,可以自定義核函數(shù),實踐中,核函數(shù)的選擇一般并不導(dǎo)致結(jié)果準(zhǔn)確率的很大差別(也有特例!)。
Degree:多項式核的次數(shù),默認(rèn)為3
Gamma:除去線性核外,其他的核的參數(shù),默認(rèn)為1/數(shù)據(jù)維數(shù)
Coef0,:多項式核與sigmoid核的參數(shù),默認(rèn)為0
Cost:C分類的懲罰項C的取值,是違反約束時的成本函數(shù)。
Nu:nu分類,單一分類中nu的取值
Cross:做K折交叉驗證,計算分類正確性。
class.weights用來指定各類別的權(quán)重(可用在各類數(shù)目不相同時)。
probability:是否允許概率預(yù)測。
e1071包中的tune(method,train.x, train.y, kernel, ranges)函數(shù):使用網(wǎng)格搜索的參數(shù)調(diào)整。method為需要調(diào)整的函數(shù);train.x/train.y預(yù)測的自變量和因變量(可以用formula代替);kernel為模型使用的核函數(shù);ranges為采樣空間的參數(shù)向量。
e1071包中的tune.svm(formula, data, gamma, cost)函數(shù):調(diào)整函數(shù)。
fitted(object, …)返回模型在訓(xùn)練集上的預(yù)測值。
predict (object, …)返回模型的預(yù)測結(jié)果。當(dāng)x是訓(xùn)練集時,pred predict函數(shù)分類需要指定type="class"
klaR包的svmlight()函數(shù)也可以實現(xiàn)SVM(支持向量機(jī))算法。
2、kernlab包中的ksvm(formula, data, kernal, type, kpar, C, prob.model)函數(shù):支持向量機(jī)模型。C約束違約成本(默認(rèn)值:1)這是'C'的正規(guī)化長期在拉格朗日公式;kernel用于訓(xùn)練和預(yù)測的核心功能。這個參數(shù)可以被設(shè)置為任何函數(shù),類的內(nèi)核參數(shù),它計算的內(nèi)部產(chǎn)品在特征空間中的向量參數(shù)。kernlab提供最流行的核心功能,可以通過設(shè)置內(nèi)核參數(shù)的字符串:
rbfdot徑向基核“高斯”
polydot多項式核函數(shù)
vanilladot線性核
tanhdot雙曲正切核
laplacedot拉普拉斯核
besseldot貝塞爾核
anovadot ANOVA RBF核函數(shù)
splinedot樣條核
type表示是用于分類還是回歸,還是檢測,取決于y是否是一個因子。缺省取C-svc或eps-svr??扇≈涤?/p>
C-svc C classification
nu-svc nu classification
C-bsvc bound-constraint svm classification
spoc-svc Crammer, Singer native multi-class
kbb-svc Weston, Watkins native multi-class
one-svc novelty detection
eps-svr epsilon regression
nu-svr nu regression
eps-bsvrbound-constraint svm regression
kpar超參數(shù)(核參數(shù))的列表。這是一個列表,其中包含了用于內(nèi)核函數(shù)的參數(shù)。對于現(xiàn)有內(nèi)核的有效參數(shù):
sigma inverse kernelwidth for the Radial Basis kernel function "rbfdot"
and the Laplaciankernel "laplacedot".
degree, scale,offset for the Polynomial kernel "polydot"
scale, offset forthe Hyperbolic tangent kernel function "tanhdot"
sigma, order, degreefor the Bessel kernel "besseldot".
sigma, degree forthe ANOVA kernel "anovadot".
length, lambda,normalized for the "stringdot" kernel where length
is the length ofthe strings considered, lambda the decay factor and normalized
a logicalparameter determining if the kernel evaluations should be normalize
prob.model如果設(shè)置為true,建立一個模型類的概率或在回歸計算,計算擬合殘差的拉普拉斯分布的尺度參數(shù)。對輸出數(shù)據(jù)進(jìn)行擬合,對訓(xùn)練數(shù)據(jù)進(jìn)行交叉驗證了3倍。默認(rèn)為F。
二分類問題:
八、神經(jīng)網(wǎng)絡(luò)
1、nnet包中的class.ind(cl)函數(shù):從一個因子生成類指標(biāo)矩陣。cl為類的因子或向量。返回值為:除了與類對應(yīng)的列外,該矩陣為0。生成類別的示性函數(shù)
nnet包中的nnet(x,y, size, rang, decay, maxit, skip, Hess, trace)函數(shù):單層的前向神經(jīng)網(wǎng)絡(luò)模型。size神經(jīng)網(wǎng)絡(luò)隱藏層的神經(jīng)元個數(shù);rang初始隨機(jī)權(quán)值[-rang,rang];decay經(jīng)元輸入權(quán)重的一個修改偏正參數(shù),表明權(quán)值是遞減的(可以防止過擬合);maxit最大反饋迭代次數(shù);skip是否允許跳過隱藏層;Hess是否輸出Hessian值;trace指出是否要最優(yōu)化。
適用于神經(jīng)網(wǎng)絡(luò)的方法有predict,print和summary等,nnetHess函數(shù)用來計算在考慮了權(quán)重參數(shù)下的Hessian矩陣,并且檢驗是否是局部最小。
2、AMORE包中的newff(n.neurons, learning.rate.global, momentum.global, error.criterium, Stao, hidden.layer, output.layer, method)函數(shù):創(chuàng)建多層前饋神經(jīng)網(wǎng)絡(luò)。n.neurons是個數(shù)值向量,包含在每個層的神經(jīng)元的數(shù)目,第一個數(shù)是輸入神經(jīng)元的數(shù)量,最后是輸出神經(jīng)元的數(shù)量,其余的都是隱藏層神經(jīng)元的數(shù)量;learning.rate.global全局的學(xué)習(xí)率;momentum.global全局的動量值(有的學(xué)習(xí)算法需要設(shè)置這個值貌似是步長);error.criterium誤差衡量算法,我用誤差平方和,所以選“LMS”,“LMLS”為對數(shù)平方差,“TAO”為TAO
Error;hidden.layer隱藏層激活函數(shù);output.layer輸出層激活函數(shù);method學(xué)習(xí)方法,翻譯過來都是梯度下降,不是BP最速下降;Stao
為Taobao錯誤判斷標(biāo)準(zhǔn)。
AMORE包中的train(net,P, T, error.criterium, report, show.step, n.shows)函數(shù):神經(jīng)網(wǎng)絡(luò)訓(xùn)練函數(shù)。對于一個給定的數(shù)據(jù)集(訓(xùn)練集),此功能修改的神經(jīng)網(wǎng)絡(luò)的權(quán)重和偏差的近似的訓(xùn)練集中存在的變量之間的關(guān)系。這些可以滿足一些需要,即擬合非線性函數(shù)。
其中,net為神經(jīng)網(wǎng)絡(luò)訓(xùn)練;P為輸入的訓(xùn)練集;T為輸出的訓(xùn)練集;error.criterium為衡量擬合優(yōu)度的標(biāo)準(zhǔn)(LMS、LMLS、TAO);report表示訓(xùn)練函數(shù)是否保持安靜(或應(yīng)在訓(xùn)練過程中提供圖形/文字信息);show.step直到訓(xùn)練函數(shù)給出結(jié)果的最大值;n.shows報告訓(xùn)練的次數(shù)。
AMORE包的sim(net,P)函數(shù):計算給定數(shù)據(jù)集神經(jīng)網(wǎng)絡(luò)的輸出值。net模擬神經(jīng)網(wǎng)絡(luò);P輸入數(shù)據(jù)集。
3、neuralnet包中的neuralnet(formula, data,hidden)函數(shù):神經(jīng)網(wǎng)絡(luò)訓(xùn)練函數(shù)。hidden一個向量的整數(shù),指定在每一層中的隱層神經(jīng)元(頂點)的數(shù)目。hidden=c(3)表示第一個隱藏層的3個隱藏單元;hidden=c(3,
2)分別表示第一、第二隱藏層的3個和2個隱藏單元。
neuralnet包中的compute(x, covariate):神經(jīng)網(wǎng)絡(luò)計算一個給定的變量向量。x為NN的模型;covariate用來訓(xùn)練神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)框或矩陣。相當(dāng)于predict函數(shù)(neuralnet中無predict函數(shù))
九、聚類:層次聚類、動態(tài)聚類Kmeans
距離和相似系數(shù)
stats包中的dist(x, method = "euclidean",diag= FALSE, upper = FALSE,p = 2) :來計算距離。
其中,x是樣本矩陣或者數(shù)據(jù)框。
method表示計算哪種距離,method的取值有:“euclidean” 歐幾里德距離,就是平方再開方;“maximum ”切比雪夫距離
;“manhattan”絕對值距離;“canberra” Lance 距離 ;“minkowski”明科夫斯基距離,使用時要指定p值;“binary
”定性變量距離.定性變量距離: 記m個項目里面的 0:0配對數(shù)為m0 ,1:1配對數(shù)為m1,不能配對數(shù)為m2,距離=m1/(m1+m2);
diag 為TRUE的時候給出對角線上的距離。
upper為TURE的時候給出上三角矩陣上的值。
stats包中的as.dist(m,diag=F, upper=F)函數(shù):m為距離信息的對象將被轉(zhuǎn)換為一個“dist”對象。默認(rèn)的方法,“dist”對象,或一個矩陣(距離)或一個對象可以強(qiáng)制轉(zhuǎn)換為一個矩陣。(僅使用矩陣的下三角,其余的則被忽略)。diag是否顯示距離矩陣的對角線。upper是否顯示矩陣的上三角。
stats包中的scale(x, center = TRUE, scale = TRUE) :對數(shù)據(jù)矩陣做中心化和標(biāo)準(zhǔn)化變換。如只中心化 scale(x,scale=F)
eigen():返回矩陣的特征值和特征向量
stats包中的sweep(x, MARGIN, STATS, FUN="-",…) :對矩陣進(jìn)行運算。MARGIN為1,表示行的方向上進(jìn)行運算,為2表示列的方向上運算。STATS是運算的參數(shù)。FUN為運算函數(shù),默認(rèn)是減法。
fpc包中的plotcluster(x,clvecd)函數(shù):判別投影圖。x為矩陣或者可以轉(zhuǎn)化為矩陣的數(shù)字對象;clvecd為可以轉(zhuǎn)化為整數(shù)的類向量。
1、層次聚類
stats包中的hclust(d,method = "complete", members=NULL) 函數(shù):進(jìn)行層次聚類。d為距離矩陣;method表示類的合并方法,single最短距離法,complete最長距離法,median中間距離法,mcquitty 相似法,average 類平均法,centroid重心法,ward離差平方和法;members為NULL或d長度的矢量。
stats包中的cutree(tree,k, h)函數(shù):把一棵樹變成一組數(shù)據(jù)。tree為hclust()函數(shù)產(chǎn)生的數(shù);k為分組數(shù)。
stats包中的rect.hclust(tree, k =NULL, which = NULL, x = NULL, h = NULL,border
= 2, cluster = NULL)函數(shù):繪制矩形周圍的層次聚類,來確定類的個數(shù)。tree就是求出來的對象。k為分類的個數(shù),h為類間距離的閾值。border是畫出來的顏色,用來分類的。
2、動態(tài)聚類:Kmeans
stats包中的kmeans(x,centers, iter.max = 10, nstart = 1,algorithm =c("Hartigan-Wong","Lloyd","Forgy",
"MacQueen")):來進(jìn)行聚類。x為數(shù)字矩陣。centers是初始類的個數(shù)或者初始類的中心。iter.max是最大迭代次數(shù)。nstart是當(dāng)centers是數(shù)字的時候,隨機(jī)集合的個數(shù)。algorithm是算法,默認(rèn)是第一個。
3、DBSCAN聚類
fpc包中的dbscan(data,eps, MinPts, scale, method, seeds, showplot, countmode)函數(shù):產(chǎn)生基于密度的任意形狀的聚類。data為數(shù)據(jù)框或矩陣;eps是距離的半徑,eps參數(shù)設(shè)為0.6,即兩個點之間距離小于0.6則歸為一個簇;minpts是最少多少個點;
scale是否標(biāo)準(zhǔn)化(我猜);method 有三個值raw,dist,hybird,分別表示,數(shù)據(jù)是原始數(shù)據(jù)避免計算距離矩陣,數(shù)據(jù)就是距離矩陣,數(shù)據(jù)是原始數(shù)據(jù)但計算部分距離矩陣;showplot畫不畫圖,0不畫,1和2都畫;countmode,可以填個向量,用來顯示計算進(jìn)度。
如果eps設(shè)置過大,則所有的點都會歸為一個簇,如果設(shè)置過小,那么簇的數(shù)目會過多。如果MinPts設(shè)置過大的話,很多點將被視為噪聲點。
fpc包中的plotcluster(x,clvecd)函數(shù):判別投影圖。x為矩陣;clvecd為用整數(shù)表示類的向量。
十、EM算法:最大期望算法(Expectation-maximizationalgorithm,又譯期望最大化算法)
1、mclust包中的Mclust(data, G)函數(shù):基于模型的聚類,BICEM采用分層高斯混合模型聚類初始化參數(shù)優(yōu)化模型。G為BIC要計算的混合分量的整數(shù)向量;
mclust包中的mclustBIC()函數(shù):BIC基于模型的聚類。predict函數(shù)分類需要指定type="class"
十一、Bootstrap(自助法)算法
boot包中在boot(data, statistic, R, formula)函數(shù):自助算法。data:數(shù)據(jù),可以是向量,矩陣,數(shù)據(jù)框;statistic:統(tǒng)計量,如均值,中位數(shù),回歸參數(shù),回歸里的R^2等;R:調(diào)用統(tǒng)計量函數(shù)次數(shù)
boot包中的boot.ci(boot.out,type)函數(shù):實現(xiàn)Bootstrap置信區(qū)間的計算。boot.out為boot()的輸出結(jié)果;type返回置信區(qū)間的類型,R中提供的有"norm","basic",
"stud","perc", "bca",all可以指定包含所有。
十二、bagging(裝袋)算法
1、ipred包中的bagging(formula, data)函數(shù):裝袋分類,回歸和存活樹。
2、adabag包中的bagging(formula, data)函數(shù):裝袋分類,回歸和存活樹。
十三、Boosting、adaboost、xgboost
1、boosting回歸,使用到的函數(shù)包為mboost,使用函數(shù)為mboost.用法如下:
mboost(formula, data= list(),baselearner = c("bbs", "bols",
"btree","bss", "bns"), …)
其中formular需要使用到函數(shù)btree():
btree(…,tree_controls = ctree_control(stump = TRUE, mincriterion = 0,
savesplitstats =FALSE))
2、adabag包中的boosting(formula, data)函數(shù):用Adaboost.M1算法創(chuàng)建模型。
adabag包中的errorevol(object,newdata)函數(shù):計算誤差演變的步驟。object為boosting()函數(shù)或bagging()函數(shù)的輸出;newdata為新數(shù)據(jù)。
predict函數(shù)分類需要指定type="class"
3、xgboost包中的xgb.DMatrix(data, missing)函數(shù):構(gòu)建xgb.dmatrix對象從稠密矩陣,稀疏矩陣或本地文件。data為數(shù)據(jù)對象;missing表示為稠密矩陣時,選擇充當(dāng)缺失值的數(shù)。
xgboost包中的xgboost(data,label, max.depth, eta, nround, objective)函數(shù):創(chuàng)建xgboost模型的一個接口,可以使用更先進(jìn)的xgb.train()函數(shù)接口。data為dgCMatrix、本地文件或者xgb.DMatrix;label為響應(yīng)變量,如果為本地文件或xgb.DMatrix時不必設(shè)置此文件;eta為每提高一步的時間步長;max.depth為樹的最大深度;nround為最大迭代次數(shù);objective函數(shù),reg:linear表示線性回歸,binary:logistic表示分類的邏輯線性回歸。
xgboost包中的xgb.cv(data,label, max.depth, eta, nround, objective, nfold)函數(shù):創(chuàng)建xgboost模型的Cross
Valudation功能。data為dgCMatrix、本地文件或者xgb.DMatrix;label為響應(yīng)變量,如果為本地文件或xgb.DMatrix時不必設(shè)置此文件;eta為每提高一步的時間步長;max.depth為樹的最大深度;nround為最大迭代次數(shù);objective函數(shù),reg:linear表示線性回歸,binary:logistic表示分類的邏輯線性回歸;nfold為原始數(shù)據(jù)集隨機(jī)劃分成大小相等的子樣本nfold。
xgboost包中的xgb.train(param=list(),data, nrounds)函數(shù):極限階梯訓(xùn)練模型。param為參數(shù)列表;data作為一個xgb.dmatrix作為輸入;nrounds表示迭代的最大次數(shù)。
十四、協(xié)同過濾:
1、recommenderlab包中的rowCounts(x)函數(shù):每行的評分。x為ratingMatrix對象。
recommenderlab包中的colCounts(x)函數(shù):每列的評分。x為ratingMatrix對象。
recommenderlab包中的rowMeans(x)函數(shù):行式的評級法。x為ratingMatrix對象。
recommenderlab包中的Recommender(data, k, method, Normalize, normalize_sim_matrix,na_as_zero,
minRating)函數(shù):創(chuàng)建推薦模型。data為訓(xùn)練數(shù)據(jù);K取多少個最相似的item,默認(rèn)為30;method相似度算法,默認(rèn)為采用余弦相似算法cosine;Normalize采用何種歸一化算法,默認(rèn)均值歸一化x-mean;normalize_sim_matrix是否對相似矩陣歸一化,默認(rèn)為否;na_as_zero是否將NA作為0,默認(rèn)為否;minRating:最小評分,默認(rèn)不設(shè)置;
recommenderlab提供了6中不同的推薦方法method:random(隨機(jī)推薦(real ratings)),popular(基于流行度推薦(real
data)),ibcf(基于項目協(xié)同過濾(real data)),ubcf(基于用戶協(xié)同過濾(real data)),SVD(基于SVD近似推薦(real
data)),PCA(基于主成分分析的推薦(real data))
recommenderlab包中的predict(object, data, n, type)函數(shù):使用推薦模型預(yù)測。object為推薦模型;data為測試數(shù)據(jù)集;n為top-N推薦名單號碼。type推薦類型,默認(rèn)的類型是“topnlist”創(chuàng)建一個推薦列表與建議?!皉ating”收益預(yù)測與已知的評級代表的Na?!眗atingmatrix”返回一個完成評分矩陣。
recommenderlab包中的evaluationScheme(data, method, train, given, goodRating)函數(shù):創(chuàng)建模型評估方案。data為ratingMatrix數(shù)據(jù)集;train劃分為訓(xùn)練集的數(shù)據(jù)比例;given表示用來進(jìn)行模型評價的items的數(shù)量;goodRating評價的閥值,goodRating=5表示大于等于5的都是好的;k運行評估的折數(shù)或倍數(shù)(split的默認(rèn)值為1)
method為評估的方法,有簡單劃分split、k折交叉驗證cross-validation、自助法bootstrap。split為是隨機(jī)分配給訓(xùn)練集的對象的比例,并將其用于測試集,默認(rèn)為1;cross-validation創(chuàng)建一個交叉驗證方案。數(shù)據(jù)被隨機(jī)分成K個和每個運行K-1部分用于訓(xùn)練,其余部分用于測試。在所有的運行后,每一部分都被用作測試集;bootstrap創(chuàng)建的訓(xùn)練集,通過取一個引導(dǎo)樣本(采樣與更換)的大小在數(shù)據(jù)集的數(shù)量。所有的對象不在訓(xùn)練集被用于測試。
recommenderlab包中的getData(x, type)函數(shù):讀取數(shù)據(jù)。x為evaluationScheme模型;type為trian、know、unknown(train表示訓(xùn)練集數(shù)據(jù);know表示用戶已經(jīng)評分的,要用來預(yù)測的items;unknown表示用戶已經(jīng)評分,要被預(yù)測以便于進(jìn)行模型評價的items)getData 的參數(shù) given 便是來設(shè)置用于預(yù)測的項目數(shù)量。
recommenderlab包中的dropNA(x)函數(shù):顯示稀疏矩陣不包含NA。x為矩陣。
recommenderlab包中的normalize(x, method)函數(shù):標(biāo)準(zhǔn)化。x為一個realRatingMatrix;method為標(biāo)準(zhǔn)化的方法,有center和Z-score兩種。
recommenderlab包中的evaluate(x, method, n)函數(shù):評估推薦模型。x為評估計劃,evaluationScheme類型;type為評估“topNList”或“ratings";n為top-N的推薦數(shù),只有在type="topNList"時;
method為字符串或列表。如果給定一個字符串,它定義了用于評價的推薦方法。如果幾個推薦方法需要進(jìn)行比較,方法包含一個嵌套列表。每個元素描述一個推薦方法,包括一個列表,包含兩個元素:一個名為“方法”的字符串,包含該方法的方法和一個列表名“參數(shù)”,包含用于此推薦方法的參數(shù)。
recommenderlab包中的plot()函數(shù):為評價結(jié)果創(chuàng)建ROC曲線圖或者precision-recall曲線圖。annotate為T/F(evaluate為字符串時),為N、1:N(evaluate為list時)
2、reshape包的cast(data, forumla, value)函數(shù):鑄造函數(shù),鑄造成你想要的形狀。data為要改變的數(shù)據(jù)框;formula為鑄造函數(shù);value為列名。
3、arules包中的image()函數(shù):二元關(guān)聯(lián)矩陣的視覺檢查。(默認(rèn)在加載recommenderlab包時加載)
十五、關(guān)聯(lián)規(guī)則(Aprior算法)
R中提供了兩個專用于關(guān)聯(lián)規(guī)則的軟件包,即arules包和arulesViz包,前者用于產(chǎn)生關(guān)聯(lián)規(guī)則的定量化結(jié)果,后者用于產(chǎn)生關(guān)聯(lián)規(guī)則的可視化結(jié)果。
list(minlen=arules包中的apriori(data,parameter=list(support,minlen, maxlen, confidence))函數(shù):Aprior算法挖掘頻繁項集的關(guān)聯(lián)規(guī)則,Apriori算法采用逐層尋找頻繁項集。
data為transactions類型對象或者任何可以轉(zhuǎn)化為transactions類型的數(shù)據(jù)結(jié)構(gòu);
parameter為APparameter類型的對象,參數(shù)有support項目集的最小支持度值(默認(rèn)為0.1);minlen為項目集每項的最小數(shù)目2(默認(rèn)為1),可以刪除項集為空和1的;maxlen為項目集每項的最大數(shù)目(默認(rèn)為10);confidence為可信度(默認(rèn)為0.8)
data為apriori函數(shù)和eclat函數(shù)所能接受的“交易”格式數(shù)據(jù),可以通過as()函數(shù)將常見的二元矩陣、數(shù)據(jù)框進(jìn)行轉(zhuǎn)換;
parameter以列表的形式存儲模型所需的支持度、置信度、每個項集所含項數(shù)的最大值/最小值和輸出結(jié)果類型等參數(shù),默認(rèn)情況下支持度為0.1,置信度為0.8,項集中最大項數(shù)為10,最小項數(shù)為1,輸出關(guān)聯(lián)規(guī)則/頻繁項集類型的結(jié)果;
appearance可為先決條件X和關(guān)聯(lián)結(jié)果Y指定明確的項集(一般是分析人員感興趣的項集),默認(rèn)情況下不為X和Y指定某些項集;在appearance中設(shè)置rhs=c("Survived=No","Survived=Yes")確保關(guān)聯(lián)規(guī)則的右側(cè)rhs只出現(xiàn)"Survived=No"和
"Survived=Yes",當(dāng)設(shè)置default="lhs"時所有的項集都可以出現(xiàn)在作出lhs上,關(guān)聯(lián)規(guī)則的左側(cè);both為關(guān)聯(lián)規(guī)則的兩側(cè)。
control用來控制函數(shù)性能,如對項集進(jìn)行升序或降序,生成算法運行的報告進(jìn)程等,verbose=F可以設(shè)置壓縮過程的細(xì)節(jié)信息
arules包中的quality(rules)函數(shù):返回挖掘的結(jié)果,包括支持度、置信度和提升度。rules為Aprior模型。
arules包中的is.subset(x,y)函數(shù):查找超集和子集,查詢x中的每個元素是否為y的子集。注意,此方法非常消耗內(nèi)存,因此非常慢。
arules包中的inspect(x)函數(shù):顯示關(guān)聯(lián)規(guī)則或可讀形式的transactions。x為關(guān)聯(lián)規(guī)則、transactions、itemMatrix類型數(shù)據(jù)集。
arules包中的subset(x,subset)函數(shù):求關(guān)聯(lián)規(guī)則、transactions、itemMatrix的子集。subset為元素的邏輯表達(dá)式。
arules包中的sort(x,decreasing, by)函數(shù):關(guān)聯(lián)規(guī)則的排序方法。decreasing默認(rèn)為decreasing=T降序排序,升序為decreasing=F;by為排序的屬性,默認(rèn)為按一個屬性排序。
arules包中的eclat(data,parameter)函數(shù):eclat算法挖掘頻繁數(shù)據(jù)集項。data為transactions類型或者任何可以轉(zhuǎn)化為transactions類型的數(shù)據(jù)結(jié)構(gòu)。parameter為ECparameter類型對象,參數(shù)有support項目集的最小支持度值(默認(rèn)為0.1),minlen為項目集每項的最小數(shù)目(默認(rèn)為1),maxlen為項目集每項的最大數(shù)目(默認(rèn)為10),confidence為可信度(默認(rèn)為0.8)
arules包中的itemFrequency()函數(shù):獲取單項的頻率或支持度。
arules包中的itemFrequencyPlot(x,support, topN)函數(shù):創(chuàng)建一個item頻率的條形圖,針對transcation數(shù)據(jù)畫頻繁項的圖。support為最小支持度;topN為畫出最大頻率的前topN項,按降序作圖。
2、關(guān)聯(lián)規(guī)則、頻繁數(shù)據(jù)集圖形可視化參數(shù)
arulesViz包中的plot(x, shading, control, method)函數(shù):關(guān)聯(lián)規(guī)則和itemsets可視化的繪圖方法。x為關(guān)聯(lián)規(guī)則或者頻繁數(shù)據(jù)集對象;method為畫圖方法(有10種方法);shading為陰影選項;control為控制圖像參數(shù)列表。
十六、PageRank算法
1、igraph包中的random.graph.game()函數(shù)或者erdos.renyi.game(n, p.or.m,directed)函數(shù):根據(jù)Erdos-Renyi模型生成隨機(jī)圖形。n為圖中的頂點數(shù);p.or.m為以任意兩點為邊的概率或者圖中的邊數(shù);directed圖是否將被引導(dǎo),默認(rèn)為F。
igraph包中的page.rank(graph)函數(shù):PageRank算法。graph對象。
2、dplyr包中的arrange(.data, …)函數(shù):按變量排列成行,可以使用desc來降序排列變量。
十七、時間序列常用到的函數(shù)
1、stats包中的HoltWinters(x, gamma)函數(shù):霍爾特-溫特斯計算一個給定的時間序列過濾波。x為ts的對象;gamma用于季節(jié)性成分的γ參數(shù),如果設(shè)置為假,則一個非季節(jié)性模型。
stat包中的ts(data,start, end, frequency)函數(shù):創(chuàng)建時間序列的對象。data為時間序列值的向量或矩陣;start為第一次觀察的時間;end為最后一次觀察的時間;frequency為每單位時間的觀測次數(shù)。
stats包中的plot.ts()函數(shù):畫時間對象的圖形。
stats包中的ts.plot()函數(shù):畫幾個時間序列的共同圖,但frequency要相同;plot.ts()基于不同的時間序列基線
stats包中的lag.plot(x, lags,do.lines)函數(shù):時間序列的延遲圖。x表示時間序列;lags為所需延遲圖的個數(shù);do.lines為F表示不繪制線,為T表示繪制線。
stats包中的stl(x,s.window, robust)函數(shù):時間序列的季節(jié)分解。x為用于分解的單一時間序列;s.window為季節(jié)性時間跨度;robust表示使用魯棒你和的邏輯指示。
stat包中的decompose(x)函數(shù):使用移動平均法,將時間序列分解成季節(jié)性、趨勢和不規(guī)則的組件。
x為一個時間序列。
stats包中的acf(x,lag.max)函數(shù):計算自相關(guān)和自相關(guān)函數(shù)的估計。x為時間序列的對象;lag.max為acf函數(shù)計算的最大滯后數(shù)。
stats包中的pacf(x,lag.max)函數(shù):用于偏自相關(guān)函數(shù)。x為時間序列的對象;lag.max為acf函數(shù)計算的最大滯后數(shù)。
stats包中的ts.intersect(…,dframe)函數(shù):綁定2個或多個時間序列?!瓰橐壎ǖ?個或多個時間序列;dframe為T表示返回個數(shù)據(jù)框。
stats包中的lag(x,k)函數(shù):延遲一個時間序列。x為一個時間序列;k為滯后的時間單位數(shù)。
stats包中的arima.sim(model,n)函數(shù):模擬ARIMA模型。model為一個組件的列表分別指定ar和ma系數(shù),選擇一個可以使用的組件順序,一個空的列表給出了ARIMA(0,0,0)模型,即白噪聲;n為序列的長度。
stats包中的arima(x,order, xreg, seasonal, method, include.mean)函數(shù):擬合ARIMA模型的單變量時間序列。x為一個單變量時間序列(被預(yù)測的變量);order為一個規(guī)范的非季節(jié)性ARIMA模型的一部分,order包括三個整數(shù)部分,AR
order、差分程度和MA order;xreg為一個向量或矩陣的外部回歸,必須和x有相同的數(shù)量(預(yù)測變量);seasonal為一個規(guī)范的季節(jié)ARIMA模型的一部分,加上期間,應(yīng)該是一個組件的順序和時間,但一個規(guī)范的一個數(shù)字向量的長度為3將成為一個合適的列表與規(guī)范的順序。method為估計方法,ML為極大似然估計,CSS為條件最小二乘估計,默認(rèn)為最小二乘法;include.mean:是否包含均值項(intercept)。
stats包中的time(x)函數(shù):創(chuàng)建時間序列的矢量采樣。x為單變量或多變量時間序列。
stats包中的resid(object)函數(shù):提取模型殘差。object為一個模型殘差提取的對象。
stats包中的spec.pgram(x,spans)函數(shù):一個平滑周期圖的時間序列的譜密度估計。x為單變量或多變量的時間序列;spans為奇整數(shù)給改良丹尼爾平滑用來平滑周期圖的寬度向量
stats包中的spec.ar()函數(shù):一個AR時間序列的譜密度估計。x為一個單變量的時間序列或AR擬合結(jié)果;
stats包中的Box.test(x,lag, type)函數(shù):Box-Pierce和Ljung-Box測試。x為數(shù)字型向量或單變量時間序列;lag為基于滯后相關(guān)系數(shù)的統(tǒng)計;type測試的類型(部分匹配)。
stats包中的tsdiag(object)函數(shù):時間序列診斷圖。object為一個擬合的時間序列模型。
stats包中的filter(x, sides, init)包:時間序列的線性過濾波(將線性濾波應(yīng)用于單變量時間序列,或?qū)⒁幌盗袝r間序列分開)。x為一個單變量或多變量時間序列;sides為卷積濾波器,sides=1濾波系數(shù)僅為過去的值,sides=2他們是圍繞滯后0;init為遞歸濾波器,指定時間序列的初始值在開始值之前,在相反的時間順序,默認(rèn)是一組零。
base包中的as.POSIXct(x)函數(shù):日期時間轉(zhuǎn)化函數(shù),功能操作對象的類“POSIXlt”和“POSIXct”代表日歷日期和時間。x為一個要轉(zhuǎn)化的對象。
2、forecast包中的forecast.HoltWinters(object, h)函數(shù):用霍爾特-溫特斯對象預(yù)測,對單變量時間序列模型返回Holt-Winters預(yù)測等信息。object為HoltWinters對象;h為預(yù)測周期。
forecast包中的forecast.Arima(object, h, xreg, level)函數(shù):使用ARIMA或ARFIMA模型預(yù)測。object為ARIMA類對象;h為預(yù)測的時間周期數(shù),如果xreg參數(shù)被使用,忽略h值,使用xreg的值;xreg為預(yù)測變量的未來值;level為預(yù)測區(qū)間的置信水平。
forecast包中的plot.forecast(x)函數(shù):預(yù)測圖。x為通過forecast生成的預(yù)測對象。
forecast包中的auto.arima(x, ic, trace)函數(shù):擬合最佳的單變量時間序列的ARIMA模型,函數(shù)提供盡可能的模型。x為一個單變量的時間序列;ic為用于模型選擇的信息準(zhǔn)則,包aicc/aic/bic,(ic=”bic”對參數(shù)個數(shù)要求非常嚴(yán)格);trace為T時,ARIMA模型的列表將會顯示。
3、nlme包中的gls(model,data, correlation, method)函數(shù):用廣義最小二乘法擬合線性模型。model為模型公式對象;data為數(shù)據(jù);correlation為相關(guān)結(jié)構(gòu)類;method為ML表示對數(shù)似然最大化,為REML表示限制對數(shù)似然最大化,默認(rèn)為REML。
nlme包中的corARMA(p,q)函數(shù):ARMA(p, q)相關(guān)結(jié)構(gòu)。p指定AR自動回歸;q指定MA移動平均,默認(rèn)都為0.
數(shù)據(jù)人才(ID:datarencai)
(一個幫助數(shù)據(jù)人才找工作的公眾號,
也分享數(shù)據(jù)人才學(xué)習(xí)和生活的有趣事情。)
歡迎關(guān)注和隨喜分享。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的predict函数 R_学习|R语言做机器学习的常用函数总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nf白金徽章镶嵌栏怎么得的?
- 下一篇: 钉钉投屏码如何获得