回覆列表
  • 1 # AI中國

    當被要求改進現有的預測模型的效能時,人們往往會陷入困境。通常的情況是,會嘗試不同的演算法來檢查結果,但多數人不會想到要改進模型,本文會為大家介紹一些增強現有模型的方法。

    1.新增更多資料

    大量的資料總是有用的。它有助於我們捕獲資料所有的差異。有時我們可能沒有選擇獲得額外的訓練資料。當你參加資料科學競賽時舉例。但是,在處理客戶專案時,如果需要,你可以要求更多資料。

    問題是什麼時候我們應該要求更多的資料?

    我們無法量化更多的資料。這取決於你正在處理的問題以及你正在實施的演算法,例如,在處理時間序列資料時,我們應該查詢至少一年的資料。無論何時你處理神經網路演算法,建議你獲取更多的訓練資料,否則模型將不會推廣。

    2.特徵工程

    1.新增新功能可降低模型方差的偏差。新功能可以幫助演算法以更有效的方式解釋模型的差異。當我們做假設生成時,應該有足夠的時間花費在模型所需的功能上。然後,我們應該從現有資料集建立這些功能。比如,我們想要預測ATM的每日提款量,在這種情況下,我們可以認為人們可能傾向於在月初提取更高的金額。可能的原因可能是人們得到他們的薪水,或者他們在月初會支付各種月度支出。所以我們將為此建立一個新功能。

    2.從事欺詐檢測模式工作時,我們可以把收入與貸款的比例作為一個新的特徵。

    3.特徵選擇

    這是預測建模最重要的方面之一。選擇模型中的重要特徵並且僅在具有重要和顯著特徵的情況下再次構建模型才是明智的。

    即假設我們有100個變數。將會有變數驅動模型的大部分方差。如果我們只是在p值的基礎上選擇特徵的數量,那麼我們仍然可能超過50個變數。在這種情況下,你應該尋找其他措施,如個體變數對模型的貢獻。如果模型的90%方差僅由15個變數解釋,那麼只需在最終模型中選擇這15個變數。

    4.缺失值和離群值處理

    離群值可能會讓你的模型變得糟糕,以至於有時對這些離群值進行處理變得至關重要。因為通常可能有一些資料是錯誤的或不合邏輯的。即一旦我正在研究航空業資料,在資料中有一些年齡為100+的乘客,甚至有一些在年齡一欄填的是2000,這說明是有些使用者故意誤輸了他們的年齡,有些是將他們的年齡一欄誤輸成出生年月。

    同樣,應該解決缺失值問題。缺失的價值觀治療可以在提高績效方面發揮作用。即使用時間序列資料,我們可以用它們的整體平均值或按月平均值來代替值。明智的月份將是最合乎邏輯的,

    缺失值和離群值處理是建模過程的一部分。你可能會想,這些如何能夠幫助提高效能。這兩個問題都可以通過幾種方式解決。你必須確定哪個是給定任務的最佳方式。正確的方法才會導致效能的改進。

    5.整合模型

    整合建模是改進建模結果的流行技術之一。 Bagging(Bootstrap Aggregating)和Boosting是可以使用的一些方法。這些方法通常是更復雜的黑盒子方法。

    我們還可以集合幾個弱模型,並透過對所有這些模型進行簡單平均或加權平均來產生更好的結果。整合建模背後的想法是,一個模型可以更好地捕獲資料的變化,另一個模型可以更好地捕獲趨勢。在這些型別的情況下,整合方法的效果很好。

    6.使用適合的機器學習演算法

    選擇正確的演算法是構建更好模型的關鍵步驟。如果使用holtzwinter模型進行預測,但是它對於實時預測表現不佳,就轉向神經網路模型。有些演算法比其他演算法更適合於某些資料集。識別正確型別的演算法是一個迭代思想的過程。你、需要不斷嘗試不同的演算法,以最終登陸到高效的演算法。

    7.自動特徵生成

    特徵的質量對最終的機器學習演算法的準確性至關重要。沒有機器學習方法可以很好地選擇功能不佳的產品。但是當我們使用深度學習演算法時,你不需要特徵工程。由於深度學習不需要提供最佳的功能,因此它可以自行學習。如果你正在進行影象分類或手寫分類,那麼深度學習是適合的。使用深度學習,影象處理任務已經取得了驚人的成果,在下圖可以看到每個圖層中如何自動建立功能。你還可以觀察每層之後有多少功能正在變得更好。

    8.資料分配和引數調整

    有效地探索資料總是更好。資料分佈可能意味著轉型,資料可能跟隨高斯函式或其他函式族,在這種情況下,我們可以應用一點變換的演算法來得到更好的預測結果。我們可以做的另一件事是微調演算法的引數。即當我們構建隨機森林分類器時,我們可以調整要構建的樹的數量,選擇用於拆分的變數的數量等。同樣,當我們構建深度學習演算法時,我們可以指定我們需要多少層,需要多少個神經元。在每一層中,我們需要哪種啟用功能。如果我們在演算法中使用合適的引數型別,調整引數就可以提高模型效能。

    結論:

    提高機器學習模型的效能很困難。以上提高效能的方法都是基於經驗。當我們使用整合方法時,需要對演算法有全面的瞭解。

    諸如隨機森林、Xgboost、SVM和神經網路的演算法被用於高效能。不知道該演算法如何能很好地適應訓練資料,是獲得更高效能的障礙。所以我們應該始終知道如何根據不同的任務調整演算法。當我們進行引數調整時,應該考慮過度擬合。你可以使用交叉驗證方法來防止過度配合。

    希望這篇文章能夠滿足你對效能提升技術的好奇心。

  • 中秋節和大豐收的關聯?
  • 《海賊王》和之國篇中尾田是不是要畫出神秘大將綠牛?