在XGBoost和LightGBM模型中強制執行單調約束的python教程

2021-01-13 不靠譜的貓

在數據科學和人工智慧領域取得重大進展之後,我們往往會聽到有關倫理和可解釋性AI的討論,尤其是在銀行和保險等行業中。儘管有許多易於訪問且具有高度預測性的算法可供使用,但是對於從事這些行業的分析師和數據科學家而言,面臨著選擇預測準確性還是履行其監管職責的兩難選擇。研究人員和行業專家正努力使機器學習模型透明化和可解釋化。

使模型輸出更實用的一種創新稱為單調約束。

什麼是單調性?

單調是一個函數或數量的變化。

單調遞增函數:如果對所有 x和 y,當 x≤y時,都有f(x)≤ f(y),則該函數被稱為單調遞增函數(見圖1)。這個函數不一定要增加,只是不能減少。

單調遞減函數:如果對所有 x和 y,當 x≤y時,都有 f(x)≥f(y),則該函數被稱為單調遞減函數(見圖2)。這個函數不一定要減少,只是不能增加。

為什麼要在機器學習模型中應用單調性?

現在,你一定想知道為什麼我們需要一個約束模型。在現實生活中,許多場景都表現出單調關係,請看下面給出的一些例子。

信用評分越高,申請被批准的可能性越大。保險費隨著駕照年齡的增長而下降。保險費隨保險金額的增加而增加。在缺乏單調約束的情況下,銀行和保險公司可能會面臨一種不合邏輯的決策情況,比如信用評分較高(比如610分)的申請被拒絕,而信用評分較低(比如600分)的申請被批准。類似地,客戶A為100萬美元的房產支付1000美元的溢價,客戶B為110萬美元的房產支付990美元的溢價。在上面的例子中,我們假設所有其他因素對於兩對客戶都是相同的。

機器學習模型示例

我將在python中使用XGBoost向您介紹這個概念,並且本教程的底部也提供了LightGBM實現的代碼。

生成樣本數據

第一步,我們將根據上述兩種情況模擬一些數據。

場景1:以正斜率模擬數據

這種情況下,兩個變量x和y之間存在正相關關係,當x增加時,y也會增加,而當x減少y時也會減少,例如保險金額和保費金額。

場景2:以負斜率模擬數據

這種情況是兩個變量之間的負相關關係,當x增加時,y減少,當x減少時,y增加,例如,駕照年齡和保費金額。

擬合無單調約束的機器學習模型

我們將在兩個場景中使用預設參數和不強制任何約束來擬合增強樹模型。

您可以看到輸出的可視化

我們來分析一下輸出,藍點顯示X個數據點,紅線顯示擬合模型。我們可以看到兩個模型都表現良好,能夠捕獲數據的整體趨勢,而且這種曲線也很自然,但是這可能會影響決策。當我們在很短的時間間隔內分析模型時,我們可以觀察到與我們期望相反的趨勢。例如,在上述模型中,Yb <Ya和Yn> Ym與我們的預期相反。

對模型添加單調約束

現在,我們將添加附加參數(即單調約束)對樣本數據進行建模。根據XGBoost文檔,它們分別為1和-1。

讓我們在X值上繪製預測線,以可視化我們的擬合模型。

我們可以看到整體的趨勢看起來與早期的非單調模型相似。現在,解釋這些機器學習模型變得容易多了,不像以前那樣有矛盾的情況。

LightGBM中單調約束的實現

您可以使用以下Python代碼對數據建模並分析輸出,對於其餘步驟,您可以使用與上述相同的代碼。

最後

我們在這裡討論了單變量模型的單調約束,這些約束也可以應用於多個變量,並且可以使用部分依賴圖來分析對單個變量的影響。有時,強制約束有助於避免過度擬合,這取決於數據之間的關係,但是當您有一個過度擬合的模型時,測試這種技術沒有害處。

相關焦點

  • 劍指LightGBM和XGboost!斯坦福發表NGBoost算法
    Stanford ML Group 最近在他們的論文中發表了一個新算法,其實現被稱為 NGBoost。該算法利用自然梯度將不確定性估計引入到梯度增強中。本文試圖了解這個新算法,並與其他流行的 boosting 算法 LightGBM 和 XGboost 進行比較,以了解它在實踐中是如何工作的。
  • 30分鐘搞定數據競賽刷分奪冠神器LightGBM
    一,LightGBM和XGBoost對比正如其名字中的Light所蘊含的那樣,和XGBoost相比,LightGBM在大規模數據集上跑起來更加輕盈。模型精度:XGBoost和LightGBM相當。因此,對於指定為類別特徵的特徵,LightGBM可以直接將每個類別取值和一個bin關聯,從而自動地處理它們,而無需預處理成onehot編碼多此一舉。六,LightGBM使用範例使用pip安裝lightgbm時候如果報錯,可以嘗試使用conda安裝。
  • 大戰三回合:XGBoost、LightGBM和Catboost一決高低
    Battle 中,根據訓練和預測的時間、預測得分和可解釋性等評測指標,讓三個算法一決高下!XGBoost(eXtreme Gradient Boosting) 特點是計算速度快,模型表現好,可以用於分類和回歸問題中,號稱「比賽奪冠的必備殺器」。
  • LightGBM算法框架前世今生!
    知乎上有近幹人關注如何看待微軟開源的 Lightgbm? 問題,被評價為速度驚人」,「非常有啟發」,「支持分布式",「代碼清晰易慬",「佔用內存小"等。lightgbm主要涉及分類、回歸、排序等。屬於監督學習算法。
  • 手把手教程:如何從零開始訓練 TF 模型並在安卓系統上運行
    我將以 MNIST 數據為例介紹圖像分類,並分享一些你可能會面臨的常見問題。本教程著重於端到端的體驗,我不會深入探討各種 tf.Keras API 或 Android 開發。下載我的示例代碼並執行以下操作:
  • 高斯混合模型(GMM):理念、數學、EM算法和python實現
    高斯混合模型是一種流行的無監督學習算法。GMM方法類似於K-Means聚類算法,但是由於其複雜性,它更健壯,更有用。K-means聚類使用歐式距離函數來發現數據中的聚類。只要數據相對於質心呈圓形分布,此方法就可以很好地工作。
  • 使用OpenCV和Python構建自己的車輛檢測模型
    我們人類可以很容易地在一瞬間從複雜的場景中檢測和識別出物體。然而,將這種思維過程轉化為機器的思維,需要我們學習使用計算機視覺算法進行目標檢測。因此在本文中,我們將建立一個自動車輛檢測器和計數器模型。以下視頻是你可以期待的體驗:https://youtu.be/C_iZ2yivskE注意:還不懂深度學習和計算機視覺的新概念?
  • ...請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    在今年秋季開始準備博士項目的時候,我已經精選了一些有關機器學習和NLP的優質網絡資源。一般我會找一個有意思的教程或者視頻,再由此找到三四個,甚至更多的教程或者視頻。猛回頭,發現標收藏夾又多了20個資源待我學習(推薦提升效率工具Tab Bundler)。
  • 乾貨 | 請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    在今年秋季開始準備博士項目的時候,我已經精選了一些有關機器學習和NLP的優質網絡資源。一般我會找一個有意思的教程或者視頻,再由此找到三四個,甚至更多的教程或者視頻。猛回頭,發現標收藏夾又多了20個資源待我學習(推薦提升效率工具Tab Bundler)。
  • 調包俠神器2.0發布,Python機器學習模型搭建只需要幾行代碼
    這款堪稱「調包俠神器」的模型訓練工具包,幾行代碼就能搞定模型編寫、改進和微調。從數據預處理到模型效果對比,PyCaret都能自動實現。所以,PyCaret長啥樣,2.0的版本又做了什麼改進?以下是它「熔」進來的部分庫:數據處理:pandas、numpy…數據可視化:matplotlib、seaborn…各種模型:sklearn、xgboost、catboost、lightgbm…嗯…sklearn直接就給封裝進去了,調用很方便。
  • 大數據分析Python NumPy庫使用教程
    大數據分析Python NumPy庫使用教程為數據工程師提供有關NumPy的從零開始的培訓。這意味著您不需要具有NumPy的任何經驗,也不會浪費任何時間學習與數據工程工作無關的東西。 在瀏覽了基礎知識之後,您將快速開始使用NumPy來構建和操作二維和三維數組。
  • 超參數調整實戰:scikit-learn配合XGBoost的競賽top20策略
    在過去的幾年中,XGBoost被廣泛用於表格數據推斷,並且贏得了數百個挑戰。但是,僅僅通過XGBoost並不能完成完成整的解決方案,同樣的模型為什麼有些人能獲得更好的準確性呢?除了經驗方面的差異,還有一個事實,那就是他們優化了超參數!因此,我們今天將告訴您如何獲取特定數據集的最佳超參數。
  • 中科大統計學python_python 中科大 - CSDN
    強調在知識的廣度、深度和趣味性之間尋找最佳平衡點,在生動幽默中講述數據挖掘的核心思想、關鍵技術以及一些在其它相關課程和教科書中少有涉及的重要知識點,適合對大數據和數據科學感興趣的各專業學生以及工程技術人員學習。
  • Python開發:Win10創建定時任務執行Python腳本
    2020-12-26 07:48:50 來源: 小小追 舉報   日常開發過程中,
  • 200個精選ML、NLP、Python及數學最佳教程(附連結)
    [ 導讀 ]近年來,機器學習等新最新技術層出不窮,如何跟蹤最新的熱點以及最新資源,作者Robbie Allen列出了一系列相關資源教程列表,包含四個主題:機器學習,自然語言處理,Python和數學,建議大家收藏學習!
  • 機器學習算法XGBoost原理和實踐(上)
    小編在之前公眾號文章已介紹了xgboost的安裝方法,接下來將用兩篇文章,介紹XGboost的算法思想和基本原理、實戰(數據處理、核心代碼分享)。如果還沒有安裝包的讀者,請查看之前文章,喜歡可以關注公眾號!XGBoost是boosting算法的其中一種。Boosting算法的思想是將許多弱分類器集成在一起形成一個強分類器。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    教程大合集,包含python所有就業方向,每套課程均來自市面上主流培訓機構的原版教程,價值都在數百元以上 每套課程均包含:視頻課程+課件+原始碼 重要:建議根據自己工作方向和需求,重點選擇2到3套課程學精,吃透,然後在工作 重要:零基礎小白建議先選擇零基礎全能篇的一套課程學精,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐
  • ...詳解線性回歸、樸素貝葉斯、隨機森林在R和Python中的實現應用...
    下面有一個天氣的訓練數據集和對應的目標變量「玩」。現在,我們需要根據天氣情況,將「玩」和「不玩」的參與者進行分類。我們可以按照以下步驟來執行:第1步:把數據集轉換成頻率表。第2步:利用概率(如當Overcast可能性=0.29時,玩耍的可能性為0.64),創建Likelihood表格。第3步:現在,使用樸素貝葉斯方程來計算每一類的後驗概率。
  • 二分類、多分類、回歸任務,一個項目get競賽必備模型
    機器之心報導機器之心編輯部數據挖掘類比賽必備模型,四種實現方法,你值得擁有。數據科學競賽是學習各類算法、深入理解數據科學、提升和挑戰自己的絕佳機會,而這些競賽中有一些常用的模型。項目地址:https://github.com/QLMX/data_mining_models該項目包含二分類模型、多分類模型以及回歸模型,它們分別基於 lightgbm
  • 詳解線性回歸、樸素貝葉斯、隨機森林在R和Python中的...
    從數學上看,結果中機率的對數使用的是預測變量的線性組合模型。下面有一個天氣的訓練數據集和對應的目標變量「玩」。現在,我們需要根據天氣情況,將「玩」和「不玩」的參與者進行分類。我們可以按照以下步驟來執行:第1步:把數據集轉換成頻率表。