日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【机器学习】深入理解CatBoost

發布時間:2025/3/12 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器学习】深入理解CatBoost 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要內容概覽:

1. CatBoost簡介

CatBoost是俄羅斯的搜索巨頭Yandex在2017年開源的機器學習庫,是Boosting族算法的一種。CatBoost和XGBoost、LightGBM并稱為GBDT的三大主流神器,都是在GBDT算法框架下的一種改進實現。XGBoost被廣泛的應用于工業界,LightGBM有效的提升了GBDT的計算效率,而Yandex的CatBoost號稱是比XGBoost和LightGBM在算法準確率等方面表現更為優秀的算法。

CatBoost是一種基于對稱決策樹(oblivious trees)為基學習器實現的參數較少、支持類別型變量和高準確性的GBDT框架,主要解決的痛點是高效合理地處理類別型特征,這一點從它的名字中可以看出來,CatBoost是由Categorical和Boosting組成。此外,CatBoost還解決了梯度偏差(Gradient Bias)以及預測偏移(Prediction shift)的問題,從而減少過擬合的發生,進而提高算法的準確性和泛化能力。

與XGBoost、LightGBM相比,CatBoost的創新點有:

  • 嵌入了自動將類別型特征處理為數值型特征的創新算法。首先對categorical features做一些統計,計算某個類別特征(category)出現的頻率,之后加上超參數,生成新的數值型特征(numerical features)。

  • Catboost還使用了組合類別特征,可以利用到特征之間的聯系,這極大的豐富了特征維度。

  • 采用排序提升的方法對抗訓練集中的噪聲點,從而避免梯度估計的偏差,進而解決預測偏移的問題。

  • 采用了完全對稱樹作為基模型。

2. 類別型特征

2.1 類別型特征的相關工作

所謂類別型特征,即這類特征不是數值型特征,而是離散的集合,比如省份名(山東、山西、河北等),城市名(北京、上海、深圳等),學歷(本科、碩士、博士等)。在梯度提升算法中,最常用的是將這些類別型特征轉為數值型來處理,一般類別型特征會轉化為一個或多個數值型特征。

如果某個類別型特征基數比較低(low-cardinality features),即該特征的所有值去重后構成的集合元素個數比較少,一般利用One-hot編碼方法將特征轉為數值型。One-hot編碼可以在數據預處理時完成,也可以在模型訓練的時候完成,從訓練時間的角度,后一種方法的實現更為高效,CatBoost對于基數較低的類別型特征也是采用后一種實現。

顯然,在高基數類別型特征(high cardinality features) 當中,比如 user ID,這種編碼方式會產生大量新的特征,造成維度災難。一種折中的辦法是可以將類別分組成有限個的群體再進行One-hot編碼。一種常被使用的方法是根據目標變量統計(Target Statistics,以下簡稱TS)進行分組,目標變量統計用于估算每個類別的目標變量期望值。甚至有人直接用TS作為一個新的數值型變量來代替原來的類別型變量。重要的是,可以通過對TS數值型特征的閾值設置,基于對數損失、基尼系數或者均方差,得到一個對于訓練集而言將類別一分為二的所有可能劃分當中最優的那個。在LightGBM當中,類別型特征用每一步梯度提升時的梯度統計(Gradient Statistics,以下簡稱GS)來表示。雖然為建樹提供了重要的信息,但是這種方法有以下兩個缺點:

  • 增加計算時間,因為需要對每一個類別型特征,在迭代的每一步,都需要對GS進行計算;

  • 增加存儲需求,對于一個類別型變量,需要存儲每一次分離每個節點的類別;

為了克服這些缺點,LightGBM以損失部分信息為代價將所有的長尾類別歸為一類,作者聲稱這樣處理高基數類別型特征時比One-hot編碼還是好不少。不過如果采用TS特征,那么對于每個類別只需要計算和存儲一個數字。

因此,采用TS作為一個新的數值型特征是最有效、信息損失最小的處理類別型特征的方法。TS也被廣泛應用在點擊預測任務當中,這個場景當中的類別型特征有用戶、地區、廣告、廣告發布者等。接下來我們著重討論TS,暫時將One-hot編碼和GS放一邊。

2.2 目標變量統計(Target Statistics)

CatBoost算法的設計初衷是為了更好的處理GBDT特征中的categorical features。在處理 GBDT特征中的categorical features的時候,最簡單的方法是用 categorical feature 對應的標簽的平均值來替換。在決策樹中,標簽平均值將作為節點分裂的標準。這種方法被稱為 Greedy Target-based Statistics , 簡稱 Greedy TS,用公式來表達就是:

402 Payment Required

這種方法有一個顯而易見的缺陷,就是通常特征比標簽包含更多的信息,如果強行用標簽的平均值來表示特征的話,當訓練數據集和測試數據集數據結構和分布不一樣的時候會出條件偏移問題。

一個標準的改進 Greedy TS的方式是添加先驗分布項,這樣可以減少噪聲和低頻率類別型數據對于數據分布的影響:

402 Payment Required

其中??是添加的先驗項,?? 通常是大于 ?? 的權重系數。添加先驗項是一個普遍做法,針對類別數較少的特征,它可以減少噪聲數據。對于回歸問題,一般情況下,先驗項可取數據集label的均值。對于二分類,先驗項是正例的先驗概率。利用多個數據集排列也是有效的,但是,如果直接計算可能導致過擬合。CatBoost利用了一個比較新穎的計算葉子節點值的方法,這種方式(oblivious trees,對稱樹)可以避免多個數據集排列中直接計算會出現過擬合的問題。

當然,在論文《CatBoost: unbiased boosting with categorical features》中,還提到了其它幾種改進Greedy TS的方法,分別有:Holdout TS、Leave-one-out TS、Ordered TS。我這里就不再翻譯論文中的這些方法了,感興趣的同學可以自己翻看一下原論文。

2.3 特征組合

值得注意的是幾個類別型特征的任意組合都可視為新的特征。例如,在音樂推薦應用中,我們有兩個類別型特征:用戶ID和音樂流派。如果有些用戶更喜歡搖滾樂,將用戶ID和音樂流派轉換為數字特征時,根據上述這些信息就會丟失。結合這兩個特征就可以解決這個問題,并且可以得到一個新的強大的特征。然而,組合的數量會隨著數據集中類別型特征的數量成指數增長,因此不可能在算法中考慮所有組合。為當前樹構造新的分割點時,CatBoost會采用貪婪的策略考慮組合。對于樹的第一次分割,不考慮任何組合。對于下一個分割,CatBoost將當前樹的所有組合、類別型特征與數據集中的所有類別型特征相結合,并將新的組合類別型特征動態地轉換為數值型特征。CatBoost還通過以下方式生成數值型特征和類別型特征的組合:樹中選定的所有分割點都被視為具有兩個值的類別型特征,并像類別型特征一樣被進行組合考慮。

2.4 CatBoost處理Categorical features總結

  • 首先會計算一些數據的statistics。計算某個category出現的頻率,加上超參數,生成新的numerical features。這一策略要求同一標簽數據不能排列在一起(即先全是之后全是這種方式),訓練之前需要打亂數據集。

  • 第二,使用數據的不同排列(實際上是個)。在每一輪建立樹之前,先扔一輪骰子,決定使用哪個排列來生成樹。

  • 第三,考慮使用categorical features的不同組合。例如顏色和種類組合起來,可以構成類似于blue dog這樣的特征。當需要組合的categorical features變多時,CatBoost只考慮一部分combinations。在選擇第一個節點時,只考慮選擇一個特征,例如A。在生成第二個節點時,考慮A和任意一個categorical feature的組合,選擇其中最好的。就這樣使用貪心算法生成combinations。

  • 第四,除非向gender這種維數很小的情況,不建議自己生成One-hot編碼向量,最好交給算法來處理。

3. 克服梯度偏差

對于學習CatBoost克服梯度偏差的內容,我提出了三個問題:

  • 為什么會有梯度偏差?

  • 梯度偏差造成了什么問題?

  • 如何解決梯度偏差?

CatBoost和所有標準梯度提升算法一樣,都是通過構建新樹來擬合當前模型的梯度。然而,所有經典的提升算法都存在由有偏的點態梯度估計引起的過擬合問題。在每個步驟中使用的梯度都使用當前模型中的相同的數據點來估計,這導致估計梯度在特征空間的任何域中的分布與該域中梯度的真實分布相比發生了偏移,從而導致過擬合。為了解決這個問題,CatBoost對經典的梯度提升算法進行了一些改進,簡要介紹如下。

許多利用GBDT技術的算法(例如,XGBoost、LightGBM),構建下一棵樹分為兩個階段:選擇樹結構和在樹結構固定后計算葉子節點的值。為了選擇最佳的樹結構,算法通過枚舉不同的分割,用這些分割構建樹,對得到的葉子節點計算值,然后對得到的樹計算評分,最后選擇最佳的分割。兩個階段葉子節點的值都是被當做梯度或牛頓步長的近似值來計算。在CatBoost中,第一階段采用梯度步長的無偏估計,第二階段使用傳統的GBDT方案執行。既然原來的梯度估計是有偏的,那么怎么能改成無偏估計呢?

設??為構建??棵樹后的模型,??為構建??棵樹后第??個訓練樣本上面的梯度值。為了使得??無偏于模型?,我們需要在沒有??參與的情況下對模型??進行訓練。由于我們需要對所有訓練樣本計算無偏的梯度估計,乍看起來對于??的訓練不能使用任何樣本,貌似無法實現的樣子。我們運用下面這個技巧來處理這個問題:對于每一個樣本?,我們訓練一個單獨的模型??,且該模型從不使用基于該樣本的梯度估計進行更新。我們使用??來估計??上的梯度,并使用這個估計對結果樹進行評分。用偽碼描述如下,其中??是需要優化的損失函數,??是標簽值,??是公式計算值。

4. 預測偏移和排序提升

4.1 預測偏移

對于學習預測偏移的內容,我提出了兩個問題:

  • 什么是預測偏移?

  • 用什么辦法解決預測偏移問題?

預測偏移(Prediction shift)是由梯度偏差造成的。在GDBT的每一步迭代中, 損失函數使用相同的數據集求得當前模型的梯度, 然后訓練得到基學習器, 但這會導致梯度估計偏差, 進而導致模型產生過擬合的問題。CatBoost通過采用排序提升 (Ordered boosting) 的方式替換傳統算法中梯度估計方法,進而減輕梯度估計的偏差,提高模型的泛化能力。下面我們對預測偏移進行詳細的描述和分析。

首先來看下GBDT的整體迭代過程:

GBDT算法是通過一組分類器的串行迭代,最終得到一個強學習器,以此來進行更高精度的分類。它使用了前向分布算法,弱學習器使用分類回歸樹(CART)。

假設前一輪迭代得到的強學習器是??, 損失函數是??,則本輪迭代的目的是找到一個CART回歸樹模型的弱學習器??,讓本輪的損失函數最小。式(1)表示的是本輪迭代的目標函數??。

GBDT使用損失函數的負梯度來擬合每一輪的損失的近似值,式(2)中??表示的是上述梯度。

通常用式(3)近似擬合??。

402 Payment Required

最終得到本輪的強學習器,如式(4)所示:

在這個過程當中,偏移是這樣發生的:

根據??進行隨機計算的條件分布??與測試集的分布??發生偏移,這樣由公式(3)定義的基學習器??與公式(1)定義的產生偏差,最后影響模型??的泛化能力。

4.2 排序提升

為了克服預測偏移問題,CatBoost提出了一種新的叫做Ordered boosting的算法。

由上圖的Ordered boosting算法可知,為了得到無偏梯度估計, CatBoost對每一個樣本??都會訓練一個單獨的模型??,模型??由使用不包含樣本的訓練集訓練得到。我們使用??來得到關于樣本的梯度估計,并使用該梯度來訓練基學習器并得到最終的模型。

Ordered boosting算法好是好,但是在大部分的實際任務當中都不具備使用價值,因為需要訓練??個不同的模型,大大增加的內存消耗和時間復雜度。在CatBoost當中,我們以決策樹為基學習器的梯度提升算法的基礎上,對該算法進行了改進。

前面提到過,在傳統的GBDT框架當中,構建下一棵樹分為兩個階段:選擇樹結構和在樹結構固定后計算葉子節點的值。CatBoost主要在第一階段進行優化。在建樹的階段,CatBoost有兩種提升模式,Ordered和Plain。Plain模式是采用內建的ordered TS對類別型特征進行轉化后的標準GBDT算法。Ordered則是對Ordered boosting算法的優化。兩種提升模式的具體介紹可以翻看論文《CatBoost: unbiased boosting with categorical features》。

5. 快速評分

CatBoost使用對稱樹(oblivious trees)作為基預測器。在這類樹中,相同的分割準則在樹的整個一層上使用。這種樹是平衡的,不太容易過擬合。梯度提升對稱樹被成功地用于各種學習任務中。在對稱樹中,每個葉子節點的索引可以被編碼為長度等于樹深度的二進制向量。這在CatBoost模型評估器中得到了廣泛的應用:我們首先將所有浮點特征、統計信息和獨熱編碼特征進行二值化,然后使用二進制特征來計算模型預測值。

6. 基于GPU實現快速訓練

  • 密集的數值特征。 對于任何GBDT算法而言,最大的難點之一就是搜索最佳分割。尤其是對于密集的數值特征數據集來說,該步驟是建立決策樹時的主要計算負擔。CatBoost使用oblivious 決策樹作為基模型,并將特征離散化到固定數量的箱子中以減少內存使用。就GPU內存使用而言,CatBoost至少與LightGBM一樣有效。主要改進之處就是利用了一種不依賴于原子操作的直方圖計算方法。

  • 類別型特征。 CatBoost實現了多種處理類別型特征的方法,并使用完美哈希來存儲類別型特征的值,以減少內存使用。由于GPU內存的限制,在CPU RAM中存儲按位壓縮的完美哈希,以及要求的數據流、重疊計算和內存等操作。通過哈希來分組觀察。在每個組中,我們需要計算一些統計量的前綴和。該統計量的計算使用分段掃描GPU圖元實現。

  • 多GPU支持。 CatBoost中的GPU實現可支持多個GPU。分布式樹學習可以通過數據或特征進行并行化。CatBoost采用多個學習數據集排列的計算方案,在訓練期間計算類別型特征的統計數據。

7. CatBoost的優缺點

7.1 優點

  • 性能卓越: 在性能方面可以匹敵任何先進的機器學習算法;

  • 魯棒性/強健性: 它減少了對很多超參數調優的需求,并降低了過度擬合的機會,這也使得模型變得更加具有通用性;

  • 易于使用: 提供與scikit集成的Python接口,以及R和命令行界面;

  • 實用: 可以處理類別型、數值型特征;

  • 可擴展: 支持自定義損失函數;

7.2 缺點

  • 對于類別型特征的處理需要大量的內存和時間;

  • 不同隨機數的設定對于模型預測結果有一定的影響;

8. CatBoost實例

本篇文章所有數據集和代碼均在我的GitHub中,地址:https://github.com/Microstrong0305/WeChat-zhihu-csdnblog-code/tree/master/Ensemble%20Learning/CatBoost

8.1 安裝CatBoost依賴包

pip install catboost

8.2 CatBoost分類

(1)數據集

這里我使用了 2015 年航班延誤的 Kaggle 數據集,其中同時包含類別型變量和數值變量。這個數據集中一共有約 500 萬條記錄,我使用了 1% 的數據:5 萬行記錄。數據集官方地址:https://www.kaggle.com/usdot/flight-delays#flights.csv 。以下是建模使用的特征:

  • 月、日、星期: 整型數據

  • 航線或航班號: 整型數據

  • 出發、到達機場: 數值數據

  • 出發時間: 浮點數據

  • 距離和飛行時間: 浮點數據

  • 到達延誤情況: 這個特征作為預測目標,并轉為二值變量:航班是否延誤超過 10 分鐘

實驗說明: 在對 CatBoost 調參時,很難對類別型特征賦予指標。因此,同時給出了不傳遞類別型特征時的調參結果,并評估了兩個模型:一個包含類別型特征,另一個不包含。如果未在cat_features參數中傳遞任何內容,CatBoost會將所有列視為數值變量。注意,如果某一列數據中包含字符串值,CatBoost 算法就會拋出錯誤。另外,帶有默認值的 int 型變量也會默認被當成數值數據處理。在 CatBoost 中,必須對變量進行聲明,才可以讓算法將其作為類別型變量處理。

(2)不加Categorical features選項的代碼

import pandas as pd, numpy as np from sklearn.model_selection import train_test_split, GridSearchCV from sklearn import metrics import catboost as cb# 一共有約 500 萬條記錄,我使用了 1% 的數據:5 萬行記錄 # data = pd.read_csv("flight-delays/flights.csv") # data = data.sample(frac=0.1, random_state=10) # 500->50 # data = data.sample(frac=0.1, random_state=10) # 50->5 # data.to_csv("flight-delays/min_flights.csv")# 讀取 5 萬行記錄 data = pd.read_csv("flight-delays/min_flights.csv") print(data.shape) # (58191, 31)data = data[["MONTH", "DAY", "DAY_OF_WEEK", "AIRLINE", "FLIGHT_NUMBER", "DESTINATION_AIRPORT","ORIGIN_AIRPORT", "AIR_TIME", "DEPARTURE_TIME", "DISTANCE", "ARRIVAL_DELAY"]] data.dropna(inplace=True)data["ARRIVAL_DELAY"] = (data["ARRIVAL_DELAY"] > 10) * 1cols = ["AIRLINE", "FLIGHT_NUMBER", "DESTINATION_AIRPORT", "ORIGIN_AIRPORT"] for item in cols:data[item] = data[item].astype("category").cat.codes + 1train, test, y_train, y_test = train_test_split(data.drop(["ARRIVAL_DELAY"], axis=1), data["ARRIVAL_DELAY"],random_state=10, test_size=0.25)cat_features_index = [0, 1, 2, 3, 4, 5, 6]def auc(m, train, test):return (metrics.roc_auc_score(y_train, m.predict_proba(train)[:, 1]),metrics.roc_auc_score(y_test, m.predict_proba(test)[:, 1]))# 調參,用網格搜索調出最優參數 params = {'depth': [4, 7, 10],'learning_rate': [0.03, 0.1, 0.15],'l2_leaf_reg': [1, 4, 9],'iterations': [300, 500]} cb = cb.CatBoostClassifier() cb_model = GridSearchCV(cb, params, scoring="roc_auc", cv=3) cb_model.fit(train, y_train) # 查看最佳分數 print(cb_model.best_score_) # 0.7088001891107445 # 查看最佳參數 print(cb_model.best_params_) # {'depth': 4, 'iterations': 500, 'l2_leaf_reg': 9, 'learning_rate': 0.15}# With Categorical features,用最優參數擬合數據 clf = cb.CatBoostClassifier(eval_metric="AUC", depth=4, iterations=500, l2_leaf_reg=9,learning_rate=0.15)clf.fit(train, y_train)print(auc(clf, train, test)) # (0.7809684655761157, 0.7104617034553192)

(3)有Categorical features選項的代碼

import pandas as pd, numpy as np from sklearn.model_selection import train_test_split, GridSearchCV from sklearn import metrics import catboost as cb# 讀取 5 萬行記錄 data = pd.read_csv("flight-delays/min_flights.csv") print(data.shape) # (58191, 31)data = data[["MONTH", "DAY", "DAY_OF_WEEK", "AIRLINE", "FLIGHT_NUMBER", "DESTINATION_AIRPORT","ORIGIN_AIRPORT", "AIR_TIME", "DEPARTURE_TIME", "DISTANCE", "ARRIVAL_DELAY"]] data.dropna(inplace=True)data["ARRIVAL_DELAY"] = (data["ARRIVAL_DELAY"] > 10) * 1cols = ["AIRLINE", "FLIGHT_NUMBER", "DESTINATION_AIRPORT", "ORIGIN_AIRPORT"] for item in cols:data[item] = data[item].astype("category").cat.codes + 1train, test, y_train, y_test = train_test_split(data.drop(["ARRIVAL_DELAY"], axis=1), data["ARRIVAL_DELAY"],random_state=10, test_size=0.25)cat_features_index = [0, 1, 2, 3, 4, 5, 6]def auc(m, train, test):return (metrics.roc_auc_score(y_train, m.predict_proba(train)[:, 1]),metrics.roc_auc_score(y_test, m.predict_proba(test)[:, 1]))# With Categorical features clf = cb.CatBoostClassifier(eval_metric="AUC", one_hot_max_size=31, depth=4, iterations=500, l2_leaf_reg=9,learning_rate=0.15) clf.fit(train, y_train, cat_features=cat_features_index)print(auc(clf, train, test)) # (0.7817912095285117, 0.7152541135019913)

8.3 CatBoost回歸

from catboost import CatBoostRegressor# Initialize datatrain_data = [[1, 4, 5, 6],[4, 5, 6, 7],[30, 40, 50, 60]]eval_data = [[2, 4, 6, 8],[1, 4, 50, 60]]train_labels = [10, 20, 30] # Initialize CatBoostRegressor model = CatBoostRegressor(iterations=2,learning_rate=1,depth=2) # Fit model model.fit(train_data, train_labels) # Get predictions preds = model.predict(eval_data) print(preds)

9. 關于CatBoost若干問題思考

9.1 CatBoost與XGBoost、LightGBM的聯系與區別?

(1)2014年3月XGBoost算法首次被陳天奇提出,但是直到2016年才逐漸著名。2017年1月微軟發布LightGBM第一個穩定版本。2017年4月Yandex開源CatBoost。自從XGBoost被提出之后,很多文章都在對其進行各種改進,CatBoost和LightGBM就是其中的兩種。

(2)CatBoost處理類別型特征十分靈活,可直接傳入類別型特征的列標識,模型會自動將其使用One-hot編碼,還可通過設置 one_hot_max_size參數來限制One-hot特征向量的長度。如果不傳入類別型特征的列標識,那么CatBoost會把所有列視為數值特征。對于One-hot編碼超過設定的one_hot_max_size值的特征來說,CatBoost將會使用一種高效的encoding方法,與mean encoding類似,但是會降低過擬合。處理過程如下:

  • 將輸入樣本集隨機排序,并生成多組隨機排列的情況;

  • 將浮點型或屬性值標記轉化為整數;

  • 將所有的類別型特征值結果都根據以下公式,轉化為數值結果;

其中 countInClass 表示在當前類別型特征值中有多少樣本的標記值是;prior 是分子的初始值,根據初始參數確定。totalCount 是在所有樣本中(包含當前樣本)和當前樣本具有相同的類別型特征值的樣本數量。

LighGBM 和 CatBoost 類似,也可以通過使用特征名稱的輸入來處理類別型特征數據,它沒有對數據進行獨熱編碼,因此速度比獨熱編碼快得多。LighGBM 使用了一個特殊的算法來確定屬性特征的分割值。

train_data = lgb.Dataset(data, label=label, feature_name=['c1', 'c2', 'c3'], categorical_feature=['c3'])

注意,在建立適用于 LighGBM 的數據集之前,需要將類別型特征變量轉化為整型變量,此算法不允許將字符串數據傳給類別型變量參數。

XGBoost 和 CatBoost、 LighGBM 算法不同,XGBoost 本身無法處理類別型特征,而是像隨機森林一樣,只接受數值數據。因此在將類別型特征數據傳入 XGBoost 之前,必須通過各種編碼方式:例如,序號編碼、獨熱編碼和二進制編碼等對數據進行處理。

10. Reference

CatBoost論文解讀:

【1】Prokhorenkova L, Gusev G, Vorobev A, et al. CatBoost: unbiased boosting with categorical features[C]//Advances in Neural Information Processing Systems. 2018: 6638-6648.
【2】Dorogush A V, Ershov V, Gulin A. CatBoost: gradient boosting with categorical features support[J]. arXiv preprint arXiv:1810.11363, 2018.
【3】機器學習算法之Catboost,地址:https://www.biaodianfu.com/catboost.html
【4】oblivious tree在機器學習中有什么用?- 李大貓的回答 - 知乎 https://www.zhihu.com/question/311641149/answer/593286799
【5】CatBoost算法梳理,地址:http://datacruiser.io/2019/08/19/DataWhale-Workout-No-8-CatBoost-Summary/

CatBoost算法講解:

【6】catboost完全指南,地址:https://zhuanlan.zhihu.com/p/102570430
【7】CatBoost原理及實踐 - Dukey的文章 - 知乎 https://zhuanlan.zhihu.com/p/37916954
【8】 22(7).模型融合---CatBoost,地址:https://www.cnblogs.com/nxf-rabbit75/p/10923549.html#auto_id_0
【9】catboost對類別特征處理的簡單總結,地址:https://blog.csdn.net/weixin_42944192/article/details/102463796
【10】Python3機器學習實踐:集成學習之CatBoost - AnFany的文章 - 知乎 https://zhuanlan.zhihu.com/p/53591724

CatBoost實戰:

【11】Catboost 一個超級簡單實用的boost算法,地址:https://www.jianshu.com/p/49ab87122562
【12】苗豐順, 李巖, 高岑, 王美吉, 李冬梅. 基于CatBoost算法的糖尿病預測方法. 計算機系統應用, 2019, 28(9): 215-218.http://www.c-s-a.org.cn/1003-3254/7054.html
【13】Battle of the Boosting Algos: LGB, XGB, Catboost,地址:https://www.kaggle.com/lavanyashukla01/battle-of-the-boosting-algos-lgb-xgb-catboost
【14】Simple CatBoost,地址:https://www.kaggle.com/nicapotato/simple-catboost
【15】CatBoost Usage examples,地址:https://catboost.ai/docs/concepts/python-usages-examples.html

CatBoost的若干思考:

【16】入門 | 從結構到性能,一文概述XGBoost、Light GBM和CatBoost的同與不同,地址:https://mp.weixin.qq.com/s/TD3RbdDidCrcL45oWpxNmw

往期精彩回顧適合初學者入門人工智能的路線及資料下載(圖文+視頻)機器學習入門系列下載中國大學慕課《機器學習》(黃海廣主講)機器學習及深度學習筆記等資料打印《統計學習方法》的代碼復現專輯 AI基礎下載機器學習交流qq群955171419,加入微信群請掃碼:

總結

以上是生活随笔為你收集整理的【机器学习】深入理解CatBoost的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。