国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

深深圳市建設局網(wǎng)站百度競價培訓

深深圳市建設局網(wǎng)站,百度競價培訓,wordpress頂部代碼,高端網(wǎng)站建設css3動畫響應式模板??覺得內(nèi)容不錯的話,歡迎點贊收藏加關(guān)注😊😊😊,后續(xù)會繼續(xù)輸入更多優(yōu)質(zhì)內(nèi)容??👉有問題歡迎大家加關(guān)注私戳或者評論(包括但不限于NLP算法相關(guān),linux學習相關(guān),讀研讀博…

??覺得內(nèi)容不錯的話,歡迎點贊收藏加關(guān)注😊😊😊,后續(xù)會繼續(xù)輸入更多優(yōu)質(zhì)內(nèi)容??

👉有問題歡迎大家加關(guān)注私戳或者評論(包括但不限于NLP算法相關(guān),linux學習相關(guān),讀研讀博相關(guān)......)👈

GBDT

(封面圖由ERNIE-ViLG AI 作畫大模型生成)

Boosting三巨頭:XGBoost、LightGBM和CatBoost(發(fā)展、原理、區(qū)別和聯(lián)系,附代碼和案例)

機器學習中,提高模型精度是研究的重點之一,而模型融合技術(shù)中,Boosting算法是一種常用的方法。在Boosting算法中,XGBoost、LightGBM和CatBoost是三個最為流行的框架。它們在實際使用中有各自的優(yōu)勢和適用場景,下面將會介紹它們的區(qū)別與聯(lián)系。

1. 算法原理

1.1 XGBoost

XGBoost是由陳天奇等人提出的一個優(yōu)化的Gradient Boosting算法,以其出色的表現(xiàn)和可擴展性而受到廣泛關(guān)注。XGBoost使用了C++實現(xiàn),可以運行在多個平臺上,并支持多種編程語言,如Python、R、Java等。其原理可以概括為將弱學習器依次加入到一個全局的加權(quán)模型中,每一輪迭代都在損失函數(shù)的梯度方向上優(yōu)化模型。它在原有GBDT的基礎(chǔ)上,添加了正則化項和缺失值處理,使得模型更加穩(wěn)定和準確。其原理如下:

首先,假設有n個訓練樣本(xi,yi)(x_{i}, y_{i})(xi?,yi?),其中xix_{i}xi?為輸入特征,yiy_{i}yi?為輸出值。那么,目標就是找到一個函數(shù)f(x),使得f(x)f(x)f(x)可以預測yyy的值。

其次,定義損失函數(shù)L(y,f(x))L(y, f(x))L(y,f(x)),用來度量f(x)f(x)f(x)的預測值與實際值之間的誤差。

再次,我們使用Boosting算法來不斷迭代提高模型精度。假設現(xiàn)在已經(jīng)有了一個弱分類器fm?1(x)f_{m-1}(x)fm?1?(x),那么我們希望找到一個新的弱分類器fm(x)f_{m}(x)fm?(x)來減少L(y,f(x))L(y, f(x))L(y,f(x))的值。于是我們在已有的弱分類器fm?1(x)f_{m-1}(x)fm?1?(x)基礎(chǔ)上,加上一個新的弱分類器fm(x)f_{m}(x)fm?(x),最終得到新的分類器fm(x)=fm?1(x)+γhm(x)f_{m}(x)=f_{m-1}(x)+\gamma h_{m}(x)fm?(x)=fm?1?(x)+γhm?(x),其中γ\gammaγ為學習率,hm(x)h_{m}(x)hm?(x)為新的弱分類器。

最后,由于XGBoost使用了正則化項來控制模型的復雜度,并采用了特殊的梯度下降方法進行訓練,使得其在處理高維稀疏數(shù)據(jù)時,具有較好的效果。

1.2 LightGBM

LightGBM是由微軟提出的一種基于Histogram算法的Gradient Boosting框架。它通過對樣本特征值進行離散化,將連續(xù)特征離散化為有限個整數(shù),從而將高維稀疏數(shù)據(jù)轉(zhuǎn)化為低維稠密數(shù)據(jù),從而加速了訓練速度。相比XGBoost,LightGBM的最大優(yōu)勢在于其快速的訓練速度和較小的內(nèi)存占用,這主要得益于其采用了基于直方圖的決策樹算法和局部優(yōu)化等技術(shù)。LightGBM的核心思想是在構(gòu)造決策樹時,將連續(xù)特征離散化為若干個桶,然后將每個桶作為一個離散特征對待,從而加速樹的構(gòu)建和訓練過程。其原理如下:

首先,對于每個特征,我們需要將其離散化為一些桶,每個桶中包含一些連續(xù)的特征值。在訓練時,我們只需要計算每個桶中的樣本的統(tǒng)計信息(如平均值和方差),而不需要計算每個樣本的特征值,從而減少了計算量。

其次,對于每個樣本,我們根據(jù)離散化后的特征值,將其歸入對應的桶中,然后計算桶中樣本的統(tǒng)計信息。接著,我們通過梯度單邊采樣(GOSS)算法,選擇一部分樣本進行訓練,這些樣本中包含了大部分的梯度信息,從而保證了訓練的準確性和效率。

最后,LightGBM還使用了基于直方圖的決策樹算法,使得在處理高維稀疏數(shù)據(jù)時,具有較好的效果。

1.3 CatBoost

CatBoost是由Yandex提出的一種基于梯度提升算法的開源機器學習框架。它在處理分類問題時,可以自動處理類別特征,無需手動進行特征編碼。CatBoost的原理與XGBoost和LightGBM類似,同樣是通過將多個弱學習器組合成一個強學習器。不同之處在于,CatBoost使用了一種新的損失函數(shù),即加權(quán)交叉熵損失函數(shù),可以有效地處理類別不平衡問題。其原理如下:

首先,CatBoost使用了一種稱為Ordered Boosting的算法來提高模型精度。Ordered Boosting可以看做是一種特殊的特征選擇方法,它將訓練樣本按照特征值大小排序,然后使用分段線性模型擬合每一段特征值的梯度,從而提高了模型的擬合能力。

其次,CatBoost在處理分類問題時,可以自動處理類別特征。它使用了一種稱為Target Encoding的方法,將類別特征轉(zhuǎn)化為一組實數(shù)值,從而避免了手動進行特征編碼的麻煩。

最后,CatBoost還使用了基于對稱樹的決策樹算法,使得在處理高維稀疏數(shù)據(jù)時,具有較好的效果。

2. 發(fā)展前景和應用場景

XGBoost、LightGBM和CatBoost作為目前最先進的梯度提升算法,在許多數(shù)據(jù)科學競賽和實際應用中都取得了很好的效果。隨著大數(shù)據(jù)時代的到來,這三種算法的應用場景也越來越廣泛。

其中,XGBoost在傳統(tǒng)機器學習領(lǐng)域仍然是最常用的算法之一,特別是在結(jié)構(gòu)化數(shù)據(jù)的分類、回歸和排序任務中表現(xiàn)突出。LightGBM在大規(guī)模數(shù)據(jù)集和高維度數(shù)據(jù)上表現(xiàn)更佳,適用于處理文本分類、圖像分類、推薦系統(tǒng)等領(lǐng)域的數(shù)據(jù)。CatBoost在處理類別特征和缺失值方面表現(xiàn)出色,適用于電商推薦、醫(yī)療預測、金融風控等領(lǐng)域的數(shù)據(jù)。

總的來說,XGBoost、LightGBM和CatBoost作為梯度提升算法的代表,都具有自身的優(yōu)勢和適用場景,隨著數(shù)據(jù)和計算能力的不斷提升,它們的應用前景也會越來越廣闊。

3. 使用案例

3.1 XGBoost

XGBoost可以應用于多種場景,如回歸、分類、排序等。下面以Kaggle競賽中的房價預測問題為例,展示如何使用XGBoost進行模型訓練和預測。

首先,我們使用Pandas讀取數(shù)據(jù)集,并將其劃分為訓練集和測試集。

import pandas as pd
from sklearn.model_selection import train_test_splitdf = pd.read_csv('train.csv')
X = df.drop('SalePrice', axis=1)
y = df['SalePrice']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

接著,我們使用XGBoost的Python接口進行模型訓練和預測。

import xgboost as xgb
from sklearn.metrics import mean_squared_errordtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test)params = {'max_depth': 3, 'learning_rate': 0.1, 'objective': 'reg:squarederror'}
num_rounds = 100model = xgb.train(params, dtrain, num_rounds)
y_pred = model.predict(dtest)mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)

上述代碼中,我們首先使用xgb.DMatrix將訓練數(shù)據(jù)轉(zhuǎn)化為DMatrix格式。接著,我們定義了模型參數(shù),并設置了迭代次數(shù)為100。然后,我們使用xgb.train函數(shù)進行模型訓練,并使用model.predict函數(shù)進行模型預測。最后,我們使用sklearn.metrics.mean_squared_error函數(shù)計算了模型的均方誤差。

3.2 LightGBM

LightGBM可以應用于多種場景,如回歸、分類、排序等。下面以Kaggle競賽中的鳶尾花分類問題為例,展示如何使用LightGBM進行模型訓練和預測。

首先,我們使用Pandas讀取數(shù)據(jù)集,并將其劃分為訓練集和測試集。

import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_splitdata = load_iris()
df = pd.DataFrame(data.data, columns=data.feature_names)
df['target'] = data.targetX = df.drop('target', axis=1)
y = df['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

接著,我們使用LightGBM的Python接口進行模型訓練和預測。

import lightgbm as lgb
from sklearn.metrics import accuracy_scoredtrain = lgb.Dataset(X_train, label=y_train)
dtest = lgb.Dataset(X_test, label=y_test)params = {'objective': 'multiclass', 'num_class': 3, 'metric': 'multi_logloss'}
num_rounds = 100model = lgb.train(params, dtrain, num_rounds)
y_pred = model.predict(X_test)y_pred = [list(x).index(max(x)) for x in y_pred]
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

上述代碼中,我們首先使用lgb.Dataset將訓練數(shù)據(jù)轉(zhuǎn)化為Dataset格式。接著,我們定義了模型參數(shù),并設置了迭代次數(shù)為100。然后,我們使用lgb.train函數(shù)進行模型訓練,并使用model.predict函數(shù)進行模型預測。最后,我們使用sklearn.metrics.accuracy_score函數(shù)計算了模型的準確率。

3.3 CatBoost

import catboost as cb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_scoreiris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)train_data = cb.Pool(X_train, label=y_train)
test_data = cb.Pool(X_test, label=y_test)params = {'loss_function': 'MultiClass', 'num_class': 3, 'eval_metric': 'Accuracy'}num_rounds = 20
bst = cb.train(params, train_data, num_rounds)preds = bst.predict(X_test)
y_pred = [np.argmax(pred) for pred in preds]acc = accuracy_score(y_test, y_pred)
print("Accuracy:", acc)

綜合展示

為了更好地展示XGBoost、LightGBM和CatBoost的應用場景和效果,我們以波士頓房價預測數(shù)據(jù)集為例進行實驗。

首先,我們使用sklearn庫中的load_boston函數(shù)加載數(shù)據(jù)集,并對數(shù)據(jù)進行劃分,80%用于訓練,20%用于測試。

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_splitdata = load_boston()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

然后,我們依次使用XGBoost、LightGBM和CatBoost訓練模型,并對模型進行評估。

import xgboost as xgb
from lightgbm import LGBMRegressor
from catboost import CatBoostRegressor
from sklearn.metrics import mean_squared_error# XGBoost
xgb_model = xgb.XGBRegressor(n_estimators=100, max_depth=5, learning_rate=0.1, random_state=42)
xgb_model.fit(X_train, y_train)
xgb_pred = xgb_model.predict(X_test)
xgb_rmse = mean_squared_error(y_test, xgb_pred, squared=False)# LightGBM
lgb_model = LGBMRegressor(n_estimators=100, max_depth=5, learning_rate=0.1, random_state=42)
lgb_model.fit(X_train, y_train)
lgb_pred = lgb_model.predict(X_test)
lgb_rmse = mean_squared_error(y_test, lgb_pred, squared=False)# CatBoost
cat_model = CatBoostRegressor(n_estimators=100, max_depth=5, learning_rate=0.1, random_seed=42, silent=True)
cat_model.fit(X_train, y_train)
cat_pred = cat_model.predict(X_test)
cat_rmse = mean_squared_error(y_test, cat_pred, squared=False)print("XGBoost RMSE: {:.2f}".format(xgb_rmse))
print("LightGBM RMSE: {:.2f}".format(lgb_rmse))
print("CatBoost RMSE: {:.2f}".format(cat_rmse))

參考文獻

[1] Chen, T., & Guestrin, C. (2016). Xgboost: A scalable tree boosting system. In Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining (pp. 785-794).
[2] Ke, G., Meng, Q., Finley, T., Wang, T., Chen, W., Ma, W., … & Liu,
G. (2017). Lightgbm: A highly efficient gradient boosting decision tree. In Advances in Neural Information Processing Systems (pp. 3146-3154).
[3] Prokhorenkova, L., Gusev, G., Vorobev, A., Dorogush, A. V., & Gulin, A. (2018). CatBoost: unbiased boosting with categorical features. In Advances in neural information processing systems (pp. 6638-6648).
[4] XGBoost官方文檔:https://xgboost.readthedocs.io/en/latest/
[5] LightGBM官方文檔:https://lightgbm.readthedocs.io/en/latest/
[6] CatBoost官方文檔:https://catboost.ai/docs/
[7] 《Python機器學習基礎(chǔ)教程》(吳斌):介紹了XGBoost、LightGBM和CatBoost的使用方法和實例。
[8] 《Applied Machine Learning》(Kelleher, John D.):介紹了各種機器學習算法,其中也包括了梯度提升算法和其變種。
[9] 《Hands-On Gradient Boosting with XGBoost and scikit-learn》(Villalba, Benjamin):詳細介紹了XGBoost和scikit-learn庫的梯度提升實現(xiàn)。
[10] 《Gradient Boosting》(Friedman, Jerome H.):介紹了梯度提升算法的基本思想和實現(xiàn)原理。


??覺得內(nèi)容不錯的話,歡迎點贊收藏加關(guān)注😊😊😊,后續(xù)會繼續(xù)輸入更多優(yōu)質(zhì)內(nèi)容??

👉有問題歡迎大家加關(guān)注私戳或者評論(包括但不限于NLP算法相關(guān),linux學習相關(guān),讀研讀博相關(guān)......)👈

http://aloenet.com.cn/news/28190.html

相關(guān)文章:

  • 投資手機網(wǎng)站源碼廣告聯(lián)盟平臺排名
  • 順德企業(yè)手機網(wǎng)站建設怎么讓百度搜出自己
  • wordpress首頁不加載圖片小紅書seo排名優(yōu)化
  • 重點建設政協(xié)網(wǎng)站百度推廣公司
  • 轉(zhuǎn)播網(wǎng)站如何做鄭州seo顧問熱狗
  • 佛山做外貿(mào)網(wǎng)站哪家好商旅平臺app下載
  • 建行的官方網(wǎng)站武漢seo首頁優(yōu)化報價
  • aws搭建wordpress優(yōu)化網(wǎng)站建設seo
  • 北京模板開發(fā)建站網(wǎng)站如何做關(guān)鍵詞優(yōu)化
  • 網(wǎng)站建設包括哪些技術(shù)營業(yè)推廣策劃方案
  • 二手交易平臺的網(wǎng)站怎么做營銷平臺
  • 廣州白云做網(wǎng)站的公司網(wǎng)絡銷售怎么聊客戶
  • 邢臺哪兒做wap網(wǎng)站好建站軟件
  • 網(wǎng)站首頁只顯示域名seo關(guān)鍵詞優(yōu)化提高網(wǎng)站排名
  • 天津西青區(qū)疫情最新消息今天手機網(wǎng)站優(yōu)化排名
  • 簡述網(wǎng)站開發(fā)的幾個步驟搜索熱度和搜索人氣
  • 有做車身拉花的網(wǎng)站嗎seo學校
  • 做網(wǎng)站買什么筆記本好外鏈發(fā)布工具下載
  • 咖啡網(wǎng)站開發(fā)背景怎么寫微博指數(shù)查詢
  • 自己電腦做服務器發(fā)布網(wǎng)站電商營銷推廣有哪些?
  • 我自己做的網(wǎng)站打開很慢鄭州seo哪家好
  • 網(wǎng)站備案 視頻百度引流免費推廣怎么做
  • 設計一個網(wǎng)站西安發(fā)布最新通知
  • 網(wǎng)站開發(fā)發(fā)展前景seo推廣和百度推廣的區(qū)別
  • wordpress模板怎么添加菜單百度seo排名優(yōu)化教程
  • 如何做新政府網(wǎng)站欄目網(wǎng)站建設制作流程
  • 湖南省建設安監(jiān)局官網(wǎng)站朋友圈推廣文案
  • 全國建筑業(yè)四庫一平臺seo賺錢暴利
  • 河南鄭州網(wǎng)站推廣優(yōu)化淘寶優(yōu)化關(guān)鍵詞的步驟
  • 找人開發(fā)一個app多少錢網(wǎng)站建設排名優(yōu)化