Regression tree
(CART) and
classification এর মৌলিক বিষয় সমূহ।
CART এছাড়াও একটি predictive mode যা অন্যান্য
labeled variable গুলির উপর ভিত্তি করে ভেরিয়েবল সন্ধান করতে
সহায়তা করে।
আপনি হয়তো দীর্ঘ সময় ধরে tree মডেল ব্যবহার করছেন
অথবা একজন নতুন, কিন্তু, আপনি কি কখনো ভেবে
দেখেছেন যে এটি আসলে কিভাবে কাজ করে এবং কিভাবে এটি অন্যান্য অ্যালগরিদম থেকে আলাদা? এখানে, আমি আমার উপলব্ধির
জন্য কিছু অংশ শেয়ার করছি।
আরও পরিষ্কার হওয়ার জন্য tree মডেলগুলি যদি অন্য
কোনও tree মডেল কে প্রশ্ন জিজ্ঞাসা করে
ফলাফলের predict/পূর্বাভাস দেয়।
গাছ মডেল ব্যবহার দুটি প্রধান সুবিধা আছে,
1.
তারা ডেটাসেটে non-linearity ক্যাপচার করতে সক্ষম।
2.
Tree মডেলগুলি ব্যবহার
করার সময় ডেটা Standardization মানের প্রয়োজন হয় না। কারন
তারা কোনও euclidean /ইউক্যালিডিয়ান (জ্যামিতির সাথে সম্পর্কিত )দূরত্ব বা ডেটাগুলির মধ্যে
other measuring factors গুলি গণনা করে না।
Nuts and Bolts of Trees
উপরে দেখানো হয়েছে
Decision
Tree Classifier একটি ছবি। প্রতিটি রাউন্ড Nodes নামে পরিচিত। প্রতিটি Nodes একটি লেবেল করা চলকের/labeled variable উপর ভিত্তি করে
অন্য একটি কে ধারা থাকবে। এই প্রশ্নের উপর ভিত্তি করে ইনপুটের
প্রতিটি উদাহরণ একটি নির্দিষ্ট leaf-node নির্দেশ/রুট করা হবে
যা চূড়ান্ত ভবিষ্যদ্বাণী কে বলবে। তিন ধরনের নোড আছে।
1.
Root Node/রুট নোড: কোন পেরেন্ট নোড নেই, এবং প্রশ্নের উপর
ভিত্তি করে দুটি শিশু নোড দেয়
doesn’t
have any parent node, and gives two children nodes based on the question
2.
Internal Node/অভ্যন্তরীণ
নোড: এটি তে পেরেন্ট নোড থাকবে, এবং দুটি সন্তান নোড
দেয়। it will have a parent node, and
gives two children nodes
3.
Leaf Node/লিফ নোড: এটি
তে পেরেন্ট নোড থাকবে, কিন্তু কোন সন্তান নোড থাকবে না it will also
have a parent node, but won’t have any children nodes
আমাদের স্তরের সংখ্যা max_depth নামে পরিচিত। উপরের
নকশায় max_depth = 3। max_depth বাড়ার সাথে সাথে,
মডেল জটিলতাও বৃদ্ধি পাবে। আমরা প্রশিক্ষণ দেওয়ার সময়। যদি আমরা এটি বৃদ্ধি। training error /প্রশিক্ষণের ত্রুটি
সর্বদা হ্রাস পাবে বা একই থাকবে। তবে এটি কখনও
কখনও পরীক্ষার ত্রুটি বাড়িয়ে তুলতে পারে। যখন আমরা প্রশিক্ষণ যদি আমরা এটা বৃদ্ধি
করি, প্রশিক্ষণ
ত্রুটি সবসময় নিচে নেমে যাবে অথবা একই থাকবে। কিন্তু এটা কখনও কখনও পরীক্ষার ত্রুটি
বাড়াতে পারে। তাই আমাদের এই মডেলের জন্য max_depth নির্বাচন করার সময়
পছন্দসই ভাবে বেছে নিতে হবে।
নোড সম্পর্কে আরও একটি আকর্ষণীয় বিষয়
হ'ল Information
gain(IR) । একটি নোডের বিশুদ্ধতা পরিমাপ করতে ব্যবহৃত
হয় একটি মানদণ্ড। খাঁটি কোনও নোড আইটেমগুলিকে বিভক্ত করতে কতটা
চালাক তার ভিত্তিতে বিশুদ্ধতা পরিমাপ করা হয়। হয়। ধরা যাক আপনি নোডে আছেন এবং আপনি
বাম বা ডানদিকে যেতে চান। তবে আপনার কাছে প্রতিটি নোডে একই পরিমাণে (50-50) আইটেমগুলি উভয় শ্রেণীর
অন্তর্গত। তবে উভয় শ্রেণীর বিশুদ্ধতা কম কারণ আপনি জানেন না কোন দিকটি বেছে নেবেন।
একটি সিদ্ধান্ত নিতে অন্যের তুলনায় উচ্চতর হতে হবে। এটি জন্য IR ব্যবহার করে পরিমাপ করা হয।
Equation of IG for Classification Tree (PC: Data Camp)
Equation of IG for Classification Tree (PC: Data Camp)
নাম নিজেই বলে, CART এর লক্ষ্য হচ্ছে তার
লেবেল যুক্ত মানের উপর ভিত্তি করে কোন শ্রেণীর ইনপুট উদাহরণ সম্পর্কে predict করা। এটা সম্পন্ন করার জন্য এটি Decision
Boundaries ব্যবহার করে Decision Regions তৈরি
করবে। কল্পনা করুন আমাদের একটি 2D
ডাটা সেট আছে,
এইভাবে, যদি প্রতিটি নোড অন্য
প্রশ্নর উপর ভিত্তি করে আমাদের multidimensional dataset কে Decision Regions আলাদা করে দিতে পারে। CART মডেল গুলি রৈখিক মডেল চেয়ে আরো সঠিক সিদ্ধান্ত অঞ্চল খুঁজে পেতে পারে এবং CART দ্বারা decision regions
সাধারণত rectangular shaped মত হয়ে থাকে ,কারণ
সিদ্ধান্ত গ্রহণের প্রতিটি নোডে শুধুমাত্র একটি feature involved /জড়িত। আপনি এটা নিচে কল্পনা করতে পারেন।
Classification Tree
#use a seed value for reusability
SEED = 1
# Import DecisionTreeClassifier from sklearn.tree
from sklearn.tree import DecisionTreeClassifier
# Instantiate a DecisionTreeClassifier
# You can specify other parameters like criterion refer
sklearn documentation for Decision
tree. or try dt.get_params()
dt = DecisionTreeClassifier(max_depth=6, random_state=SEED)
# Fit dt to the training set
dt.fit(X_train, y_train)
# Predict test set labels
y_pred = dt.predict(X_test)
# Import accuracy_score
from sklearn.metrics import accuracy_score
# Predict test set labels
y_pred = dt.predict(X_test)
# Compute test set accuracy
acc = accuracy_score(y_pred, y_test)
print("Test set accuracy: {:.2f}".format(acc))
Regression Tree
# Import DecisionTreeRegressor from sklearn.tree
from sklearn.tree import DecisionTreeRegressor
# Instantiate dt
dt = DecisionTreeRegressor(max_depth=8,
min_samples_leaf=0.13,
random_state=3)
# Fit dt to the training set
dt.fit(X_train, y_train)
# Predict test set labels
y_pred = dt.predict(X_test)
# Compute mse
mse = MSE(y_test, y_pred)
# Compute rmse_lr
rmse = mse**(1/2)
# Print rmse_dt
print('Regression Tree test set RMSE:
{:.2f}'.format(rmse_dt))
আশা করি এই নিবন্ধটি দরকারী।
0 comments:
Post a Comment