數(shù)據(jù)科學工作通常需要大幅度提高工作量才能提高所開發(fā)模型的準確性。這五個建議將有助于改善您的機器學習模型,并幫助您的項目達到其目標。
如果您已經(jīng)完成了一些自己的數(shù)據(jù)科學項目,那么您現(xiàn)在可能已經(jīng)意識到,達到80%的準確性還不錯!但是在現(xiàn)實世界中,有80%不會削減它。實際上,我工作過的大多數(shù)公司都期望至少90%的最低準確性(或他們所關注的任何度量標準)。
因此,我將討論可以極大地提高準確性的5件事。 我強烈建議您仔細閱讀所有五點內(nèi)容, 因為其中包含了許多大多數(shù)初學者都不知道的細節(jié)。
到此為止,您應該理解,在決定機器學習模型的性能方面,有比您想象的更多的變量。
話雖如此,您可以做以下五件事來改善您的機器學習模型!
1.處理缺失值
我看到的最大錯誤之一是人們?nèi)绾翁幚砣笔У膬r值觀,這不一定是他們的錯。網(wǎng)絡上有很多資料說,您通常通過均值插補來處理缺失值 , 將空值替換為給定特征的均值,這通常不是最佳方法。
例如,假設我們有一個顯示年齡和健身得分的表,并且假設一個八十歲的孩子缺少健身得分。如果我們將平均健身得分從15到80歲的年齡范圍內(nèi)進行計算,那么八十歲的孩子似乎將獲得比他們實際應該更高的健身得分。
因此,您要問自己的第一個問題是 為什么 數(shù)據(jù)一開始會丟失。
接下來,考慮除均值/中位數(shù)插補外的其他處理丟失數(shù)據(jù)的方法:
特征預測建模:回到我關于年齡和健身得分的示例,我們可以對年齡和健身得分之間的關系進行建模,然后使用該模型查找給定年齡的預期健身得分。這可以通過多種技術來完成,包括回歸,ANOVA等。
K最近鄰插補:使用KNN插補,缺失數(shù)據(jù)中填充了另一個相似樣本中的值,對于不知道的數(shù)據(jù),KNN中的相似性使用距離函數(shù)(即歐幾里德距離)確定。
刪除行:最后,您可以刪除該行。通常不建議這樣做,但是當您有大量數(shù)據(jù)開始時,它是可以接受的 。
2.特征工程
可以顯著改善機器學習模型的第二種方法是通過特征工程。特征工程是將原始數(shù)據(jù)轉(zhuǎn)換為更好地表示人們正在試圖解決的潛在問題的特征的過程。沒有具體的方法可以執(zhí)行此步驟,這就是使數(shù)據(jù)科學與科學一樣多的藝術。話雖如此,以下是您可以考慮的一些事項:
轉(zhuǎn)換DateTime變量以僅提取一周中的一天,一年中的月份等。
為變量創(chuàng)建箱或桶。(例如,對于高度變量,可以為100–149厘米,150–199厘米,200–249厘米等)
組合多個功能和/或值以創(chuàng)建一個新功能。例如,針對泰坦尼克號挑戰(zhàn)的最準確模型之一設計了一個新變量“ Is_women_or_child”,如果該人是女人還是孩子,則為True,否則為false。
3.特征選擇
可以大大提高模型準確性的第三個領域是特征選擇,即選擇數(shù)據(jù)集中最相關/最有價值的特征。特征太多會導致算法過擬合,而特征太少會導致算法不足。
我喜歡使用兩種主要方法來幫助您選擇功能:
功能重要性:某些算法(例如隨機森林或XGBoost)可讓您確定哪些功能在預測目標變量的值時最“重要”。通過快速創(chuàng)建這些模型之一并進行功能重要性,您將了解哪些變量比其他變量更有用。
降維:主成分分析(PCA)是最常見的降維技術之一,它具有大量特征,并使用線性代數(shù)將其簡化為更少的特征。
4.集成學習算法
改善機器學習模型的最簡單方法之一就是簡單地選擇更好的機器學習算法。如果您還不知道什么是集成學習算法,那么現(xiàn)在該學習它了!
集合學習 是一種結合使用多種學習算法的方法。這樣做的目的是,與單獨使用單個算法相比,它可以實現(xiàn)更高的預測性能。
流行的整體學習算法包括隨機森林,XGBoost,梯度提升和AdaBoost。為了解釋為什么集成學習算法如此強大,我將以隨機森林為例:
隨機森林涉及使用原始數(shù)據(jù)的自舉數(shù)據(jù)集創(chuàng)建多個決策樹。然后,模型選擇每個決策樹的所有預測的模式(多數(shù))。這有什么意義?通過依靠“多數(shù)勝利”模型,它降低了單個樹出錯的風險。
例如,如果我們創(chuàng)建一個決策樹,第三個決策樹,它將預測0。但是,如果我們依靠所有4個決策樹的模式,則預測值為1。這就是集成學習的力量!
5.調(diào)整超參數(shù)
最后,調(diào)整模型的超參數(shù)并不經(jīng)常被談論,但仍然非常重要。在這里,必須清楚地了解正在使用的ML模型。否則,可能很難理解每個超參數(shù)。
看一下隨機森林的所有超參數(shù):
class sklearn.ensemble.RandomForestClassifier(n_estimators=100, *, 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, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, class_weight=None, ccp_alpha=0.0, max_samples=None)
例如,了解什么是min_impurity_decrease可能是一個好主意,這樣,當您希望機器學習模型更加寬容時,可以調(diào)整此參數(shù)!;)
審核編輯 黃昊宇
-
算法
+關注
關注
23文章
4615瀏覽量
92992 -
機器學習
+關注
關注
66文章
8422瀏覽量
132724
發(fā)布評論請先 登錄
相關推薦
評論