LightGBM এর বেসিক ব্যবহার

লাইটজিবিএম (LightGBM) - Latest Technologies

318

LightGBM এর বেসিক ব্যবহার

LightGBM ব্যবহার করা খুবই সহজ এবং এটি দ্রুত ও কার্যকরী মডেল তৈরি করতে সক্ষম। নিচে LightGBM ব্যবহার করার জন্য একটি মৌলিক গাইডলাইন এবং উদাহরণ দেওয়া হলো:

১. প্রয়োজনীয় লাইব্রেরি ইম্পোর্ট করা

প্রথমে, LightGBM সহ প্রয়োজনীয় লাইব্রেরিগুলি ইম্পোর্ট করুন।

import lightgbm as lgb
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

২. ডেটা লোড করা

এখন একটি ডেটাসেট লোড করুন। এখানে আমরা একটি কাস্টম ডেটাসেট ব্যবহার করতে পারি, যেমন একটি CSV ফাইল।

# ডেটা লোড করা
data = pd.read_csv('your_dataset.csv')  # আপনার ডেটাসেটের নাম দিন
X = data.drop('target_column', axis=1)  # লক্ষ্য কলাম বাদ দিন
y = data['target_column']  # লক্ষ্য কলাম

৩. প্রশিক্ষণ এবং টেস্ট সেটে বিভক্ত করা

ডেটা সেটটিকে প্রশিক্ষণ এবং টেস্ট সেটে ভাগ করুন।

# প্রশিক্ষণ এবং টেস্ট সেটে বিভক্ত করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

৪. LightGBM Dataset তৈরি করা

LightGBM-এ ডেটা সেট তৈরি করতে lgb.Dataset ব্যবহার করুন।

# LightGBM ডেটা সেট তৈরি করুন
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)

৫. হাইপারপ্যারামিটার সেট করা

মডেল প্রশিক্ষণের জন্য কিছু মৌলিক হাইপারপ্যারামিটার সেট করুন।

# হাইপারপ্যারামিটার সেটিং
params = {
    'objective': 'binary',  # বাইনারি ক্লাসিফিকেশন
    'metric': 'binary_logloss',  # লস মেট্রিক
    'boosting_type': 'gbdt',  # গ্রেডিয়েন্ট বুস্টিং
    'verbose': -1
}

৬. মডেল প্রশিক্ষণ

LightGBM মডেলটি প্রশিক্ষণ দেওয়ার জন্য lgb.train ব্যবহার করুন।

# মডেল প্রশিক্ষণ
gbm = lgb.train(params, train_data, num_boost_round=100, valid_sets=test_data, early_stopping_rounds=10)

৭. পূর্বাভাস তৈরি করা

মডেলটি প্রশিক্ষণের পর, টেস্ট ডেটা সেটের উপর পূর্বাভাস তৈরি করুন।

# পূর্বাভাস তৈরি করুন
y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)

৮. ফলাফল বিশ্লেষণ

পূর্বাভাসের ভিত্তিতে সঠিকতা নির্ণয় করুন।

# 0.5 থ্রেশহোল্ড ব্যবহার করে বাইনারি ক্লাসিফিকেশন
y_pred_binary = np.where(y_pred > 0.5, 1, 0)

# সঠিকতা গণনা করুন
accuracy = accuracy_score(y_test, y_pred_binary)
print(f'Accuracy: {accuracy:.2f}')

সারসংক্ষেপ

LightGBM ব্যবহারের মৌলিক ধাপগুলো হলো ডেটা লোড করা, প্রশিক্ষণ ও টেস্ট সেটে বিভক্ত করা, LightGBM Dataset তৈরি করা, হাইপারপ্যারামিটার সেট করা, মডেল প্রশিক্ষণ দেওয়া এবং পূর্বাভাস তৈরি করা। এই উদাহরণটি বাইনারি ক্লাসিফিকেশন টাস্কের জন্য তৈরি করা হয়েছে, তবে LightGBM-এর ব্যবহার রিগ্রেশন, মাল্টি-ক্লাস ক্লাসিফিকেশন এবং অন্যান্য অনেক টাস্কে করা যেতে পারে।

Dataset preparation এবং feature engineering মেশিন লার্নিং প্রক্রিয়ার গুরুত্বপূর্ণ পদক্ষেপ, যা মডেল প্রশিক্ষণের সফলতার উপর প্রভাব ফেলে। নিচে এই দুটি পদক্ষেপের বিস্তারিত ব্যাখ্যা দেওয়া হল।

Dataset Preparation

Dataset preparation বা ডেটাসেট প্রস্তুতি হল ডেটাকে মডেল ট্রেনিংয়ের জন্য প্রস্তুত করার প্রক্রিয়া। এই পর্যায়ে নিম্নলিখিত কার্যাবলীর অন্তর্ভুক্ত রয়েছে:

ডেটা সংগ্রহ:

  • বিভিন্ন উৎস থেকে ডেটা সংগ্রহ করুন, যেমন পাবলিক ডেটাসেট, API, স্ক্র্যাপিং, বা অভ্যন্তরীণ ডেটাবেস।

ডেটা ক্লিনিং:

  • ডেটার মধ্যে অপ্রয়োজনীয় বা ভুল তথ্য মুছে ফেলুন। এটি ডুপ্লিকেট, নষ্ট বা অনুপস্থিত মান সমাধান করা অন্তর্ভুক্ত।

ডেটার ফরম্যাটিং:

  • ডেটা একটি সুনির্দিষ্ট ফরম্যাটে সাজানো প্রয়োজন। যেমন, CSV বা JSON ফাইল ব্যবহার করা।

ডেটা বিভাজন:

  • ডেটাকে সাধারণত তিনটি সেটে বিভক্ত করুন: ট্রেনিং সেট, ভ্যালিডেশন সেট, এবং টেস্ট সেট। এটি মডেল ট্রেনিং, টিউনিং এবং পরীক্ষার জন্য ব্যবহৃত হয়।

ডেটা স্কেলিং:

  • সংখ্যাসূচক ডেটা স্কেলিং প্রয়োজন হতে পারে, যেমন মিন-মান স্কেলিং বা স্ট্যান্ডারাইজেশন, যাতে মডেলটি সঠিকভাবে কাজ করতে পারে।

Feature Engineering

Feature engineering হল ডেটার বৈশিষ্ট্য (features) তৈরি এবং উন্নত করার প্রক্রিয়া। এই পর্যায়ে নিম্নলিখিত কার্যাবলীর অন্তর্ভুক্ত রয়েছে:

নতুন বৈশিষ্ট্য তৈরি:

  • আপনার ডেটা থেকে নতুন বৈশিষ্ট্য তৈরি করুন যা মডেলের পারফরম্যান্স উন্নত করতে পারে। উদাহরণস্বরূপ, দুটি সংখ্যার যোগফল বা গুণফল বের করা।

বৈশিষ্ট্য নির্বাচন:

  • সমস্ত বৈশিষ্ট্য মডেলে কার্যকর নয়। কিছু বৈশিষ্ট্য অপসারণ করা যেতে পারে, যা মডেলের সঠিকতা হ্রাস করতে পারে। ফিচার সিলেকশন টেকনিক ব্যবহার করুন, যেমন করেলেশন অ্যানালিসিস বা Recursive Feature Elimination (RFE)।

ক্যাটাগরিক বৈশিষ্ট্যের এনকোডিং:

  • ক্যাটাগরিকাল বৈশিষ্ট্যগুলিকে মডেলে ব্যবহার করার জন্য সংখ্যা রূপান্তর করা প্রয়োজন। যেমন One-Hot Encoding বা Label Encoding।

বৈশিষ্ট্য রূপান্তর:

  • বৈশিষ্ট্যগুলির রূপান্তর করা হতে পারে, যেমন লোগারিদমিক ট্রান্সফরমেশন, যাতে বৈশিষ্ট্যগুলির মধ্যে সমান প্রভাব থাকে।

বৈশিষ্ট্যগুলির সমন্বয়:

  • বিভিন্ন বৈশিষ্ট্যকে একত্রিত করা হতে পারে একটি নতুন বৈশিষ্ট্য তৈরির জন্য। যেমন, একটি সময়সীমার মধ্যে গড় হিসাব করা।

উপসংহার

Dataset preparation এবং feature engineering মডেল প্রশিক্ষণের জন্য অত্যন্ত গুরুত্বপূর্ণ। সঠিকভাবে সম্পন্ন হলে, এই পদক্ষেপগুলি মডেলের কার্যকারিতা এবং নির্ভুলতা উল্লেখযোগ্যভাবে বৃদ্ধি করে। একটি ভাল প্রস্তুতকৃত ডেটাসেট এবং কার্যকর বৈশিষ্ট্যগুলি একটি শক্তিশালী মডেল তৈরির ভিত্তি।

Categorical Features হল ডেটার সেই বৈশিষ্ট্যগুলি যা নির্দিষ্ট ক্যাটেগরি বা শ্রেণী অনুযায়ী গ্রুপ করা হয়। এগুলি সাধারণত টেক্সট আকারে থাকে এবং শ্রেণীবদ্ধ তথ্য উপস্থাপন করে, যেমন লিঙ্গ (পুরুষ/মহিলা), রং (লাল, নীল, সবুজ), দেশ, ইত্যাদি। মেশিন লার্নিং মডেলগুলি সাধারণত সংখ্যামূলক ইনপুটের উপর ভিত্তি করে কাজ করে, তাই categorical features-এর সঠিক প্রক্রিয়াকরণ অত্যন্ত গুরুত্বপূর্ণ।

Categorical Features-এর কাজ

তথ্য বিশ্লেষণ: Categorical features ডেটা বিশ্লেষণে গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলি শ্রেণীভুক্ত করে বিভিন্ন গোষ্ঠীর মধ্যে সম্পর্ক এবং প্রবণতা বোঝাতে সাহায্য করে।

মডেল প্রশিক্ষণ: মডেলটি প্রশিক্ষণের সময় categorical features ব্যবহার করে বিভিন্ন শ্রেণীতে ডেটা বিভক্ত করতে এবং প্রেডিকশন করতে সক্ষম হয়।

ফিচার ইন্টারঅ্যাকশন: Categorical features বিভিন্ন ফিচারের সাথে ইন্টারঅ্যাক্ট করে এবং ফলস্বরূপ ডেটার মধ্যে সম্পর্ক তৈরি করে, যা মডেলের পূর্বাভাসকে আরও সঠিক করে।

Categorical Features প্রক্রিয়াকরণ

Categorical features প্রক্রিয়াকরণ করার জন্য কয়েকটি সাধারণ পদ্ধতি রয়েছে:

১. Label Encoding

  • প্রতিটি ক্যাটেগরিকে একটি সংখ্যায় রূপান্তর করা হয়। উদাহরণস্বরূপ, "Red" = 0, "Green" = 1, "Blue" = 2।
from sklearn.preprocessing import LabelEncoder

label_encoder = LabelEncoder()
data['color'] = label_encoder.fit_transform(data['color'])

২. One-Hot Encoding

  • প্রতিটি ক্যাটেগরির জন্য একটি নতুন বাইনারি কলাম তৈরি করা হয়। উদাহরণস্বরূপ, "Color" এর জন্য "Red", "Green", "Blue" এর জন্য তিনটি কলাম তৈরি হয়, যেখানে উপস্থাপিত ক্যাটেগরির জন্য 1 এবং অন্যগুলির জন্য 0 থাকে।
import pandas as pd

data = pd.get_dummies(data, columns=['color'])

৩. Target Encoding

  • ক্যাটেগরি মানগুলিকে টার্গেট ভেরিয়েবলের গড় বা অন্য কোনও পরিমাপ দ্বারা প্রতিস্থাপন করা হয়। এটি বিশেষত ফিচারের বিভিন্ন স্তরের মধ্যে সম্পর্ক বোঝার জন্য কার্যকর।
target_mean = data.groupby('color')['target'].mean()
data['color'] = data['color'].map(target_mean)

৪. Frequency Encoding

  • ক্যাটেগরি মানগুলির প্রতি ফিচারের ফ্রিকোয়েন্সি ব্যবহার করা হয়। প্রতিটি ক্যাটেগরির সংখ্যা গুনে তার উপস্থিতি ব্যবহার করা হয়।
frequency = data['color'].value_counts()
data['color'] = data['color'].map(frequency)

৫. Ordinal Encoding

  • যদি ক্যাটেগরিগুলির মধ্যে একটি প্রাকৃতিক ক্রম থাকে (যেমন, ছোট, মাঝারি, বড়), তবে ordinal encoding ব্যবহার করা হয়।
ordinal_mapping = {'small': 1, 'medium': 2, 'large': 3}
data['size'] = data['size'].map(ordinal_mapping)

প্রক্রিয়াকরণের পরে

Categorical features প্রক্রিয়াকরণের পরে, মডেলগুলি সাধারণত সংখ্যামূলক ইনপুটের ভিত্তিতে কাজ করতে প্রস্তুত। এই বৈশিষ্ট্যগুলিকে সঠিকভাবে প্রক্রিয়া করার মাধ্যমে মডেলের কার্যকারিতা এবং সাধারণীকরণ ক্ষমতা বাড়ানো যায়।

উপসংহার

Categorical features ডেটা বিশ্লেষণ ও মডেল তৈরিতে গুরুত্বপূর্ণ ভূমিকা পালন করে। সঠিকভাবে প্রক্রিয়াকরণ এই বৈশিষ্ট্যগুলির কার্যকারিতা উন্নত করতে পারে এবং মডেলের সঠিকতা বাড়াতে সাহায্য করে। বিভিন্ন encoding পদ্ধতিগুলি ব্যবহার করে আপনার ডেটার প্রয়োজন অনুসারে শ্রেণীবদ্ধ তথ্যকে প্রস্তুত করুন।

LightGBM ব্যবহার করার জন্য একটি LGBM Dataset তৈরি করা খুবই সহজ। LightGBM-এর নিজস্ব Dataset ক্লাস ব্যবহার করে আপনি ডেটাকে প্রস্তুত এবং ফরম্যাট করতে পারেন, যা মডেল ট্রেনিংয়ের জন্য উপযোগী। নিচে LightGBM-এর সাথে ডেটাসেট তৈরি করার প্রক্রিয়া বিস্তারিতভাবে আলোচনা করা হলো।

LightGBM Dataset তৈরি করার পদক্ষেপ

১. প্রয়োজনীয় লাইব্রেরি ইনপোর্ট করা

প্রথমে LightGBM এবং অন্যান্য প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করুন।

import lightgbm as lgb
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split

২. ডেটাসেট তৈরি করা

এখন, একটি উদাহরণ ডেটাসেট তৈরি করি। এখানে আমরা একটি কৃত্রিম ডেটাসেট তৈরি করব।

# উদাহরণস্বরূপ, কৃত্রিম ডেটাসেট তৈরি করা
data = np.random.rand(1000, 10)  # 1000টি নমুনা এবং 10টি বৈশিষ্ট্য
labels = np.random.randint(2, size=1000)  # 0 বা 1 লেবেল

# ডেটাসেটকে ডাটা ফ্রেমে রূপান্তর
df = pd.DataFrame(data, columns=[f'feature_{i}' for i in range(10)])
df['label'] = labels

৩. ডেটাকে ট্রেন এবং টেস্ট সেটে ভাগ করা

ডেটাসেটকে প্রশিক্ষণ এবং পরীক্ষার সেটে বিভক্ত করুন।

# ডেটাকে ট্রেন এবং টেস্ট সেটে ভাগ করা
X = df.drop('label', axis=1)
y = df['label']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

৪. LightGBM Dataset তৈরি করা

এখন lgb.Dataset ক্লাস ব্যবহার করে ডেটাসেট তৈরি করুন।

# LightGBM Dataset তৈরি
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)

৫. মডেল প্যারামিটার সেট করা

মডেল প্রশিক্ষণের জন্য কিছু প্যারামিটার সেট করুন।

# মডেল প্যারামিটার সেট করা
params = {
    'objective': 'binary',
    'metric': 'binary_logloss',
    'boosting_type': 'gbdt',
    'learning_rate': 0.1,
    'num_leaves': 31
}

৬. মডেল ট্রেনিং

LightGBM ব্যবহার করে মডেল প্রশিক্ষণ দিন।

# মডেল ট্রেনিং
model = lgb.train(params, train_data, num_boost_round=100, valid_sets=test_data, early_stopping_rounds=10)

সম্পূর্ণ কোড

একত্রিতভাবে, এখানে সম্পূর্ণ কোড রয়েছে:

import lightgbm as lgb
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split

# উদাহরণস্বরূপ, কৃত্রিম ডেটাসেট তৈরি করা
data = np.random.rand(1000, 10)  # 1000টি নমুনা এবং 10টি বৈশিষ্ট্য
labels = np.random.randint(2, size=1000)  # 0 বা 1 লেবেল

# ডেটাসেটকে ডাটা ফ্রেমে রূপান্তর
df = pd.DataFrame(data, columns=[f'feature_{i}' for i in range(10)])
df['label'] = labels

# ডেটাকে ট্রেন এবং টেস্ট সেটে ভাগ করা
X = df.drop('label', axis=1)
y = df['label']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# LightGBM Dataset তৈরি
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)

# মডেল প্যারামিটার সেট করা
params = {
    'objective': 'binary',
    'metric': 'binary_logloss',
    'boosting_type': 'gbdt',
    'learning_rate': 0.1,
    'num_leaves': 31
}

# মডেল ট্রেনিং
model = lgb.train(params, train_data, num_boost_round=100, valid_sets=test_data, early_stopping_rounds=10)

উপসংহার

LightGBM ব্যবহার করে lgb.Dataset তৈরি করা একটি সহজ প্রক্রিয়া, যা আপনাকে মডেল প্রশিক্ষণের জন্য প্রস্তুত করে। উপরের উদাহরণে, একটি কৃত্রিম ডেটাসেট তৈরি করে সেটিকে LightGBM ডেটাসেটে রূপান্তর করা হয়েছে। এটি বাস্তব জীবনের প্রকল্পগুলিতে কাজ করতে শুরু করার জন্য একটি শক্তিশালী ভিত্তি প্রদান করে।

Training এবং Validation Dataset তৈরি করা একটি গুরুত্বপূর্ণ পদক্ষেপ মেশিন লার্নিং প্রকল্পে, যা মডেলের কার্যকারিতা মূল্যায়ন করতে সাহায্য করে। এখানে আমরা একটি উদাহরণের মাধ্যমে দেখাবো কিভাবে Training এবং Validation Dataset তৈরি করা যায়।

উদাহরণ: বাড়ির মূল্য পূর্বাভাস প্রকল্প

আমরা একটি উদাহরণ হিসেবে একটি বাড়ির মূল্য পূর্বাভাস প্রকল্পের জন্য Training এবং Validation Dataset তৈরি করবো।

ধাপ ১: ডেটাসেট সংগ্রহ

একটি ডেটাসেট ব্যবহার করুন, যেমন housing_data.csv

ID,Price,Bedrooms,Bathrooms,Square_Feet,Yard_Size
1,250000,3,2,1500,500
2,300000,4,3,2000,800
3,150000,2,1,900,300
...

ধাপ ২: লাইব্রেরি লোড করা

Python এ প্রয়োজনীয় লাইব্রেরিগুলি লোড করুন।

import pandas as pd
from sklearn.model_selection import train_test_split

ধাপ ৩: ডেটাসেট লোড করা

CSV ফাইল থেকে ডেটাসেট লোড করুন।

# ডেটাসেট লোড করা
data = pd.read_csv('housing_data.csv')

# ডেটা দেখুন
print(data.head())

ধাপ ৪: ফিচার এবং টার্গেট সেট করা

ফিচার এবং টার্গেট ভ্যারিয়েবলগুলি নির্ধারণ করুন।

# ফিচার এবং টার্গেট সেট করা
X = data.drop(['ID', 'Price'], axis=1)  # ID এবং Price বাদ দিন
y = data['Price']

ধাপ ৫: Training এবং Validation Dataset তৈরি করা

train_test_split ফাংশন ব্যবহার করে Training এবং Validation Dataset তৈরি করুন।

# Training এবং Validation Dataset তৈরি
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)

# ফলাফল দেখুন
print(f'Training data size: {X_train.shape[0]}')
print(f'Validation data size: {X_val.shape[0]}')

সারসংক্ষেপ

এই প্রক্রিয়ায়, আমরা একটি CSV ফাইল থেকে ডেটাসেট লোড করেছি, ফিচার এবং টার্গেট ভ্যারিয়েবল নির্ধারণ করেছি এবং train_test_split ফাংশনের মাধ্যমে Training এবং Validation Dataset তৈরি করেছি। সাধারণত 80% ডেটা Training এর জন্য এবং 20% Validation এর জন্য ব্যবহার করা হয়, তবে আপনার প্রকল্পের প্রয়োজন অনুসারে এই অনুপাত পরিবর্তন করা যেতে পারে।

এখন আপনি Training Dataset ব্যবহার করে আপনার মডেল প্রশিক্ষণ দিতে পারেন এবং Validation Dataset ব্যবহার করে মডেলের কার্যকারিতা পরীক্ষা করতে পারেন।

Promotion

Are you sure to start over?

Loading...