中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

經(jīng)驗(yàn)&教訓(xùn)分享:我的第一個(gè)機(jī)器學(xué)習(xí)項(xiàng)目

2020-04-20    來源:raincent

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

本文簡要介紹了作者在初次進(jìn)行機(jī)器學(xué)習(xí)的操作時(shí)所遇到到情況與得到的教訓(xùn)。

機(jī)器學(xué)習(xí)之旅的開端

在這片博客中,我將介紹隊(duì)友(Aron,Ashish,Gabriel)和我如何完成我們的第一個(gè)機(jī)器學(xué)習(xí)項(xiàng)目。寫這篇博客的目的是為了記錄——記錄下我作為一名有抱負(fù)的數(shù)據(jù)科學(xué)家的旅程。同時(shí),這篇博客也是為了寫下逐步完善預(yù)測模型背后的思維和推理過程。由于我的目的是建立一個(gè)可以快速使用的通用工作流程,所以我將盡可能的簡化推理過程。我的最終目標(biāo)是當(dāng)某一天再次回顧這個(gè)數(shù)據(jù)集時(shí),可以應(yīng)用更好的預(yù)測模型,看到自己原本可以做出哪些改進(jìn),并且能看到自己作為一個(gè)數(shù)據(jù)科學(xué)家的成長。

數(shù)據(jù)集

該數(shù)據(jù)集取自kaggle.com。它包含了79個(gè)描述房屋特征的維度,而且描述了愛荷華州埃姆斯幾乎所有的房屋。該數(shù)據(jù)集旨在為有志向的機(jī)器學(xué)習(xí)從業(yè)者提供一個(gè)玩具示例。在處理這個(gè)數(shù)據(jù)集時(shí)我們得到的主要教訓(xùn)是:簡單的線性模型也可以十分強(qiáng)大,并且在適當(dāng)?shù)膱鼍爸,它們的表現(xiàn)可以輕松地勝過高度復(fù)雜的模型。在接下來的文章中,我將描述我們處理這個(gè)數(shù)據(jù)集所遵循的工作流程,并證實(shí)線性模型應(yīng)該始終在你的工具箱中占有一席之地。

數(shù)據(jù)預(yù)處理的工作流程

數(shù)據(jù)預(yù)處理和轉(zhuǎn)換

我們遵循了得到的第一個(gè)建議:將目標(biāo)變量(售價(jià))轉(zhuǎn)化為一個(gè)服從正態(tài)分布并去除了異常值的變量。前者很重要,因?yàn)樗_保目標(biāo)變量的殘差將服從正態(tài)分布(線性推理模型的基本假設(shè)),而后者可以確保我們的模型結(jié)果不會(huì)因?yàn)楫惓5挠^測值,特別是那些有很大影響和杠桿效應(yīng)的值,而產(chǎn)生偏斜(或成為錯(cuò)誤的偏差)。下面將舉例說明對數(shù)轉(zhuǎn)換(log transformation,我們的手動(dòng)box-cox轉(zhuǎn)換):

 

 

 

 

在上方的圖片中,顯示了高度傾斜且未經(jīng)處理的數(shù)據(jù)。在下方的圖片中,我們展示了經(jīng)過對數(shù)轉(zhuǎn)換后的數(shù)據(jù)。將兩者進(jìn)行比較,我們可以看到數(shù)據(jù)在分布上的巨大改進(jìn)。

在這里我們沒有對各個(gè)特征進(jìn)行轉(zhuǎn)換,來使其變成正態(tài)分布。雖然,機(jī)器學(xué)習(xí)模型可能會(huì)因使用了正態(tài)分布的特征而受益,但這將損害結(jié)果模型的可解釋性。出于這個(gè)原因,我們選擇不去應(yīng)用它,而是繼續(xù)使用去除異常值的方法。下面,我們展示了刪除某個(gè)變量的異常值后的效果:

 

 

左邊是未處理的數(shù)據(jù),右邊是處理過的數(shù)據(jù)。去除異常值的效果是明顯的,因?yàn)槲覀兛梢钥吹綌M合線發(fā)生了明顯的偏移。

缺失值與插補(bǔ)

在第二步中,我們花了大量的時(shí)間去查找缺失值。而插補(bǔ)卻是十分棘手的,因?yàn)樗枰覀儗γ恳粋(gè)特征都有深刻的理解。不論是使用均值、中位數(shù)、眾數(shù)、零、空,還是簡單地刪除觀測值或特征本身,都取決于我們認(rèn)為可以接受的某種預(yù)定準(zhǔn)則。這種預(yù)定準(zhǔn)則很多時(shí)候靠直覺。下面,我們對缺失值進(jìn)行定性總結(jié)。

 

 

頂部顯示的是每個(gè)特征的缺失值的數(shù)量,底部顯示的是缺失之間的相關(guān)性。

這里我沒有深入的探討處理每個(gè)變量缺失值的具體過程(讀者可以參考我們在Github上發(fā)布的代碼來獲得具體的解決辦法),而是簡單地回顧了一下總體思路。首先,在原則上,任何缺失值超過95%以上的變量都可以被安全地丟棄,但在做之前還是要謹(jǐn)慎一些,因?yàn)檫@些缺失不一定是真實(shí)的缺失。從變量缺失值的相關(guān)性中提取信息,我們也許可以推斷出這些缺失值的含義。例如,與車庫緊密相關(guān)的缺失值表明了一個(gè)房屋沒有車庫的可能性。另一個(gè)基本完全缺失的變量是泳池面積。因此,我們認(rèn)為缺少泳池面積信息的房屋數(shù)據(jù)意味著這些房子沒有泳池。

在這里,我們給出如何在嚴(yán)重缺失的情況下處理變量(一般來說,我們選擇保守的方式,即盡可能保留我們可以保留的任何信息)。對于缺失率相對較低的變量(比如缺失值少于5%的觀測數(shù)據(jù)),如果變量是連續(xù)的(或有序的),我們選擇使用均值進(jìn)行插補(bǔ);如果變量是類別型的,我們則會(huì)使用眾數(shù)。平均估算法背后的原理是,插補(bǔ)的數(shù)據(jù)不會(huì)改變擬合的斜率,因此不會(huì)對模型結(jié)果產(chǎn)生偏差。至于眾數(shù)和中位數(shù)(分別在類別變量或數(shù)值變量中使用),除了認(rèn)為這些觀測值歸屬為最具代表性的組之外,沒有更好的解釋。雖然這種方式可能會(huì)有缺陷,但有時(shí)便捷性會(huì)比精確性更為重要,特別是當(dāng)缺失值數(shù)量很少的時(shí)候(這些特征的缺失值數(shù)量在數(shù)十個(gè)的時(shí)候)。為了使缺失值插補(bǔ)的過程更加精確,我會(huì)選擇基于k近鄰或者其他機(jī)器學(xué)習(xí)模型進(jìn)行插補(bǔ)。另一種被廣泛接受的插補(bǔ)方法是用一個(gè)非常邊緣的數(shù),例如-999(如果所有的觀測值都是正實(shí)數(shù))。然而,這種插補(bǔ)方法不適用于擬合解析方程的推理模型。因此本例中沒有使用-999。

第一輪特征選擇

我們經(jīng)常會(huì)聽到維度詛咒。高維度可能意味著會(huì)產(chǎn)生共線變量,而它則會(huì)導(dǎo)致擬合系數(shù)不準(zhǔn)確以及高方差。高維度可能意味著稀疏的數(shù)據(jù),也可能意味著特征數(shù)量過多從而導(dǎo)致過擬合。這兩種情況都不好,因?yàn)樗鼈儠?huì)產(chǎn)生性能較差的模型。

相關(guān)性研究:消除多重共線性

特征選擇的第一次嘗試是為了減少系統(tǒng)內(nèi)部的多重共線性。方法是執(zhí)行相關(guān)性研究,同時(shí)對特征進(jìn)行合并或刪除。下面是多重共線性處理前后的相關(guān)圖:

 

 

左側(cè)是原始數(shù)據(jù)的相關(guān)圖。右側(cè)是處理后數(shù)據(jù)的相關(guān)圖,其中的特征要么被刪除,要么被合并。

通過對比可以看到,這種相關(guān)性(用深藍(lán)色表示)大大降低了。這是通過去除或組合特征實(shí)現(xiàn)的。幫助我們做出正確決定的指標(biāo)是基于對特征的R平方持續(xù)評估:

 

 

在左邊的圖中,與居住面積相關(guān)的變量(最后五分之一到最后三分之一)的R平方都大于0.8(大致等于VIF的5)。在右邊的圖中,適當(dāng)組合特征后,與居住面積相關(guān)的R平方值降低了。

聚類子類別

類別型變量的子類別可以聚類在一起。下面我們來看一個(gè)例子:

 

 

在這個(gè)圖中,我們可以看到,所有的不規(guī)則子類別(IR1到IR3)的均值都非常接近,但離規(guī)則的(Reg)很遠(yuǎn)。這是一個(gè)提示,在簡化降低維度后,我們應(yīng)該把所有的IR聚在一起。

在這個(gè)特殊的例子中,我們可以看到,如果我們將所有的不規(guī)則類別(IR1到IR3)分組到一個(gè)大的子類別中則可能對我們的模型產(chǎn)生有益的影響。之所以說是有益的,是因?yàn)樵趯ψ兞窟M(jìn)行啞變量處理之后,與未聚類子類別時(shí)相比,特征空間會(huì)相對較小。聚類的過程不是人工完成的,而是使用K-means聚類完成的(盡管它是一種非監(jiān)督的方法),根據(jù)與目標(biāo)變量相關(guān)的變量對子類別進(jìn)行聚類(在這個(gè)數(shù)據(jù)集中,我們使用變量Gr living area)。

特征工程注意事項(xiàng):應(yīng)當(dāng)使用哪種算術(shù)運(yùn)算?

特征工程可以通過交互來完成,而這種交互可以反映為任意兩個(gè)或多個(gè)特征的某種算術(shù)運(yùn)算。例如,乘法和加法可能在最終的模型結(jié)果中產(chǎn)生巨大的差異。我們總結(jié)出了一個(gè)很好的結(jié)論:每一個(gè)值必須始終服從變量的自然物理單位。例如,如果要合并車庫數(shù)量和車庫面積,應(yīng)該通過乘法而不是加法來合并。在這種情況下,加法是沒有物理意義的。事實(shí)上,對這兩種操作的測試結(jié)果表明:對兩個(gè)變量的乘法會(huì)導(dǎo)致VIF的顯著下降,而加法則不會(huì)。

另一個(gè)值得描述的變量是每個(gè)社區(qū)的表現(xiàn)。

 

 

不同的社區(qū)擁有不同的銷售價(jià)格。每一個(gè)都值得擁有屬于它自己的模型。

通過觀察社區(qū)圖,我們可以看到每個(gè)社區(qū)的表現(xiàn)都是有區(qū)別的,并且每一個(gè)都遵循一個(gè)明確定義的行為。這些社區(qū)都有自己的模式。為了實(shí)現(xiàn)這一目標(biāo),我們創(chuàng)建了一個(gè)類似開關(guān)的交互參數(shù),方法是將啞變量處理過的社區(qū)類別乘以Gr living area。這樣,每個(gè)社區(qū)都可以有自己的一組系數(shù)——自己的方程,而不是簡單的截距偏移 (類別型變量對廣義線性模型的作用)。使用這個(gè)特征處理使我們的Kaggle排名下降了。

數(shù)據(jù)流水線

我們的流水線總結(jié)如下:

 

 

數(shù)據(jù)集被分割成一個(gè)訓(xùn)練集和一個(gè)測試集,之后訓(xùn)練集被發(fā)送到五個(gè)模型中:三個(gè)線性模型(Lasso, 嶺回歸 彈性網(wǎng)絡(luò))和兩個(gè)非線性模型(隨機(jī)森林,梯度提升)。并對每個(gè)模型進(jìn)行了廣泛的網(wǎng)格搜索從而選出最佳超參數(shù)。在超參數(shù)最優(yōu)的情況下,利用模型對測試集進(jìn)行預(yù)測,并對測試結(jié)果進(jìn)行比較。下面是初始特征工程的總結(jié):

 

 

除了上面所顯示的特征工程,我們還嘗試了許多類型的特征工程和篩選(從數(shù)據(jù)集A開始直到數(shù)據(jù)集C,這些特征工程被依次實(shí)現(xiàn))。雖然我們自己得到的MSE測試分?jǐn)?shù)并不總是與Kaggle排名一致,但所有這些都產(chǎn)生了一個(gè)更糟糕的Kaggle排名。下面我們展示了使用數(shù)據(jù)集A到D的結(jié)果:

 

 

在圖中我們可以看到,彈性網(wǎng)絡(luò)模型相比于其他的模型有微小的優(yōu)勢。所有的線性模型都優(yōu)于非線性的樹模型。這很好的驗(yàn)證了我們一開始提到的內(nèi)容:線性模型總有它的一席之地。在這個(gè)特定的數(shù)據(jù)集中,目標(biāo)變量與其他特征主要體現(xiàn)了線性關(guān)系,這使得我們有充分的理由使用線性模型而不是非線性模型。綜上所述,即使我們使用線性模型(較為簡單的模型),我們的Kaggle和MSE分?jǐn)?shù)肯定還將得到提高。我們之所以這么說的原因來自下面的圖:

 

 

左邊是測試和訓(xùn)練數(shù)據(jù)集MSE,右邊是隨機(jī)森林的數(shù)據(jù)集MSE。兩者都顯示出過擬合的跡象。

上圖顯示,測試和訓(xùn)練數(shù)據(jù)集MSE分?jǐn)?shù)之間存在巨大的差異。對于樹模型來說,這可能是有意義的,因?yàn)闃淠P屯鶗?huì)過擬合(當(dāng)然,使用隨機(jī)森林的目的正是為了避免這個(gè)問題);然而,懲罰線性模型 應(yīng)該可以緩解這個(gè)問題……但事實(shí)并非如此。這意味著我們的確可以改進(jìn)我們的特征篩選與處理。然而,我們嘗試了大量的特征篩選操作,同時(shí)也考慮了如下圖所示的基于特征重要性的排名,但是它們都給了我們負(fù)面的反饋。

 

 

這個(gè)圖是Lasso(左)和隨機(jī)森林(右)的特征重要性。要注意的是,這兩個(gè)模型的特征重要性是不同的。隨機(jī)森林模型比Lasso模型更強(qiáng)調(diào)連續(xù)變量的重要性,因?yàn)楦呋鶖?shù)會(huì)導(dǎo)致更大的誤差或熵降。我們通過測試,比較了標(biāo)簽編碼和one-hot編碼,發(fā)現(xiàn)他們產(chǎn)生類似的結(jié)果(標(biāo)簽編碼有輕微的優(yōu)勢),這就是標(biāo)簽編碼比one-hot編碼重要的原因。

鑒于特征特征的無用性,我們選擇通過遞歸去除特征來蠻力改進(jìn)我們的模型。這個(gè)想法如下圖所示:

 

 

左邊的示意圖顯示了我們遞歸地刪除特征的過程。右側(cè)顯示了特征被逐漸刪除時(shí)的MSE變化。突然的跳轉(zhuǎn)很可能是由于一個(gè)重要的特征被刪除了。

特征的最佳數(shù)量由測試誤差突然跳躍的位置來表示。通過這種遞歸的方法,我們可以進(jìn)一步提高我們的MSE分?jǐn)?shù):

 

 

我們可以看到,使用機(jī)器來遞歸地刪除特征是著實(shí)有效的。在遞歸地去除特征后,誤差得分顯著下降。

最后,我們選擇通過集成所有不同的模型,來把所有的東西放在一起。我們是這樣做的:

 

 

這張圖展示了我們使用的集成技術(shù),它很顯然被稱為堆疊。

集成技術(shù)只是不同模型預(yù)測值的線性組合。不同模型的權(quán)值是從最小化測試集錯(cuò)誤分?jǐn)?shù)的權(quán)值集中選取的。在將最終結(jié)果提交給Kaggle之后,我們的最終分?jǐn)?shù)是0.1214。

嘗試新事物和我的結(jié)論

作為我們的第一個(gè)機(jī)器學(xué)習(xí)項(xiàng)目,我們學(xué)到了很多。第一點(diǎn),也是很重要的一點(diǎn),我們親眼看到了線性模型的力量。這是我們預(yù)料到的事實(shí)。第二點(diǎn)也是更深刻的教訓(xùn)是,我們看到了人類直覺的局限性。長時(shí)間的無用的特征工程對我們來說也是一個(gè)值得紀(jì)念的教訓(xùn)。在這些機(jī)器學(xué)習(xí)的問題中,我們應(yīng)該始終在人類直覺和依賴機(jī)器之間取得平衡。我們花費(fèi)了太多的時(shí)間熱衷于研究數(shù)據(jù)集,嘗試找出哪些數(shù)據(jù)在統(tǒng)計(jì)上是重要的或是不重要的,并且在刪除特征時(shí)又過于猶豫。如果我們果斷的處理這些操作,那么他們是很有益的。但問題是,這些EDA和統(tǒng)計(jì)測試的結(jié)論從來不是非黑即白的——他們很少產(chǎn)生有可操作性的反饋。我們應(yīng)該做的是,在跟隨機(jī)啞變量比較重要性時(shí),更快速地研究線性和非線性模型給出的特征重要性。與此同時(shí),我們應(yīng)該花更多的時(shí)間來研究如何執(zhí)行相關(guān)特征子集的PCA。盡管我們在人工特征處理方面做了很多努力,但最終我們?nèi)匀辉馐芰硕嘀毓簿性的困擾。我們需要更明智地使用機(jī)器學(xué)習(xí)技術(shù)。因此,我們從中得到的教訓(xùn)是顯而易見的。當(dāng)然,我們下次會(huì)做的更好。

原文標(biāo)題:

My First Machine Learning Project

原文鏈接:

https://nycdatascience.com/blog/student-works/my-first-machine-learning-project-a-somewhat-generalized-workflow-with-after-thoughts/

標(biāo)簽: 機(jī)器學(xué)習(xí)項(xiàng)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:2020年數(shù)據(jù)科學(xué)的四大最熱門趨勢

下一篇:2019 年薪水最高的十三個(gè)技術(shù)崗位