π€ΠΠ°ΠΊΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Ρ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ XGBoost, LightGBM ΠΈ CatBoost? Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ Π² ΡΠ°Π·Π½ΠΈΡΠ΅!π
Π Π°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ XGBoost, LightGBM ΠΈ CatBoost Π·Π°ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ .
- XGBoost: ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ XGBoost - ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΠΈΠ½Π³Π° Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅Π³ΡΠ»ΡΡΠΈΠ·Π°ΡΠΈΡ ΠΈ ΡΠ°Π·Π±ΠΈΠ²Π°Π΅Ρ Π΄Π΅ΡΠ΅Π²ΡΡ Π½Π° Π»ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ»ΡΡΡΠΈΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΎΠ². ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ XGBoost:
# ΠΠΌΠΏΠΎΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ XGBoost
import xgboost as xgb
# ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ XGBoost
model = xgb.XGBRegressor()
model.fit(X_train, y_train)
# ΠΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ
y_pred = model.predict(X_test)
# ΠΠΌΠΏΠΎΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ LightGBM
import lightgbm as lgb
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°ΡΠ°ΡΠ΅ΡΠ° LightGBM
train_data = lgb.Dataset(X_train, label=y_train)
# ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ LightGBM
params = {
"objective": "regression",
"metric": "rmse"
}
# ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ LightGBM
model = lgb.train(params, train_data)
# ΠΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ
y_pred = model.predict(X_test)
# ΠΠΌΠΏΠΎΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ CatBoost
from catboost import CatBoostRegressor
# ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ CatBoost
model = CatBoostRegressor()
model.fit(X_train, y_train)
# ΠΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ
y_pred = model.predict(X_test)
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
2 Π² ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ xgboost, LightGBM ΠΈ CatBoost ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
ΠΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ XGBoost, LightGBM ΠΈ CatBoost, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΌΠΎΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΈ. ΠΠ½ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°Ρ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΠΈΠ½Π³Π° ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ ΠΈ ΠΈΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ.
XGBoost: ΠΡΡΠΎΠΊΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΡ
XGBoost ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΈ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΠΈΠ½Π³Π°. ΠΠ½ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΡΡ. ΠΠ³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ:
- Π Π΅Π³ΡΠ»ΡΡΠΈΠ·Π°ΡΠΈΡ: XGBoost ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅Π³ΡΠ»ΡΡΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ L1- ΠΈ L2-ΡΠ΅Π³ΡΠ»ΡΡΠΈΠ·Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π±ΠΎΡΠΎΡΡΡΡ Ρ ΠΏΠ΅ΡΠ΅ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
- ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ: XGBoost ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Ρ ΠΈΡ .
- ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΡΡΠ΅ΡΠΎΠ²: XGBoost ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠ°ΡΡΠ΅ΡΠ° ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΡΡΡΠΊΡΡΡΠ΅ Π΄Π΅ΡΠ΅Π²Π°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΅ΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅.
- ΠΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ : XGBoost Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ .
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ XGBoost:
import xgboost as xgb
# ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ
data = xgb.DMatrix('Π΄Π°Π½Π½ΡΠ΅.csv')
# ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ
params = {
'objective': 'reg:linear',
'eval_metric': 'rmse'
}
# ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ
model = xgb.train(params, data, num_boost_round=10)
# ΠΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅
predictions = model.predict(data)
LightGBM: ΠΡΡΡΡΠΎΡΠ° ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ
LightGBM ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΠΈΠ½Π³Π°, ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΉ ΡΠ²ΠΎΠ΅ΠΉ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡΡ. ΠΠ³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ:
- ΠΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅: LightGBM ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π², ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΅ΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ.
- Π Π°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅: LightGBM ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΡΠΎ ΡΡΠΊΠΎΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ²: LightGBM Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ LightGBM:
import lightgbm as lgb
# ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ
data = lgb.Dataset('Π΄Π°Π½Π½ΡΠ΅.csv')
# ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ
params = {
'objective': 'regression',
'metric': 'rmse'
}
# ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ
model = lgb.train(params, data, num_boost_round=10)
# ΠΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅
predictions = model.predict(data)
CatBoost: Π Π°Π±ΠΎΡΠ° Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ
CatBoost - ΡΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΠΌΠΎΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΠΈΠ½Π³Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ. ΠΠ³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ:
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ²: CatBoost ΠΌΠΎΠΆΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡ Π² ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
- Π‘ΠΆΠ°ΡΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ²: CatBoost ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΆΠ°ΡΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ², ΡΡΠΎΠ±Ρ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΈ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
- Π Π°Π±ΠΎΡΠ° Ρ Π²ΡΠ±ΡΠΎΡΠ°ΠΌΠΈ ΠΈ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ: CatBoost ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π²ΡΠ±ΡΠΎΡΠ°ΠΌΠΈ ΠΈ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ CatBoost:
from catboost import CatBoostRegressor
# ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ
data = pd.read_csv('Π΄Π°Π½Π½ΡΠ΅.csv')
# ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½ΡΡ
X = data.drop('target', axis=1)
y = data['target']
# ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ
params = {
'loss_function': 'RMSE',
'eval_metric': 'RMSE'
}
# ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ
model = CatBoostRegressor(**params)
model.fit(X, y)
# ΠΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅
predictions = model.predict(X)
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ - XGBoost, LightGBM ΠΈ CatBoost - ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°. XGBoost ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΡΡ ΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ, LightGBM ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ Π±ΡΡΡΡΠΎΡΠΎΠΉ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡΡ, Π° CatBoost ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ.
ΠΡΠ±ΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΈ Π²ΡΠ±ΡΠ°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΡΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ»ΡΡΠ°Ρ.