自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

人工智能算法-LightGBM模型詳解

發(fā)布于 2025-4-2 00:30
瀏覽
0收藏

 LightGBM是一個(gè)快速、高效的梯度提升框架,他由微軟開(kāi)發(fā),在數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)領(lǐng)域應(yīng)用廣泛。接下來(lái)詳細(xì)介紹下他的原理

 1. 梯度提升框架:LightGBM基于梯度提升決策樹(shù)(GBDT)算法,通過(guò)迭代地訓(xùn)練決策樹(shù)來(lái)逐步減少預(yù)測(cè)誤差。它將弱學(xué)習(xí)器(如決策樹(shù))組合成一個(gè)強(qiáng)學(xué)習(xí)器,不斷地根據(jù)之前模型的誤差來(lái)調(diào)整新模型的訓(xùn)練,從而提高整體模型的準(zhǔn)確性。

舉例:

假設(shè)有一個(gè)預(yù)測(cè)房?jī)r(jià)的任務(wù),我們有一些房屋的特征數(shù)據(jù),如面積、房間數(shù)、房齡等,目標(biāo)是根據(jù)這些特征預(yù)測(cè)房屋的價(jià)格。LightGBM會(huì)先初始化一個(gè)簡(jiǎn)單的模型,比如預(yù)測(cè)所有房屋價(jià)格都是一個(gè)固定值(可以是房?jī)r(jià)的平均值),這是初始的弱學(xué)習(xí)器。然后,計(jì)算這個(gè)初始模型的預(yù)測(cè)誤差,即真實(shí)房?jī)r(jià)與預(yù)測(cè)房?jī)r(jià)的差值。接下來(lái),根據(jù)這個(gè)誤差來(lái)訓(xùn)練一個(gè)新的決策樹(shù),這個(gè)決策樹(shù)的目標(biāo)是盡量糾正之前模型的誤差。將新的決策樹(shù)與之前的模型結(jié)合起來(lái),得到一個(gè)新的、更準(zhǔn)確的模型。不斷重復(fù)這個(gè)過(guò)程,每次都根據(jù)上一輪模型的誤差來(lái)訓(xùn)練新的決策樹(shù)并加入到模型中,使模型的預(yù)測(cè)能力不斷提升。 

2.  Leaf - Wise生長(zhǎng)策略:與傳統(tǒng)的按層生長(zhǎng)的決策樹(shù)不同,LightGBM采用了Leaf - Wise的生長(zhǎng)方式。它每次選擇增益最大的葉子節(jié)點(diǎn)進(jìn)行分裂,而不是像層生長(zhǎng)那樣在每一層上對(duì)所有節(jié)點(diǎn)同時(shí)進(jìn)行分裂。這種策略可以更快速地找到最優(yōu)的分裂點(diǎn),減少不必要的計(jì)算,提高模型訓(xùn)練速度。

人工智能算法-LightGBM模型詳解-AI.x社區(qū)

舉例:

在構(gòu)建決策樹(shù)時(shí),傳統(tǒng)的按層生長(zhǎng)方式是每一層都對(duì)所有節(jié)點(diǎn)進(jìn)行分裂,不管這個(gè)節(jié)點(diǎn)是否真的有必要分裂。而LightGBM的Leaf - Wise生長(zhǎng)策略會(huì)從根節(jié)點(diǎn)開(kāi)始,每次選擇一個(gè)增益最大的葉子節(jié)點(diǎn)進(jìn)行分裂。例如,在預(yù)測(cè)房?jī)r(jià)的決策樹(shù)中,可能某個(gè)葉子節(jié)點(diǎn)包含的房屋大多是房齡較新且面積較大的,這些房屋的價(jià)格相對(duì)較高且比較集中。如果按照層生長(zhǎng),可能會(huì)對(duì)這個(gè)節(jié)點(diǎn)所在層的其他節(jié)點(diǎn)也進(jìn)行分裂,而那些節(jié)點(diǎn)可能已經(jīng)比較純了,分裂意義不大。但Leaf - Wise策略會(huì)優(yōu)先選擇這個(gè)葉子節(jié)點(diǎn)繼續(xù)分裂,比如根據(jù)房間數(shù)進(jìn)一步細(xì)分,因?yàn)檫@樣可能會(huì)帶來(lái)更大的信息增益,能更精準(zhǔn)地預(yù)測(cè)房?jī)r(jià)。

3. 直方圖算法:LightGBM使用直方圖算法來(lái)優(yōu)化特征的離散化和數(shù)據(jù)的統(tǒng)計(jì)。它將連續(xù)的特征值離散化為有限個(gè)區(qū)間,然后在這些區(qū)間上構(gòu)建直方圖。通過(guò)對(duì)直方圖的統(tǒng)計(jì)和計(jì)算,可以快速找到最優(yōu)的分裂點(diǎn),大大減少了計(jì)算量,同時(shí)也能有效地處理大規(guī)模數(shù)據(jù)。

人工智能算法-LightGBM模型詳解-AI.x社區(qū)

舉例:

假設(shè)我們有一個(gè)房屋面積的特征,其取值范圍是0到1000平方米。LightGBM會(huì)先將這個(gè)連續(xù)的特征值離散化為有限個(gè)區(qū)間,比如0 - 100平方米、100 - 200平方米等。然后,對(duì)于每個(gè)訓(xùn)練數(shù)據(jù)點(diǎn),根據(jù)其房屋面積落入相應(yīng)的區(qū)間,并在該區(qū)間的直方圖中計(jì)數(shù)加1。在尋找最優(yōu)分裂點(diǎn)時(shí),LightGBM只需要在這些離散的區(qū)間上進(jìn)行計(jì)算,而不用像傳統(tǒng)方法那樣對(duì)每個(gè)具體的面積值進(jìn)行遍歷計(jì)算。例如,要判斷在哪個(gè)面積區(qū)間進(jìn)行分裂能使房?jī)r(jià)的預(yù)測(cè)更準(zhǔn)確,只需要比較不同區(qū)間的統(tǒng)計(jì)信息,如區(qū)間內(nèi)房屋的平均價(jià)格、數(shù)量等,大大減少了計(jì)算量。

LightGBM代碼實(shí)現(xiàn)

完整代碼示例(房?jī)r(jià)預(yù)測(cè))

1 數(shù)據(jù)準(zhǔn)備

import lightgbm as lgb

from sklearn.datasets import fetch_california_housing

from sklearn.model_selection import train_test_split

from sklearn.metrics import mean_squared_error

#加載加州房?jī)r(jià)數(shù)據(jù)集

data = fetch_california_housing()

X, y = data.data, data.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

#轉(zhuǎn)換為L(zhǎng)ightGBM Dataset格式

train_data = lgb.Dataset(X_train, label=y_train)

test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)

2 參數(shù)設(shè)置

params = {

'objective': 'regression',

'metric': 'mse',

'boosting_type': 'gbdt',

'num_leaves': 31,

'learning_rate': 0.05,

'feature_fraction': 0.8,

'lambda_l1': 0.1,

'lambda_l2': 0.1,

'max_depth': 5,

'min_data_in_leaf': 20,

'verbose': -1

}

3 模型訓(xùn)練與早停

evals_result = {} # 記錄評(píng)估結(jié)果

model = lgb.train(

params,

train_data,

valid_sets=[train_data, test_data],

valid_names=['train', 'test'],

num_boost_round=1000,

early_stopping_rounds=50,

verbose_eval=50,

evals_result=evals_result

)

4 模型評(píng)估與可視化

#預(yù)測(cè)并計(jì)算RMSE

y_pred = model.predict(X_test)

rmse = mean_squared_error(y_test, y_pred, squared=False)

print(f'Test RMSE: {rmse:.3f}')

#可視化特征重要性

lgb.plot_importance(model, figsize=(10, 6), max_num_features=10)

#繪制訓(xùn)練曲線

lgb.plot_metric(evals_result, metric='mse', figsize=(10, 5))

5 使用SHAP解釋模型

import shap

#創(chuàng)建SHAP解釋器

explainer = shap.TreeExplainer(model)

shap_values = explainer.shap_values(X_test)

#可視化單個(gè)樣本的特征貢獻(xiàn)

shap.force_plot(explainer.expected_value, shap_values[0,:], X_test[0,:], feature_names=data.feature_names)

#全局特征重要性

shap.summary_plot(shap_values, X_test, feature_names=data.feature_names)

LightGBM與XGBoost和CatBoost比較

人工智能算法-LightGBM模型詳解-AI.x社區(qū)


LightGBM過(guò)擬合該如何處理?

1.數(shù)據(jù)層面:確保樣本量> 10,000,避免小數(shù)據(jù)使用LightGBM。

2.參數(shù)調(diào)優(yōu):

  • 降低num_leaves(如從31減至15)。
  • 增大min_data_in_leaf(如從20增至100)。
  • 提高正則化項(xiàng)(lambda_l1和lambda_l2)。

3.早停法:監(jiān)控驗(yàn)證集誤差,提前終止訓(xùn)練。

LightGBM優(yōu)點(diǎn)

 ● 訓(xùn)練速度快:采用了Leaf - Wise生長(zhǎng)策略和直方圖算法等優(yōu)化技術(shù),能夠在較短的時(shí)間內(nèi)處理大規(guī)模數(shù)據(jù)集,提高模型訓(xùn)練效率。

 ● 內(nèi)存占用少:對(duì)數(shù)據(jù)的存儲(chǔ)和計(jì)算進(jìn)行了優(yōu)化,通過(guò)直方圖等數(shù)據(jù)結(jié)構(gòu)來(lái)壓縮數(shù)據(jù),減少了內(nèi)存的使用,適合處理內(nèi)存受限的問(wèn)題。

 ● 可擴(kuò)展性強(qiáng):支持大規(guī)模數(shù)據(jù)集和分布式訓(xùn)練,可以在多臺(tái)機(jī)器上并行訓(xùn)練模型,加速模型的訓(xùn)練過(guò)程,適用于處理海量數(shù)據(jù)的場(chǎng)景。

 ● 魯棒性好:對(duì)數(shù)據(jù)中的噪聲和異常值具有較好的魯棒性,能夠在一定程度上避免過(guò)擬合,提高模型的泛化能力。

本文轉(zhuǎn)載自 ??人工智能訓(xùn)練營(yíng)???,作者: 小A學(xué)習(xí)

收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦