LGBMCclassifier: شروع کرنے کا ایک گائیڈ - KDnuggets

LGBMCclassifier: شروع کرنے کی ایک گائیڈ – KDnuggets

ماخذ نوڈ: 2793517

LGBMCclassifier: ایک شروع کرنے والی گائیڈ
تصویر بذریعہ ایڈیٹر 
 

مشین لرننگ الگورتھم کی ایک بڑی تعداد موجود ہے جو مخصوص مظاہر کے ماڈل کے لیے موزوں ہیں۔ جب کہ کچھ ماڈلز دوسروں کو پیچھے چھوڑنے کے لیے صفات کا ایک مجموعہ استعمال کرتے ہیں، دوسروں میں کمزور سیکھنے والے شامل ہوتے ہیں تاکہ ماڈل کو اضافی معلومات فراہم کرنے کے لیے بقیہ صفات کو استعمال کیا جا سکے، جسے ensemble ماڈل کہا جاتا ہے۔

ملبوس ماڈلز کی بنیاد مختلف ماڈلز کی پیشین گوئیوں کو ملا کر ان کی غلطیوں کو کم کر کے ماڈل کی کارکردگی کو بہتر بنانا ہے۔ جوڑنے کی دو مشہور تکنیکیں ہیں: بیگنگ اور بوسٹنگ۔ 

بیگنگ، عرف بوٹسٹریپڈ ایگریگیشن، متعدد انفرادی ماڈلز کو ٹریننگ ڈیٹا کے مختلف بے ترتیب ذیلی سیٹوں پر تربیت دیتا ہے اور پھر حتمی پیشین گوئی پیدا کرنے کے لیے ان کی پیشین گوئیوں کا اوسط بناتا ہے۔ دوسری طرف، فروغ دینے میں انفرادی ماڈلز کو ترتیب وار تربیت دینا شامل ہے، جہاں ہر ماڈل پچھلے ماڈلز کی غلطیوں کو درست کرنے کی کوشش کرتا ہے۔

اب جب کہ ہمارے پاس ملبوسات کے ماڈلز کے بارے میں سیاق و سباق موجود ہے، آئیے ہم بوسٹنگ انسمبل ماڈل پر ڈبل کلک کریں، خاص طور پر Microsoft کی طرف سے تیار کردہ Light GBM (LGBM) الگورتھم۔ 

LGBMCclassifier کا مطلب ہے Light Gradient Boosting Machine Classifier۔ یہ درجہ بندی، درجہ بندی، اور مشین سیکھنے کے دیگر کاموں کے لیے فیصلہ سازی کے الگورتھم کا استعمال کرتا ہے۔ LGBMCclassifier بڑے پیمانے پر ڈیٹا کو درستگی کے ساتھ ہینڈل کرنے کے لیے گریڈینٹ پر مبنی ون سائیڈ سیمپلنگ (GOSS) اور خصوصی فیچر بنڈلنگ (EFB) کی ایک نئی تکنیک کا استعمال کرتا ہے، مؤثر طریقے سے اسے تیز تر بناتا ہے اور میموری کے استعمال کو کم کرتا ہے۔

گریڈینٹ پر مبنی ون سائیڈ سیمپلنگ (GOSS) کیا ہے؟

روایتی میلان بڑھانے والے الگورتھم تمام ڈیٹا کو تربیت کے لیے استعمال کرتے ہیں، جو بڑے ڈیٹا سیٹس کے ساتھ کام کرتے وقت وقت گزار سکتا ہے۔ دوسری طرف LightGBM کا GOSS، تمام مثالوں کو بڑے گریڈیئنٹس کے ساتھ رکھتا ہے اور چھوٹے گریڈینٹ کے ساتھ مثالوں پر بے ترتیب نمونے لینے کا کام انجام دیتا ہے۔ اس کے پیچھے بصیرت یہ ہے کہ بڑے میلان والی مثالوں کا فٹ ہونا مشکل ہوتا ہے اور اس طرح مزید معلومات لے جاتی ہیں۔ GOSS نمونے لینے کے دوران معلومات کے نقصان کی تلافی کرنے کے لیے چھوٹے گریڈینٹ کے ساتھ ڈیٹا کی مثالوں کے لیے ایک مستقل ضرب متعارف کراتا ہے۔

خصوصی فیچر بنڈلنگ (EFB) کیا ہے؟

ایک ویرل ڈیٹاسیٹ میں، زیادہ تر خصوصیات زیرو ہیں۔ EFB ایک قریب نقصان کے بغیر الگورتھم ہے جو باہمی خصوصی خصوصیات (خصوصیات جو بیک وقت غیر صفر نہیں ہیں) کو بنڈل/ یکجا کر کے طول و عرض کی تعداد کو کم کرتا ہے، اس طرح تربیت کے عمل کو تیز کرتا ہے۔ چونکہ یہ خصوصیات "خصوصی" ہیں، اس لیے اصل خصوصیت کی جگہ کو اہم معلومات کے نقصان کے بغیر برقرار رکھا جاتا ہے۔

LightGBM پیکیج براہ راست pip – python کے پیکیج مینیجر کا استعمال کرتے ہوئے انسٹال کیا جا سکتا ہے۔ لائٹ جی بی ایم لائبریری کو اپنی مشین پر ڈاؤن لوڈ اور انسٹال کرنے کے لیے یا تو ٹرمینل یا کمانڈ پرامپٹ پر نیچے شیئر کی گئی کمانڈ ٹائپ کریں۔

pip install lightgbm

 

ایناکونڈا کے صارفین اسے "کونڈا انسٹال" کمانڈ کا استعمال کرتے ہوئے انسٹال کر سکتے ہیں جیسا کہ ذیل میں درج ہے۔

conda install -c conda-forge lightgbm

 

آپ کے OS کی بنیاد پر، آپ انسٹالیشن کا طریقہ استعمال کر سکتے ہیں۔ اس ہدایت نامہ.

اب، لائٹ جی بی ایم اور دیگر ضروری لائبریریاں درآمد کریں:

import numpy as np
import pandas as pd
import seaborn as sns
import lightgbm as lgb
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split

ڈیٹا سیٹ کی تیاری

ہم مقبول ٹائٹینک ڈیٹاسیٹ استعمال کر رہے ہیں، جس میں ٹائٹینک کے مسافروں کے بارے میں معلومات موجود ہیں، ہدف متغیر کے ساتھ یہ بتاتا ہے کہ آیا وہ بچ گئے یا نہیں۔ آپ ڈیٹا سیٹ سے ڈاؤن لوڈ کر سکتے ہیں۔ کاگل یا اسے سیبورن سے براہ راست لوڈ کرنے کے لیے درج ذیل کوڈ کا استعمال کریں، جیسا کہ ذیل میں دکھایا گیا ہے:

titanic = sns.load_dataset('titanic')

 

غیر ضروری کالم جیسے "ڈیک"، "ایمارک_ٹاؤن"، اور "زندہ" کو گرا دیں کیونکہ یہ بے کار ہیں یا جہاز پر کسی بھی شخص کی بقا میں حصہ نہیں ڈالتے۔ اس کے بعد، ہم نے مشاہدہ کیا کہ خصوصیات "عمر"، "کرایہ"، اور "امبرکڈ" میں قدر نہیں ہے - نوٹ کریں کہ مختلف صفات کو مناسب شماریاتی اقدامات کے ساتھ لگایا جاتا ہے۔

# Drop unnecessary columns
titanic = titanic.drop(['deck', 'embark_town', 'alive'], axis=1) # Replace missing values with the median or mode
titanic['age'] = titanic['age'].fillna(titanic['age'].median())
titanic['fare'] = titanic['fare'].fillna(titanic['fare'].mode()[0])
titanic['embarked'] = titanic['embarked'].fillna(titanic['embarked'].mode()[0])

 

آخر میں، ہم پانڈا کے زمرے والے کوڈز کا استعمال کرتے ہوئے زمرہ واری ایبلز کو عددی متغیر میں تبدیل کرتے ہیں۔ اب، ڈیٹا ماڈل ٹریننگ کا عمل شروع کرنے کے لیے تیار کیا گیا ہے۔

# Convert categorical variables to numerical variables
titanic['sex'] = pd.Categorical(titanic['sex']).codes
titanic['embarked'] = pd.Categorical(titanic['embarked']).codes # Split the dataset into input features and the target variable
X = titanic.drop('survived', axis=1)
y = titanic['survived']

LGBMCclassifier ماڈل کی تربیت

LGBMClassifier ماڈل کی تربیت شروع کرنے کے لیے، ہمیں ڈیٹاسیٹ کو ان پٹ فیچرز اور ٹارگٹ ویریبلز میں تقسیم کرنے کی ضرورت ہے، ساتھ ہی ساتھ ٹرین_ٹیسٹ_اسپلٹ فنکشن کا استعمال کرتے ہوئے ٹریننگ اور ٹیسٹنگ سیٹ کو scikit-learn سے کرنا ہوگا۔

# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

 

آئیے انکوڈ کیٹیگریل ("کون") اور آرڈینل ڈیٹا ("کلاس") کا لیبل لگاتے ہیں تاکہ یہ یقینی بنایا جا سکے کہ ماڈل کو عددی ڈیٹا فراہم کیا گیا ہے، کیونکہ LGBM غیر عددی ڈیٹا استعمال نہیں کرتا ہے۔

class_dict = { "Third": 3, "First": 1, "Second": 2
}
who_dict = { "child": 0, "woman": 1, "man": 2
}
X_train['class'] = X_train['class'].apply(lambda x: class_dict[x])
X_train['who'] = X_train['who'].apply(lambda x: who_dict[x])
X_test['class'] = X_test['class'].apply(lambda x: class_dict[x])
X_test['who'] = X_test['who'].apply(lambda x: who_dict[x])

 

اگلا، ہم ماڈل ہائپر پیرامیٹر کو کنسٹرکٹر کے دلائل کے طور پر بتاتے ہیں، یا ہم انہیں سیٹ_پرمز کے طریقہ کار میں بطور لغت بھیج سکتے ہیں۔  

ماڈل ٹریننگ شروع کرنے کا آخری مرحلہ LGBMCclassifier کلاس کی مثال بنا کر اور اسے ٹریننگ ڈیٹا میں فٹ کر کے ڈیٹا سیٹ کو لوڈ کرنا ہے۔ 

params = { 'objective': 'binary', 'boosting_type': 'gbdt', 'num_leaves': 31, 'learning_rate': 0.05, 'feature_fraction': 0.9
}
clf = lgb.LGBMClassifier(**params)
clf.fit(X_train, y_train)

 

اگلا، آئیے تربیت یافتہ درجہ بندی کرنے والے کی غیب یا ٹیسٹ ڈیٹاسیٹ پر کارکردگی کا جائزہ لیتے ہیں۔

predictions = clf.predict(X_test)
print(classification_report(y_test, predictions))

 

 precision recall f1-score support 0 0.84 0.89 0.86 105 1 0.82 0.76 0.79 74 accuracy 0.83 179 macro avg 0.83 0.82 0.82 179
weighted avg 0.83 0.83 0.83 179

ہائپر پیرامیٹر ٹیوننگ

LGBMCclassifier ہائپر پیرامیٹر کے ذریعے بہت زیادہ لچک پیدا کرنے کی اجازت دیتا ہے جسے آپ بہترین کارکردگی کے لیے ٹیون کر سکتے ہیں۔ یہاں، ہم کچھ اہم ہائپرپیرامیٹرس پر مختصراً بات کریں گے:

  • پتیوں کی تعداد: یہ درخت کے ماڈل کی پیچیدگی کو کنٹرول کرنے کا بنیادی پیرامیٹر ہے۔ مثالی طور پر، num_leaves کی قدر 2^(max_depth) سے کم یا اس کے برابر ہونی چاہیے۔
  • min_data_in_leaf: یہ ایک اہم پیرامیٹر ہے تاکہ پتوں کے حساب سے درخت میں اوور فٹنگ کو روکا جا سکے۔ اس کی بہترین قیمت کا انحصار تربیتی نمونوں کی تعداد اور num_leaves پر ہے۔
  • زیادہ سے زیادہ_گہرائی: آپ اسے درخت کی گہرائی کو واضح طور پر محدود کرنے کے لیے استعمال کر سکتے ہیں۔ اوور فٹنگ کی صورت میں اس پیرامیٹر کو ٹیون کرنا بہتر ہے۔

آئیے ان ہائپر پیرامیٹرز کو ٹیون کریں اور ایک نئے ماڈل کو تربیت دیں:

model = lgb.LGBMClassifier(num_leaves=31, min_data_in_leaf=20, max_depth=5)
model.fit(X_train, y_train)

 

predictions = model.predict(X_test)
print(classification_report(y_test, predictions))

 

 precision recall f1-score support 0 0.85 0.89 0.87 105 1 0.83 0.77 0.80 74 accuracy 0.84 179 macro avg 0.84 0.83 0.83 179
weighted avg 0.84 0.84 0.84 179

 

نوٹ کریں کہ ہائپر پیرامیٹر کی اصل ٹیوننگ ایک ایسا عمل ہے جس میں آزمائش اور غلطی شامل ہوتی ہے اور آپ جس کاروباری مسئلے پر کام کر رہے ہیں اس کے تجربے اور فروغ دینے والے الگورتھم اور موضوع کی مہارت (ڈومین نالج) کی گہری سمجھ سے بھی رہنمائی حاصل کی جا سکتی ہے۔

اس پوسٹ میں، آپ نے LightGBM الگورتھم اور اس کے Python کے نفاذ کے بارے میں سیکھا۔ یہ ایک لچکدار تکنیک ہے جو مختلف قسم کے درجہ بندی کے مسائل کے لیے مفید ہے اور اسے آپ کی مشین لرننگ ٹول کٹ کا حصہ ہونا چاہیے۔
 
 
ودھی چُگ ایک AI سٹریٹجسٹ اور ایک ڈیجیٹل ٹرانسفارمیشن لیڈر ہے جو پراڈکٹ، سائنسز اور انجینئرنگ کے سنگم پر کام کر رہا ہے تاکہ اسکیل ایبل مشین لرننگ سسٹم بنایا جا سکے۔ وہ ایک ایوارڈ یافتہ اختراعی رہنما، مصنفہ اور بین الاقوامی اسپیکر ہیں۔ وہ مشین لرننگ کو جمہوری بنانے اور ہر ایک کے لیے اس تبدیلی کا حصہ بننے کے لیے اس جملے کو توڑنے کے مشن پر ہے۔
 

ٹائم اسٹیمپ:

سے زیادہ KDnuggets