8個經過證實的方法:提高機器學習模型的準確率
摘要:本文分享了 8 個經過證實的方法。這些方法用來改善模型的**表現。它們廣為人知,但不一定要按照文中的順序逐個使用。
提公升乙個模型的表現有時很困難。如果你們曾經糾結於相似的問題,那我相信你們中很多人會同意我的看法。你會嘗試所有曾學習過的策略和演算法,但模型正確率並沒有改善。你會覺得無助和困頓,這是90%的資料科學家開始放棄的時候。
不過,這才是考驗真本領的時候!這也是普通的資料科學家跟大師級資料科學家的差距所在。你是否曾經夢想過成為大師級的資料科學家呢?
如果是的話,你需要這 8 個經過證實的方法來重構你的模型。建立**模型的方法不止一種。這裡沒有金科玉律。但是,如果你遵循我的方法(見下文),(在提供的資料足以用來做**的前提下)你的模型會擁有較高的準確率。
我從實踐中學習了到這些方法。相對於理論,我一向更熱衷於實踐。這種學習方式也一直在激勵我。本文將分享 8 個經過證實的方法,使用這些方法可以建立穩健的機器學習模型。希望我的知識可以幫助大家獲得更高的職業成就。.
模型的開發周期有多個不同的階段,從資料收集開始直到模型建立。
花時間思考要回答的問題以及獲取領域知識也很重要。這有什麼幫助呢?它會幫助你隨後建立更好的特徵集,不被當前的資料集誤導。這是改善模型正確率的乙個重要環節。
在這個階段,你應該對問題進行結構化思考,即進行乙個把此問題相關的所有可能的方面納入考慮範圍的思考過程。
現在讓我們挖掘得更深入一些。讓我們看看這些已被證實的,用於改善模型準確率的方法。
我明白,有時無法獲得更多資料。比如,在資料科學競賽中,訓練集的資料量是無法增加的。但對於企業專案,我建議,如果可能的話,去索取更多資料。這會減少由於資料集規模有限帶來的痛苦。
2.處理缺失值和異常值
訓練集中缺失值與異常值的意外出現,往往會導致模型正確率低或有偏差。這會導致錯誤的**。這是由於我們沒能正確分析目標行為以及與其他變數的關係。所以處理好缺失值和異常值很重要。
仔細看下面一幅截圖。在存在缺失值的情況下,男性和女性玩板球的概率相同。但如果看第二張表(缺失值根據稱呼「miss」被填補以後),相對於男性,女性玩板球的概率更高。
左側:缺失值處理前;右側:缺失值處理後
從上面的例子中,我們可以看出缺失值對於模型準確率的不利影響。所幸,我們有各種方法可以應對缺失值和異常值:
這一步驟有助於從現有資料中提取更多資訊。新資訊作為新特徵被提取出來。這些特徵可能會更好地解釋訓練集中的差異變化。因此能改善模型的準確率。
假設生成對特徵工程影響很大。好的假設能帶來更好的特徵集。這也是我一直建議在假設生成上花時間的原因。特徵工程能被分為兩個步驟:
·特徵轉換:許多場景需要進行特徵轉換:
·a)把變數的範圍從原始範圍變為從0到1。這通常被稱作資料標準化。比如,某個資料集中第乙個變數以公尺計算,第二個變數是厘公尺,第三個是千公尺,在這種情況下,在使用任何演算法之前,必須把資料標準化為相同範圍。
b)有些演算法對於正態分佈的資料表現更好。所以我們需要去掉變數的偏向。對數,平方根,倒數等方法可用來修正偏斜。
c)有些時候,數值型的資料在分箱後表現更好,因為這同時也處理了異常值。數值型資料可以通過把數值分組為箱變得離散。這也被稱為資料離散化。
·建立新特徵:從現有的變數中衍生出新變數被稱為特徵建立。這有助於釋放出資料集中潛藏的關係。比如,我們想通過某家商店的交易日期**其交易量。在這個問題上日期可能和交易量關係不大,但如果研究這天是星期幾,可能會有更高的相關。在這個例子中,某個日期是星期幾的資訊是潛在的。我們可以把這個資訊提取為新特徵,優化模型。
特徵選擇是尋找眾多屬性的哪個子集合,能夠最好的解釋目標變數與各個自變數的關係的過程。
你可以根據多種標準選取有用的特徵,例如:
·所在領域知識:根據在此領域的經驗,可以選出對目標變數有更大影響的變數。
·視覺化:正如這名字所示,視覺化讓變數間的關係可以被看見,使特徵選擇的過程更輕鬆。
·統計引數:我們可以考慮p值,資訊價值(information values)和其他統計引數來選擇正確的引數。
使用正確的機器學習演算法是獲得更高準確率的理想方法。但是說起來容易做起來難。
這種直覺來自於經驗和不斷嘗試。有些演算法比其他演算法更適合特定型別資料。因此,我們應該使用所有有關的模型,並檢測其表現。
我們都知道機器學習演算法是由引數驅動的。這些引數對學習的結果有明顯影響。引數調整的目的是為每個引數尋找最優值,以改善模型正確率。要調整這些引數,你必須對它們的意義和各自的影響有所了解。你可以在一些表現良好的模型上重複這個過程。
例如,在隨機森林中,我們有 max_features,number_trees, random_state, oob_score 以及其他引數。優化這些引數值會帶來更好更準確的模型。
想要詳細了解調整引數帶來的影響,可以查閱《tuning the parameters of your random forest model》。下面是隨機森林演算法在scikit learn中的全部引數清單:
randomforestclassifier(n_estimators=10,criterion='gini',max_depth=none,min_samples_split=2,min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_features='auto',max_leaf_nodes=none,bootstrap=true,oob_score=false,n_jobs=1,random_state=none,verbose=0,warm_start=false,class_weight=none)
在資料科學競賽獲勝方案中最常見的方法。這個技術就是把多個弱模型的結果組合在一起,獲得更好的結果。它能通過許多方式實現,如:
·bagging(bootstrap aggregating)
·boosting
使用整合方法改進模型正確率永遠是個好主意。主要有兩個原因:1)整合方法通常比傳統方法更複雜;2)傳統方法提供好的基礎,在此基礎上可以建立整合方法。
注意!到目前為止,我們了解了改善模型準確率的方法。但是,高準確率的模型不一定(在未知資料上)有更好的表現。有時,模型準確率的改善是由於過度擬合。
8.交叉驗證
如果想解決這個問題,我們必須使用交叉驗證技術(cross validation)。交叉驗證是資料建模領域最重要的概念之一。它是指,保留一部分資料樣本不用來訓練模型,而是在完成模型前用來驗證。
結語**建模的過程令人疲憊。但是,如果你能靈活思考,就可以輕易勝過其他人。簡單地說,多考慮上面這8個步驟。獲得資料集以後,遵循這些被驗證過的方法,你就一定會得到穩健的機器學習模型。不過,只有當你熟練掌握了這些步驟,它們才會真正有幫助。比如,想要建立乙個整合模型,你必須對多種機器學習演算法有所了解。
翻譯:資料工匠
8個經過證實的方法 提高機器學習模型的準確率
字數2823 閱讀690 喜歡25 摘要 本文分享了 8 個經過證實的方法。這些方法用來改善模型的 表現。它們廣為人知,但不一定要按照文中的順序逐個使用。提公升乙個模型的表現有時很困難。如果你們曾經糾結於相似的問題,那我相信你們中很多人會同意我的看法。你會嘗試所有曾學習過的策略和演算法,但模型正確率...
8個經過證實的方法 提高機器學習模型的準確率
來自 提公升乙個模型的表現有時很困難。如果你們曾經糾結於相似的問題,那我相信你們中很多人會同意我的看法。你會嘗試所有曾學習過的策略和演算法,但模型正確率並沒有改善。你會覺得無助和困頓,這是90 的資料科學家開始放棄的時候。不過,這才是考驗真本領的時候!這也是普通的資料科學家跟大師級資料科學家的差距所...
機器學習方法 機器學習中的優化方法
機器學習是離不開優化方法的,pedro domingos這樣概括機器學習和優化方法的關係 machine learning representation optimization evaluation 後面三項對應於三步 建立模型,求解模型,驗證模型。首先介紹一下機器學習中常見的優化問題 1.分類回...