PYTORCH_HOWSAM Telegram 487
سلام
در مسابقه‌های کگل، مدل‌های CatBoost LightGBM XGBoost خیلی محبوب هستند. هر سه مدل از خانواده بوستینگ (Boosting) هستند. این سه عزیز در سایکیت‌لرن وجود ندارند و هرکدام برای خودشان یک لایبرری جداگانه دارند که باید با pip نصب شوند. کار ساده‌ای هست. اتفاقا استفاده از آنها هم خیلی ساده هست. چون شبیه سایکیت‌لرن هستند و همان fit و predict را دارند. حالا حرفمان در این پست چیست؟

این مدل‌ها هایپرپارامترهای بسیار زیادی دارند؛ خیلی‌ها می‌گویند:
در این مدل‌ها باید هایپرپارمترها رو دقیق تنظیم کنی وگرنه قدرت واقعیشون رو نمیبینی.

حالا ما هم می‌خواهیم درمورد همین تنظیم هایپرپارامترها صحبت کنیم...

دو نکته را مدنظر داشته باشید:

اول اینکه، باید تئوری این مدل‌ها را بدانید. تئوری اینها وابسته به دو بحث مدل‌های درخت تصمیم (Decision Trees) و بوستینگ (Boosting) هست. اگه اینها را بدانید، قطعا درک بهتری نسبت به هایپرپارامترها خواهید داشت.

دوم اینکه، در کگل برای تنظیم هایپرپارامترها از لایبرری‌های جانبی مثل Optuna بهره می‌برند. با این لایبرری می‌توانیم یک Grid Search بسازیم تا هایپرپارامترهای مناسب را پیدا کنیم. در ادامه، یک مثال از نحوه ترکیب Optuna با LGBMClassifier را آوردیم...

import lightgbm as lgb
import optuna
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# Load dataset
X, y = load_iris(return_X_y=True)
X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.2, random_state=42)

# Define objective function
def objective(trial):
params = {
'objective': 'multiclass',
'num_class': 3,
'metric': 'multi_logloss',
'verbosity': -1,
'boosting_type': 'gbdt',
'learning_rate': trial.suggest_float('learning_rate', 0.001, 0.1),
'max_depth': trial.suggest_int('max_depth', 2, 10),
'num_leaves': trial.suggest_int('num_leaves', 2, 100),
}

model = lgb.LGBMClassifier(**params)
model.fit(X_train, y_train)
preds = model.predict_proba(X_valid)
log_loss = lgb.log_loss(y_valid, preds)

return log_loss

# Run optimization
study = optuna.create_study(direction='minimize')
study.optimize(objective, n_trials=100)

# Get best hyperparameters
best_params = study.best_params
print("Best hyperparameters:", best_params)


در کد بالا، سه هایپرپارامتر learning_rate max_depth num_leaves را به Optuna داده‌ایم تا از بازه تعریف شده یک عدد انتخاب کند و میزان خطای مدل را حساب کند. ما به دنبال حالتی هستیم که کم‌ترین خطای ممکن حاصل شود. 100 بار انتخاب هایپرپارامترها به‌صورت رندوم انجام می‌شود و نهایتا بهترین هایپرپارامتر براساس کم‌ترین خطا گزارش می‌شود.

@pytorch_howsam



tgoop.com/pytorch_howsam/487
Create:
Last Update:

سلام
در مسابقه‌های کگل، مدل‌های CatBoost LightGBM XGBoost خیلی محبوب هستند. هر سه مدل از خانواده بوستینگ (Boosting) هستند. این سه عزیز در سایکیت‌لرن وجود ندارند و هرکدام برای خودشان یک لایبرری جداگانه دارند که باید با pip نصب شوند. کار ساده‌ای هست. اتفاقا استفاده از آنها هم خیلی ساده هست. چون شبیه سایکیت‌لرن هستند و همان fit و predict را دارند. حالا حرفمان در این پست چیست؟

این مدل‌ها هایپرپارامترهای بسیار زیادی دارند؛ خیلی‌ها می‌گویند:

در این مدل‌ها باید هایپرپارمترها رو دقیق تنظیم کنی وگرنه قدرت واقعیشون رو نمیبینی.

حالا ما هم می‌خواهیم درمورد همین تنظیم هایپرپارامترها صحبت کنیم...

دو نکته را مدنظر داشته باشید:

اول اینکه، باید تئوری این مدل‌ها را بدانید. تئوری اینها وابسته به دو بحث مدل‌های درخت تصمیم (Decision Trees) و بوستینگ (Boosting) هست. اگه اینها را بدانید، قطعا درک بهتری نسبت به هایپرپارامترها خواهید داشت.

دوم اینکه، در کگل برای تنظیم هایپرپارامترها از لایبرری‌های جانبی مثل Optuna بهره می‌برند. با این لایبرری می‌توانیم یک Grid Search بسازیم تا هایپرپارامترهای مناسب را پیدا کنیم. در ادامه، یک مثال از نحوه ترکیب Optuna با LGBMClassifier را آوردیم...

import lightgbm as lgb
import optuna
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# Load dataset
X, y = load_iris(return_X_y=True)
X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.2, random_state=42)

# Define objective function
def objective(trial):
params = {
'objective': 'multiclass',
'num_class': 3,
'metric': 'multi_logloss',
'verbosity': -1,
'boosting_type': 'gbdt',
'learning_rate': trial.suggest_float('learning_rate', 0.001, 0.1),
'max_depth': trial.suggest_int('max_depth', 2, 10),
'num_leaves': trial.suggest_int('num_leaves', 2, 100),
}

model = lgb.LGBMClassifier(**params)
model.fit(X_train, y_train)
preds = model.predict_proba(X_valid)
log_loss = lgb.log_loss(y_valid, preds)

return log_loss

# Run optimization
study = optuna.create_study(direction='minimize')
study.optimize(objective, n_trials=100)

# Get best hyperparameters
best_params = study.best_params
print("Best hyperparameters:", best_params)


در کد بالا، سه هایپرپارامتر learning_rate max_depth num_leaves را به Optuna داده‌ایم تا از بازه تعریف شده یک عدد انتخاب کند و میزان خطای مدل را حساب کند. ما به دنبال حالتی هستیم که کم‌ترین خطای ممکن حاصل شود. 100 بار انتخاب هایپرپارامترها به‌صورت رندوم انجام می‌شود و نهایتا بهترین هایپرپارامتر براساس کم‌ترین خطا گزارش می‌شود.

@pytorch_howsam

BY PyTorch Howsam


Share with your friend now:
tgoop.com/pytorch_howsam/487

View MORE
Open in Telegram


Telegram News

Date: |

Activate up to 20 bots The group’s featured image is of a Pepe frog yelling, often referred to as the “REEEEEEE” meme. Pepe the Frog was created back in 2005 by Matt Furie and has since become an internet symbol for meme culture and “degen” culture. For crypto enthusiasts, there was the “gm” app, a self-described “meme app” which only allowed users to greet each other with “gm,” or “good morning,” a common acronym thrown around on Crypto Twitter and Discord. But the gm app was shut down back in September after a hacker reportedly gained access to user data. How to create a business channel on Telegram? (Tutorial) Today, we will address Telegram channels and how to use them for maximum benefit.
from us


Telegram PyTorch Howsam
FROM American