禁止一切形式轉(zhuǎn)載
作者按:本來打算給英文版琐馆,但是考慮到易于使用就直接給中文版了呛踊,其次有些術(shù)語不知道用中文該如何準(zhǔn)確表達(dá)亭姥,所以直接用了英文苛骨。
作為一個具有良好習(xí)慣的數(shù)據(jù)科學(xué)家篱瞎,在拿到一個問題時,要做的第一件事就是制作出您的機器學(xué)習(xí)項目清單痒芝。 這個筆記給出了一個可供參考的機器學(xué)習(xí)項目清單俐筋,它應(yīng)該適用于大多數(shù)機器學(xué)習(xí)項目,但要確保適應(yīng)您的需求严衬。
此清單可以指導(dǎo)您完成大多數(shù)機器學(xué)習(xí)項目澄者。 有八個主要步驟:
1.問題框架化,視野宏觀化
2.獲取數(shù)據(jù)
3.探索數(shù)據(jù)以獲得 深層次見解
4.準(zhǔn)備數(shù)據(jù)以更好地將基礎(chǔ)數(shù)據(jù)模式提供給機器學(xué)習(xí)算法
5.探索不同的模型并列出最優(yōu)模型
6.微調(diào)模型并將它們組合成一個很好的解決方案
7.展示您的解決方案
8.運行请琳,監(jiān)控和維護(hù)您的系統(tǒng)
實際操作中您可以隨意調(diào)整此清單以滿足您的具體需求
1. 問題框架化粱挡,視野宏觀化-Frame the Problem and Look at the Big Picture
1.用術(shù)語定義項目目標(biāo)
2.您的解決方案將如何使用?
3.目前的解決方案/解決方法是什么(如果有的話)俄精?
4.你應(yīng)該如何構(gòu)建這個問題(監(jiān)督/無人監(jiān)督询筏,在線/離線等等)?
5.如何衡量表現(xiàn)竖慧?
6.表現(xiàn)衡量標(biāo)準(zhǔn)是否與項目目標(biāo)一致嫌套?
2. 獲取數(shù)據(jù)-Get the Data
注意:盡可能自動化局冰,以便您輕松獲取新數(shù)據(jù)。
1.列出您需要的數(shù)據(jù)以及您需要的數(shù)據(jù)數(shù)量
2.查找并記錄您可以從哪里獲取該數(shù)據(jù)
3.檢查需要多少內(nèi)存空間
4.檢查法律義務(wù)灌危,并在必要時獲得授權(quán)
5.獲取訪問權(quán)限
6.創(chuàng)建工作區(qū)(具有足夠的存儲空間)
7.獲取數(shù)據(jù)
8.將數(shù)據(jù)轉(zhuǎn)換為您可以輕松操作的格式(不更改數(shù)據(jù)本身)
9.確保刪除或保護(hù)敏感信息(例如康二,匿名)
10.檢查數(shù)據(jù)的大小和類型(時間序列,樣本勇蝙,地理位置等)
11.對測試集進(jìn)行采樣沫勿,將其放在一邊,不要看它(沒有數(shù)據(jù)窺探N痘臁)
3. 探索數(shù)據(jù)-Explore the Data
注意:嘗試從相關(guān)領(lǐng)域?qū)<夷抢铽@取有關(guān)這些步驟的見解产雹。
1.創(chuàng)建用于探索的數(shù)據(jù)副本(將其抽樣為可管理的大小如有必要)
2.創(chuàng)建一個Jupyter筆記本以記錄您的數(shù)據(jù)探索
3.研究每個屬性及其特征:
- 名稱
- 類型(分類,整數(shù)/浮點數(shù)翁锡,有界/無界蔓挖,文本,結(jié)構(gòu)化等)
- 缺失值的百分比
- 噪音和噪音類型(隨機馆衔,異常值,舍入誤差等)
- 可能對任務(wù)有用嗎角溃?
- 分布類型(高斯拷获,均勻,對數(shù)等)
4.對于監(jiān)督學(xué)習(xí)任務(wù)减细,確定目標(biāo)屬性
5.可視化數(shù)據(jù)
6.研究屬性之間的相關(guān)性
7.研究如何手動解決問題
8.確定您可能想要應(yīng)用的有希望的轉(zhuǎn)換
9.確定有用的額外數(shù)據(jù)(請返回上一步“獲取數(shù)據(jù)”)
10.記錄你學(xué)到的東西
4. 準(zhǔn)備數(shù)據(jù)-Prepare the Data
注意:
- 處理數(shù)據(jù)副本(保持原始數(shù)據(jù)集完整)
- 為您應(yīng)用的所有數(shù)據(jù)轉(zhuǎn)換編寫函數(shù)匆瓜,原因有五:
— 您可以在下次獲得新數(shù)據(jù)集時輕松準(zhǔn)備數(shù)據(jù)
— 您可以在將來的項目中應(yīng)用這些轉(zhuǎn)換
— 清潔和準(zhǔn)備測試集
— 在解決方案生效后清理和準(zhǔn)備新的數(shù)據(jù)實例
— 使您可以輕松地將您的準(zhǔn)備選擇視為超參數(shù)
1.數(shù)據(jù)清理:
- 修復(fù)或刪除異常值(可選)
- 填寫缺失值(例如,零未蝌,均值驮吱,中位數(shù)......)或刪除它們的行(或列)
2.特征選擇(可選):
- 刪除不為任務(wù)提供有用信息的屬性
3.特征工程,適當(dāng)時:
- 使連續(xù)特征具體化
- 分解特征(例如萧吠,分類左冬,日期/時間等)。
- 添加有用的特征轉(zhuǎn)換(例如怎憋,
等)
- 將特征聚合為有用的新特征
- 有兩種編碼方式:labelEncoding和OneHotEncoding绊袋。對于回歸問題,更多使用labelEncoding铸鹰。對于分類問題癌别,更多使用OneHotEncoding。
4.特征縮放:將特征 standardize or normalize
5. 探索不同的模型并列出最優(yōu)模型-Short-List Promising Models
注意:
- 如果數(shù)據(jù)量很大蹋笼,您可能需要對較小的訓(xùn)練集進(jìn)行采樣展姐,以便進(jìn)行訓(xùn)練
在合理的時間內(nèi)有許多不同的模型(請注意躁垛,這會對諸如大型神經(jīng)網(wǎng)絡(luò)或隨機森林等復(fù)雜模型進(jìn)行處罰) - 再次嘗試盡可能自動化這些步驟
1.訓(xùn)練quick and dirty models from different categories(例如,線性圾笨,樸素貝葉斯教馆,SVM,隨機森林擂达,神經(jīng)網(wǎng)絡(luò)等)使用標(biāo)準(zhǔn)參數(shù)(默認(rèn)參數(shù))
2.衡量并比較他們的表現(xiàn)
- 對于每個模型土铺,使用N-fold 交叉驗證并計算平均值和 N folds 上的性能測量的標(biāo)準(zhǔn)偏差
3.分析每種算法的最重要變量
4.分析模型所犯的錯誤類型
- 人類用什么數(shù)據(jù)來避免這些錯誤?
5.進(jìn)行快速的特征選擇和特征工程
6.對前面五個步驟進(jìn)行一次或兩次快速迭代
7.列出前三到五個最有希望的模型板鬓,更傾向于那些出現(xiàn)不同類型錯誤的模型
6. 微調(diào)模型并將它們組合成一個很好的解決方案-Fine-Tune the System
注意:
- 您將希望在此步驟中使用盡可能多的數(shù)據(jù)悲敷,尤其是在進(jìn)行到微調(diào)快結(jié)束時
- 始終如一地盡可能實現(xiàn)自動化
1.使用交叉驗證微調(diào)超參數(shù)
- 將數(shù)據(jù)轉(zhuǎn)換選擇視為超參數(shù),尤其是在你不確定它們時(例如俭令,我應(yīng)該用零或中值更換缺失值后德? 或者直接刪除這一行?)
- 除非要探索的超參數(shù)值非常少抄腔,否則更傾向于使用隨機搜索網(wǎng)格搜索瓢湃。 如果訓(xùn)練時間很長,您可能更喜歡貝葉斯訓(xùn)練優(yōu)化方法(例如赫蛇,使用高斯過程先驗箱季,as described by Jasper Snoek,Hugo Larochelle和Ryan Adams)
2.嘗試Ensemble方法棍掐。 結(jié)合最佳模型通常會表現(xiàn)得更好,而不是單獨運行它們
3.一旦你對自己的最終模型充滿信心藏雏,就可以在測試集上來估計泛化誤差進(jìn)而衡量它的表現(xiàn)
在測量泛化誤差后不要調(diào)整模型:您只需要開始過擬合測試集(此處頗為不解)
7. 展示您的解決方案-Present Your Solution
1.記錄你所做的事情
2.創(chuàng)建一個漂亮的演示文稿
- 確保首先突出顯示大圖
3.解釋為什么您的解決方案可以實現(xiàn)項目目標(biāo)
4.不要忘記提供沿途注意到的有趣點
- 描述哪些有效巡语,哪些無效
- 列出您的假設(shè)和系統(tǒng)的限制
5.確保通過精美的可視化或易于理解的表達(dá)來闡述您的關(guān)鍵點
(例如枯芬,“收入中位數(shù)是房價的第一預(yù)測因素“)
8. 運行,監(jiān)控和維護(hù)您的系統(tǒng)-Launch!
1.準(zhǔn)備好生產(chǎn)解決方案(插入生產(chǎn)數(shù)據(jù)輸入车摄,寫入單元測試等)
2.編寫監(jiān)控代碼粟誓,以定期檢查系統(tǒng)的實時性能奏寨,并在它下降時觸發(fā)警報。
- 謹(jǐn)防緩慢退化:隨著數(shù)據(jù)的發(fā)展鹰服,模型往往會“腐爛”病瞳。
- 測量性能可能需要人工管道(例如,通過眾包服務(wù))悲酷。
- 同時需要監(jiān)控輸入的質(zhì)量(例如套菜,發(fā)送隨機值的故障傳感器,或其他團(tuán)隊的輸出變得陳舊)這對在線學(xué)習(xí)系統(tǒng)尤為重要
3.定期根據(jù)新數(shù)據(jù)重新訓(xùn)練模型(盡可能自動化)