如果SMOTE和TOMEK無法改善您的機器學習模型,該用什麼方法呢?

2021-01-07 不靠譜的貓

當我們處理機器學習分類時,我們會遇到很多問題。其中之一是類不平衡:一個類的樣本數量過多,而另一個類的樣本數量非常少。這個問題出現在許多研究領域,例如,當我們試圖診斷一種罕見的疾病或檢測欺詐交易時就會出現這個問題。在這篇文章中,我將介紹如何處理分類項目中的類不平衡問題。

通常,當我們的類比例低於10/90時,我們可以說我們面臨著類不平衡問題。在某些情況下,情況可能更嚴重。有一個分類項目,試圖預測在絲芙蘭銷售的哪一款美容產品贏得了Allure Beauty Award。在檢查這個機器學習數據後,你會發現有1920個產品沒有獲獎,只有81個獲獎。註:有更多的獲獎產品,但只有81個在絲芙蘭銷售。

傳統方法

為了創建一個二元分類模型,假定你採用一種簡單的方法:在沒有任何操作的情況下運行邏輯回歸。預期結果:模型執行的準確性為96%,但沒有召回率。這意味著,這種方法將所有未被充分代表的類視為背景噪音,或者簡單地說,只是假設所有的產品都沒獲獎,正確率為96%。

如果我們談論的是獲得獎項的美容產品,這還好,但如果我們試圖診斷一種致命疾病呢?我們需要消除type II error。

解決類不平衡問題有兩種著名的傳統方法:使用TOMEK links進行欠採樣和使用SMOTE進行過採樣。

在第一種情況中,我們檢測兩個類的實例之間的links,這兩個類彼此很接近。在項目中,可能有兩個非常相似的產品(相同的價格,相似的評級等),但其中一個獲獎了,另一個沒有獲獎。我們可以在這些實例之間創建一個link並刪除它們,儘可能地將這兩個類分隔開。

對於SMOTE(Synthetic Minority Oversampling Technique),我們採用不同的方法。我們不是減少數據點的數量,而是創建未充分表示的類的合成實例。同樣,在我的例子中,我們僅分析代表Allure獲勝者的價格,評級和其他預測指標,並使用這些特徵創建更多實例。

在執行項目時,我嘗試了這兩種方法,但是我建立的所有機器學習模型(邏輯回歸,Naive Bayes,XGBoost)的準確率均未超過78%,並且無法提高召回率。

解決方法

首先,我需要創建兩個data frames,對應獲獎和未獲獎

df_lose = df[df[『Allure』] == 0]df_win = df[df[『Allure』] == 1]

接下來,要確保我的欠採樣是無偏的,我們需要對未獲獎data frame(df_lose)進行shuffle:

df_lose = shuffle(df_lose)

接下來,我們需要截斷該data frame以匹配df_win的尺寸(請記住,我們只有81個獲獎者):

df_lose_81 = df_lose[:81]

最後,我們把它們連接在一起,然後再次shuffle

twodf = [df_win, df_lose_81]edf = pd.concat(twodf, ignore_index=True)edf = shuffle(edf)

現在,我們可以查看新數據框數據

最後,我們可以運行我們的機器學習分類模型。最好的模型是XGBoost,驗證準確度為96.97%,召回率為0.93。

相關焦點

  • 用Python處理不平衡數據集
    在機器學習任務(如分類問題)中,不平衡數據會導致訓練的模型預測的結果會偏向於樣本數量多的類別,這個時候除了要選擇合適的評估指標外,想要提升模型的性能,就要對數據和模型做一些預處理。處理數據不平衡的主要方法:  欠採樣  過採樣  綜合採樣  模型集成  調整類別權重或者樣本權重2.
  • 已經證實提高機器學習模型準確率的八大方法
    導語 提升一個模型的表現有時很困難。如果你們曾經糾結於相似的問題,那我相信你們中很多人會同意我的看法。你會嘗試所有曾學習過的策略和算法,但模型正確率並沒有改善。你會覺得無助和困頓,這是 90% 的數據科學家開始放棄的時候。
  • LIME:一種解釋機器學習模型的方法
    機器學習如今是非常火的一個話題。隨著計算機在圍棋等遊戲中擊敗人類專家,許多人不禁要問機器是否也能勝任司機的工作,甚至是取代醫生?現在很多前沿的機器學習模型還是一個黑盒,幾乎無法去感知它的內部工作狀態。這就給我們帶來了可信度的問題:我該相信那個模型的某個預測結果是正確的嗎?或者說我該相信那個模型的預測結果普遍都是合理的嗎?
  • 教程 | 理解XGBoost機器學習模型的決策過程
    本文用一個具體的數據集分析了 XGBoost 機器學習模型的預測過程,通過使用可視化手段展示結果,我們可以更好地理解模型的預測過程。隨著機器學習的產業應用不斷發展,理解、解釋和定義機器學習模型的工作原理似乎已成日益明顯的趨勢。對於非深度學習類型的機器學習分類問題,XGBoost 是最流行的庫。
  • 為什麼我們要重視機器學習模型的調試?
    人們逐漸意識到ML模型可能會失敗,這是模型需要調試的原因,理解和修復ML模型中的問題對ML的未來至關重要。如果無法在模型表現不佳或行為異常時對它們進行故障排除,大規模採用和部署ML將無法實現。因為所有ML模型都會出錯,所以所有關心ML的人也應該關心模型調試。
  • 如何通過7個步驟構建機器學習模型
    大約25年前,一個由五家供應商組成的聯盟開發了跨行業的數據挖掘標準流程(CRISP-DM),該流程專注於數據挖掘項目中各種數據密集型步驟的連續迭代方法。該方法從業務理解和數據理解之間的迭代循環開始。接下來是數據準備和數據建模之間的迭代循環的切換,然後是評估階段,它將結果分解到部署和業務理解。這種循環的、迭代的循環導致了連續的數據建模、準備和評估。
  • 從零開始的人工智慧和機器學習,該從哪裡入手呢?
    圖源:Unsplash問:零基礎,如何讓人工智慧和機器學習更簡單,更容易上手呢?如果你是完完全全的初學者,從一些Python入門課程開始,有些自信之後,就可以學習數據科學、機器學習和人工智慧。DataCamp非常適合那些想要重點學習數據科學和機器學習的Python初學者們。
  • Airbnb欺詐預測機器學習模型設計:準確率和召回率的故事
    為了減少此類欺詐行為,信任和安全小組的數據科學家構建了不同種類的機器學習模型,用來幫助識別不同類型的風險。想要獲得我們模型背後更多的體系結構信息,請參考以前的文章 機器學習風險系統的設計。在這篇文章中,我對機器學習的模型建立給了一個簡短的思維過程概述。
  • 機器學習模型評估指標Python代碼示例
    我們什麼時候評估我們的機器學習模型呢?答案不是只有一次。通常,我們在實際的數據科學工作流中兩次使用機器學習模型驗證指標:模型比較:為您的任務選擇最佳機器學習(ML)模型模型改進:調整超參數為了更清楚地了解這兩者之間的區別,讓我通過機器學習(ML)實現的工作流程來解釋。
  • 「精品」機器學習模型可解釋的重要及必要性
    在模型比較時,除了模型的性能,如果一個模型的決策比另一個模型的決策更容易被人類理解,則說該模型比另一個模型具有更好的可解釋性。模型解釋的重要性在解決機器學習問題時,數據科學家通常傾向於注意模型性能指標,如準確性、精確度和召回率等(毫無疑問,這很重要!)。
  • 小白也看得懂的機器學習模型工作原理
    給幼兒園的小朋友講清楚機器學習可能有點誇張,實際上這一問題的要求就是,儘可能簡單地解釋某一技術。這就是筆者在本文中嘗試做到的事。筆者將解釋什麼是機器學習以及不同類型的機器學習,再介紹常見的模型。本文裡,筆者不會介紹任何數學運算,小白請放心食用。
  • 【深度】機器學習進化史:從線性模型到神經網絡
    神經網絡的關鍵是什麼?相對於傳統的線性和非線性方法,為什麼神經網絡會如此強大?當你有一個線性模型,每一個功能要麼對你有幫助,要麼對你有傷害,這種假設是線性模型中固有的。因此線性模型要麼功能異常強大,用類1表示;要麼則毫無用處,用類2表示。所有的解決方案,要麼導致該功能獲得巨大的價值;要麼價值變得微不足道。你永遠不會有這麼一個狀態說,在這個區間,該功能就是代表類1;但是在另一個區間,它代表類2。線性和非線性方法局限性很大。也
  • 為什麼90%的機器學習模型從未應用於生產?
    據 VentureBeat 報導,大約 90% 的機器學習模型從未投入生產。換句話說,數據科學家的工作只有十分之一能夠真正產出對公司有用的東西。儘管 十分之九 的科技高管相信,人工智慧將成為下一次科技革命的中心,但人工智慧的採用和部署尚未獲得長足的發展,而這不能怪數據科學家。
  • 手把手教您Python機器學習項目
    加載數據集並使用統計摘要和數據可視化理解它的結構。創建6個機器學習模型,選擇最好的,建立準確性可靠的信心。如果您是一個機器學習初學者,並希望最終開始使用Python,那麼本教程就是為您設計的。真正適應新平臺或工具的最好方法是端到端地完成一個機器學習項目,並涵蓋關鍵步驟。即,從加載數據,總結數據,評估算法和做出一些預測。如果您能做到這一點,您就有了一個可以在一個又一個數據集上使用的模板。一旦您有了更多的信心,您就可以在以後填補空白,比如進一步的數據準備和改進結果任務。
  • 比Keras更好用的機器學習「模型包」:0代碼上手做模型
    做機器學習模型時,只是融合各種算法,就已經用光了腦細胞?又或者覺得,數據預處理就是在「浪費時間」?一位畢業於哥廷根大學、做機器學習的小哥也發現了這個問題:原本只是想設計個模型,結果「實現比設計還麻煩」。
  • 「3步套路」快速掌握機器學習算法和模型 | 極客時間
    要問機器學習主要能解決什麼問題,拋開各式各樣的機器學習流派和層出不窮的算法模型不談,機器學習主要解決的是兩類問題:監督學習和無監督學習。掌握機器學習,主要就是學習這兩類問題,掌握解決這兩類問題的基本思路。什麼是解決這兩類問題的基本思路呢?基本思路,簡而言之就是「套路」。
  • 文科生用機器學習做論文,該寫些什麼?
    從前認為永遠無法企及的機器學習方法,現在會用了;從前面對數據無從下手,想不到解決思路,現在水到渠成。而且因為學習MOOC,英文和數學能力也有了提升。所以,預答辯之前,他對自己論文的評價預期很高。他沒有想到,自己的論文居然存在這麼多的嚴重問題。一時感到很是沮喪和挫折。
  • 機器學習模型必不可少的5種數據預處理技術
    如果您曾經參與過數據科學項目,那麼您可能會意識到數據挖掘的第一步和主要步驟是數據預處理。在現實生活問題中,我們得到的原始數據往往非常混亂,機器學習模型無法識別模式並從中提取信息。1.處理null值:null值是數據中任何行或列中缺失的值。
  • 比Keras更好用的機器學習「模型包」:無需預處理,0代碼上手做模型
    原標題:比Keras更好用的機器學習「模型包」:無需預處理,0代碼上手做模型蕭簫發自凹非寺量子位報導|公眾號QbitAI做機器學習模型時,只是融合各種算法,就已經用光了腦細胞?項目igel包含了當前最新的所有機器學習模型(回歸、分類、聚類),而且作者表示,項目還在持續更新中。也就是說,後續如果還有更新的機器學習模型,也會再加進項目。
  • 臨床研究的新風口——利用機器學習方法建立和驗證預測模型 | 瘋狂統計學2.0
    下文為新書《瘋狂統計學(第二版)》中關於「臨床研究新風口——利用機器學習方法建立和驗證預測模型」的精彩篇章,請各位讀者盡情享閱。臨床研究的新風口利用機器學習方法建立和驗證預測模型做臨床研究,一個好的選題是成功(高分SCI)的保證。