【視頻】機(jī)器學(xué)習(xí)交叉驗(yàn)證CV原理及R語言主成分PCA回歸分析犯罪率|數(shù)據(jù)共享
全文鏈接:http://tecdat.cn/?p=24671
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
交叉驗(yàn)證是避免過度擬合和很好地理解預(yù)測(cè)模型性能的最有效技術(shù)之一。
相關(guān)視頻:機(jī)器學(xué)習(xí)交叉驗(yàn)證CV原理及R語言主成分PCA回歸分析犯罪率
機(jī)器學(xué)習(xí)的交叉驗(yàn)證Cross Validation原理及R語言主成分PCA回歸分析城市犯罪率
,時(shí)長(zhǎng)05:23
訓(xùn)練集用于訓(xùn)練模型,測(cè)試集用于評(píng)估其性能。但是這種方法通常應(yīng)該避免,并且不應(yīng)用于現(xiàn)實(shí)世界的場(chǎng)景。
這是因?yàn)槿绻覀冮L(zhǎng)時(shí)間訓(xùn)練我們的模型直到找到正確的配置,我們可能會(huì)在測(cè)試集中引起過度擬合。這個(gè)概念被稱為_數(shù)據(jù)泄漏_,是該領(lǐng)域最常見和最有影響力的問題之一。事實(shí)上,如果我們訓(xùn)練我們的模型在測(cè)試集上表現(xiàn)良好,那么_它只_對(duì)那個(gè)測(cè)試集有效。
我所說的配置_是什么意思?每個(gè)模型都以一系列超參數(shù)為特征。這是一個(gè)定義
模型超參數(shù)是一種外部配置,其值無法從數(shù)據(jù)中估計(jì)。更改超參數(shù)會(huì)相應(yīng)地更改模型對(duì)我們數(shù)據(jù)的行為,并且可以改善或惡化我們的性能。
例如,Sklearn 的_DecisionTreeClassifier_樹,將max_depth作為管理樹深度的超參數(shù)。更改此超參數(shù)會(huì)改變模型的性能,無論好壞。我們無法事先知道 max\_depth 的理想值,除非通過實(shí)驗(yàn)。除了 max\_depth,決策樹還有很多其他的超參數(shù)。
當(dāng)我們選擇要在數(shù)據(jù)集上使用的模型時(shí),我們需要了解哪些是最佳的超參數(shù)配置。此活動(dòng)稱為_超參數(shù)調(diào)整_。
一旦我們找到最佳配置,您就可以將具有最佳配置的最佳模型帶到“真實(shí)”世界——即由模型從未見過的數(shù)據(jù)組成的測(cè)試集。
為了在不直接測(cè)試測(cè)試集的情況下測(cè)試配置,我們引入了第三組數(shù)據(jù),稱為驗(yàn)證集。
一般流程是這樣的:
我們?cè)谟?xùn)練集上訓(xùn)練模型
我們?cè)隍?yàn)證集上測(cè)試當(dāng)前配置的性能
當(dāng)且僅當(dāng)我們對(duì)驗(yàn)證集的性能感到滿意時(shí),我們才會(huì)在測(cè)試集上進(jìn)行測(cè)試。
但是,為什么要通過添加額外的一組來評(píng)估性能來復(fù)雜化呢?為什么不使用經(jīng)典的訓(xùn)練-測(cè)試集拆分?
原因很簡(jiǎn)單,但非常重要。
機(jī)器學(xué)習(xí)是一個(gè)迭代過程。
通過迭代,我的意思是一個(gè)模型可以而且必須用不同的配置多次評(píng)估,以便我們了解哪個(gè)是性能最好的條件。驗(yàn)證集允許我們測(cè)試不同的配置并為我們的場(chǎng)景選擇最好的配置,而沒有過度擬合的風(fēng)險(xiǎn)。
但是有一個(gè)問題。通過將我們的數(shù)據(jù)集分為三個(gè)部分,我們還減少了訓(xùn)練模型可用的示例數(shù)量。此外,由于通常的拆分為 50–30–20,因此模型結(jié)果可能隨機(jī)取決于數(shù)據(jù)在各個(gè)集合中的分布方式。
交叉驗(yàn)證通過從方程中刪除驗(yàn)證集并保留模型可用于學(xué)習(xí)的示例數(shù)量來解決此問題。
什么是交叉驗(yàn)證?
交叉驗(yàn)證是機(jī)器學(xué)習(xí)中最重要的概念之一。這是因?yàn)樗试S我們創(chuàng)建能夠_泛化的模型——_也就是說,即使在不屬于訓(xùn)練集的數(shù)據(jù)上也能夠創(chuàng)建一致的預(yù)測(cè)。
一個(gè)可以泛化的模型是一個(gè)有用的、強(qiáng)大的模型。
交叉驗(yàn)證意味著將我們的訓(xùn)練數(shù)據(jù)分成不同的部分,并在這些部分的子集上測(cè)試我們的模型。測(cè)試集繼續(xù)用于最終評(píng)估,而模型性能則在交叉驗(yàn)證生成的部分上進(jìn)行評(píng)估。這種方法稱為K-Fold 交叉驗(yàn)證,稍后我們將更詳細(xì)地了解它。
下圖總結(jié)了目前為止的這句話。
K 折交叉驗(yàn)證
交叉驗(yàn)證可以通過不同的方式完成,每種方法都適用于不同的場(chǎng)景。在本文中,我們將介紹_K-Fold 交叉驗(yàn)證_,這是迄今為止最流行的交叉驗(yàn)證技術(shù)。其他流行的變體是_分層_交叉驗(yàn)證和基于組的交叉驗(yàn)證。
訓(xùn)練集被分成 K-folds,模型在k-1個(gè)部分上進(jìn)行訓(xùn)練。剩余部分用于評(píng)估模型。
這一切都發(fā)生在所謂的_交叉驗(yàn)證循環(huán)中。
在通過每個(gè)分段進(jìn)行交互之后,我們將獲得最終結(jié)果的平均表現(xiàn)。這提高了性能的有效性,因?yàn)樵谟?xùn)練數(shù)據(jù)集的每個(gè)部分上都訓(xùn)練了一個(gè)“新”模型。然后,我們將得到一個(gè)最終分?jǐn)?shù),該分?jǐn)?shù)總結(jié)了模型在許多驗(yàn)證步驟中的性能——與查看單個(gè)迭代的性能相比,這是一種非??煽康姆椒?!
讓我們分解這個(gè)過程:
隨機(jī)化數(shù)據(jù)集的每一行
將數(shù)據(jù)集劃分為 k 個(gè)部分
對(duì)于每個(gè)組
1. 創(chuàng)建一個(gè)測(cè)試部分 ? 2. 將剩余部分分配給訓(xùn)練 ? 3. 訓(xùn)練模型并在提到的集合上對(duì)其進(jìn)行評(píng)估 ? 4. 保存性能通過在流程結(jié)束時(shí)取平均分來評(píng)估整體績(jī)效
k 的值通常為 5 或 10,但Sturges規(guī)則可用于建立更精確的分割數(shù)
number of splits = 1 + log2(N)
其中 N 是樣本總數(shù)。
R語言回歸和主成分PCA?回歸交叉驗(yàn)證分析預(yù)測(cè)城市犯罪率
在本文中,我解釋了基本回歸,并介紹了主成分分析 (PCA) 使用回歸來預(yù)測(cè)城市中觀察到的犯罪率。我還應(yīng)用 PCA 創(chuàng)建了一個(gè)回歸模型,用于使用前幾個(gè)主成分對(duì)相同的犯罪數(shù)據(jù)進(jìn)行建模。最后,我對(duì)兩種模型的結(jié)果進(jìn)行了比較,看看哪個(gè)表現(xiàn)更好。
相關(guān)視頻
拓端
回歸有助于顯示因素和因變量之間的關(guān)系,它基本上回答了兩種類型的問題;1. 吸煙對(duì)癌癥的影響 2. 未來會(huì)發(fā)生什么?(例如)三年后的油價(jià)。
數(shù)據(jù)
犯罪學(xué)家對(duì)懲罰制度對(duì)犯罪率(查看文末了解數(shù)據(jù)免費(fèi)獲取方式)的影響感興趣。已使用匯總數(shù)據(jù)對(duì)此進(jìn)行了研究。數(shù)據(jù)集包含以下列:
變量描述
M:? 14-24歲的男性在總?cè)丝谥械陌俜直?br>So:? 南方的指標(biāo)變量
Ed:? 25歲或以上人口的平均受教育年限
Po1:年警察保護(hù)的人均支出
Po2:去年警察保護(hù)的人均支出
LF:14-24歲年齡組的城市男性平民的勞動(dòng)力參與率
M.F:每100名女性的男性人數(shù)
Pop:國家人口,以十萬計(jì)
NW:非白人在人口中的百分比
U1:14-24歲城市男性的失業(yè)率
U2:城市男性35-39歲的失業(yè)率
財(cái)富財(cái)富:可轉(zhuǎn)讓資產(chǎn)或家庭收入的中值
收入不平等:收入低于中位數(shù)一半的家庭的百分比
入獄概率:入獄人數(shù)與犯罪人數(shù)的比率
時(shí)間:罪犯在首次獲釋前在國家監(jiān)獄中服刑的平均時(shí)間(月)。
犯罪:每10萬人口中的犯罪數(shù)量
導(dǎo)入R環(huán)境
read("crim.txt")
檢查變量是否正確
head(crim)?#所有的變量都是預(yù)測(cè)因素,只有犯罪是因變量。
創(chuàng)建簡(jiǎn)單的回歸模型
summary(model)
使用數(shù)據(jù)框架來手動(dòng)創(chuàng)建我們的數(shù)據(jù)點(diǎn)測(cè)試,然后在測(cè)試數(shù)據(jù)上運(yùn)行一些預(yù)測(cè)。
primodl?<-?predict(mdl,?test)
輸出值不到下一個(gè)最低城市的犯罪率的一半,所以我將創(chuàng)建第二個(gè)模型,觀察它的輸出并畫出比較。
創(chuàng)建第二個(gè)模型
sumry(son_mel)
我們現(xiàn)在可以對(duì)第二個(gè)模型進(jìn)行預(yù)測(cè)了
pic\_secn\_mel<-?prict(sed_odel,?tst) pic\_secn\_mel
與第一個(gè)模型相比,其結(jié)果明顯更高。所以,它更合理。
交叉驗(yàn)證
我們可以做一個(gè)5折的交叉驗(yàn)證。
cv(se,m=5)
我們可以得到數(shù)據(jù)和其平均值之間的平方差的總和
?sum((Cm-?mean(ui))^2)
我們可以得到模型1、模型2和交叉驗(yàn)證的平方殘差之和
SSrl?<-?sum(res^2)
SSre?<-?sum(resi^2)
res?<-?"ms")*nrow
我們也可以計(jì)算出3個(gè)模型的R平方值
?1?-res/tot
1-res/SS
?1-res/SS
獲得的R平方值表明我們的擬合質(zhì)量很好。對(duì)于懲罰性回歸,有必要對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,以確保所有的特征都受到同等的懲罰。但在線性回歸的情況下,這其實(shí)并不重要。它將只是轉(zhuǎn)移截距和系數(shù),但相關(guān)關(guān)系保持不變。
PCA
PCA是一種用于描述變化的方法,顯示數(shù)據(jù)集中的強(qiáng)相關(guān)性,從而使其易于探索和可視化數(shù)據(jù)。PCA通過以下方式對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換:(1)去除數(shù)據(jù)中的相關(guān)關(guān)系(2)按重要性對(duì)坐標(biāo)進(jìn)行排序。
我們可以檢查crime數(shù)據(jù)的預(yù)測(cè)變量之間的相關(guān)性。
pairs(srm,c("o",Ed"o"))
對(duì)數(shù)據(jù)集中的所有預(yù)測(cè)變量應(yīng)用PCA。請(qǐng)注意,為了獲得更準(zhǔn)確的PCA結(jié)果,需要對(duì)這些變量進(jìn)行標(biāo)準(zhǔn)化。
sumr(pca) rotan?#PCA旋轉(zhuǎn)是特征向量的矩陣 pca
然后,我們可以通過繪制每個(gè)主成分的方差來決定在 "前幾個(gè) "主成分中使用多少個(gè)主成分。
plotpcaye?="ie")
要確定使用多少PC?我們可以嘗試使用5個(gè)主成分作為開始。
pcax\[,1:5\]
使用前五個(gè)PC,我們可以繼續(xù)建立一個(gè)線性回歸模型。
?summary(mdPCA)
為了根據(jù)原始變量重建模型,首先我們從PCA線性回歸模型中獲得系數(shù),之后通過使用主成分的特征向量將PCA成分系數(shù)轉(zhuǎn)化為原始變量的系數(shù)。
PCA線性回歸的系數(shù)
coefficients\[1\] coefficients\[2:6\] ?beta0?#截距
轉(zhuǎn)換
rot?%*%?beta ?t(alpha)?#?標(biāo)準(zhǔn)化的數(shù)據(jù)系數(shù)
獲得未標(biāo)準(zhǔn)化數(shù)據(jù)的系數(shù)。
?ahusl?<-?ahs?/?sppy(u\[,1:15\],sd) ?ba0cl?<-?ea0?-?sum/sapply(sd))
未標(biāo)準(zhǔn)化數(shù)據(jù)的系數(shù)
?t(alas_sled) ?be0uced
#我們可以得到我們的未標(biāo)準(zhǔn)化數(shù)據(jù)的估計(jì)值 as.marx?%*%?unscle?+?beta0aled
最后,為了比較使用PCA的模型和使用回歸的模型的質(zhì)量,我們必須計(jì)算R-squared和調(diào)整后的R-squared,并將這些數(shù)值與前一個(gè)模型的數(shù)值進(jìn)行比較。調(diào)整后的R平方考慮了模型中預(yù)測(cè)因子的數(shù)量。
?Rsquared?<-?1?-?SSE/SST?#?R-squared
使用所有變量的無PCA的先前線性回歸模型
?summary(dlLR)
R-squared 和調(diào)整后的 R-squared 值都較高,這表明至少對(duì)于使用前五個(gè)主成分的模型,具有 PCA 的線性回歸模型優(yōu)于沒有 PCA 的線性回歸模型。為了檢查使用不同數(shù)量的前 n 個(gè)主成分的線性回歸模型是否產(chǎn)生了更好的擬合模型,我們可以使用循環(huán)并進(jìn)一步進(jìn)行交叉驗(yàn)證。
數(shù)據(jù)獲取
在公眾號(hào)后臺(tái)回復(fù)“犯罪率數(shù)據(jù)”,可免費(fèi)獲取完整數(shù)據(jù)。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
R語言k-means聚類、層次聚類、主成分(PCA)降維及可視化分析鳶尾花iris數(shù)據(jù)集
R語言有限混合模型(FMM,finite mixture model)EM算法聚類分析間歇泉噴發(fā)時(shí)間
R語言用溫度對(duì)城市層次聚類、kmean聚類、主成分分析和Voronoi圖可視化
R語言k-Shape時(shí)間序列聚類方法對(duì)股票價(jià)格時(shí)間序列聚類
R語言中的SOM(自組織映射神經(jīng)網(wǎng)絡(luò))對(duì)NBA球員聚類分析
Python、R對(duì)小說進(jìn)行文本挖掘和層次聚類可視化分析案例
R語言復(fù)雜網(wǎng)絡(luò)分析:聚類(社區(qū)檢測(cè))和可視化
R語言中的劃分聚類模型
基于模型的聚類和R語言中的高斯混合模型
r語言聚類分析:k-means和層次聚類
SAS用K-Means 聚類最優(yōu)k值的選取和分析
R語言k-Shape時(shí)間序列聚類方法對(duì)股票價(jià)格時(shí)間序列聚類
基于LDA主題模型聚類的商品評(píng)論文本挖掘
R語言中實(shí)現(xiàn)層次聚類模型
用R語言進(jìn)行網(wǎng)站評(píng)論文本挖掘聚類
R語言鳶尾花iris數(shù)據(jù)集的層次聚類分析
R語言對(duì)用電負(fù)荷時(shí)間序列數(shù)據(jù)進(jìn)行K-medoids聚類建模和GAM回歸
R語言聚類算法的應(yīng)用實(shí)例
基于模型的聚類和R語言中的高斯混合模型