❓کوئیز شماره ۵۸: کدوم گزینه بهترین تفسیر رو برای مقایسه به دست اومده توسط شاخص جینی و انتروپی در مورد ناخالصی یک گره در درخت تصمیم ارائه میده؟
Anonymous Quiz
32%
شاخص جینی و انتروپی اطلاعات مشابهی ارائه میدن، چون هر دو ناخالصی رو میسنجن.
20%
شاخص جینی اطلاعات کمتری نسبت به انتروپی ارائه میده، چون به تغییرات کوچک در توزیع کلاسها حساستره.
36%
انتروپی اطلاعات بیشتری نسبت به شاخص جینی ارائه میده، چون به تغییرات کوچک در توزیع کلاسها حساستره.
12%
شاخص جینی و انتروپی هیچ اطلاعات قابل تفسیری در مورد ناخالصی گرهها ارائه نمیدن.
😎5👍2❤1
از شاخص جینی معمولاً وقتی استفاده میشه که سرعت محاسبات بیشتری نیازه، چون محاسبه ناخالصی جینی نسبت به انتروپی کمتر پیچیده و سریعتره.
از طرف دیگه، بهره اطلاعاتی (که بر اساس انتروپی محاسبه میشه) میتونه برای دادههایی که دارای توزیعهای غیرمعمول یا بینظمیهای خاص هستن، مناسبتر باشه. انتروپی معمولاً زمانی کاربرد داره که مدلسازی اطلاعات متقارن مهمه و میخوایم از همه اطلاعات موجود در توزیع کلاسها استفاده کنیم.
به طور کلی، اگه دادهها تعداد مقادیر کلاسی کمی دارن و توزیع نسبتاً متوازنی دارن، ناخالصی جینی میتونه مفید باشه. اما اگه دادهها دارای توزیعهای نامتوازن یا نویز بیشتری هستن و یا اگه نیاز به اطلاعات دقیقتری از انحراف استاندارد دادهها داریم، استفاده از بهره اطلاعاتی بر پایه انتروپی توصیه میشه.
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1🤔1👌1
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌6👍3❤1
❓کوئیز شماره ۵۹: چطور میشه از درخت تصمیم برای کاهش ابعاد دادهها و انتخاب ویژگیهای مهم استفاده کرد؟
Anonymous Quiz
15%
با تجزیه و تحلیل ماتریس همبستگی بین ویژگیها
70%
با استفاده از معیار اهمیت ویژگیها (Feature Importance) محاسبه شده در طی فرایند ساخت درخت
9%
با انجام آزمونهای آماری روی ویژگیها
6%
با انتخاب تصادفی ویژگیها
👍4😎3❤2
الگوریتم Classification And Regression Trees از یک رویکرد آماری برای تولید درختهای تصمیمگیری استفاده میکنه که هم برای Classification و هم برای Regression قابل اجراست. این الگوریتم از یک روش تقسیم و غلبه (Divide and Conquer) برای تولید درخت استفاده میکنه.
۱. تقسیمبندی: الگوریتم با بررسی هر یک از ویژگیها (Features) و مقادیر مختلفشون به دنبال بهترین نقطه تقسیم (Split Point) هست که باعث کاهش بیشترین میزان ناخالصی (Impurity) میشه. برای طبقهبندی، ناخالصی معمولاً با استفاده از معیارهایی مثل شاخص Gini یا بهره اطلاعاتی (Information Gain) اندازهگیری میشه.
۲. رشد درخت: بعد از تعیین بهترین تقسیم، دادهها به دو زیرمجموعه تقسیم میشن و هر زیرمجموعه به یک شاخه در درخت تصمیم میشه. این فرایند به صورت بازگشتی برای هر شاخه جدید تکرار میشه تا زمانی که یک شرط توقف مثل عمق ماکزیمم درخت یا حداقل تعداد نمونهها در هر گره رعایت شه.
۳. هرس کردن (Pruning): بعد از ساختن درخت کامل، ممکنه به دلیل Overfitting نیاز به هرس کردن درخت باشه. هرس کردن شامل حذف شاخههایی هست که بهبود کمی در امکان پیشبینی مدل ایجاد میکنن. این کار میتونه به بهبود عملکرد مدل در پیشبینی دادههای جدید کمک کنه.
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👌2👏1
برای پیاده سازی یک درخت تصمیم از Scratch در زبان برنامهنویسی پایتون، به چند جزء اصلی نیاز داریم:
کلاس Node: این کلاس به عنوان نمایندهی هر گره در درخت تصمیم عمل میکنه. این گرهها شامل اطلاعاتی دربارهی شاخص ویژگیها برای تقسیم (feature_index)، آستانهی تقسیم (threshold)، و گرههای فرزند چپ و راست (left و right) هستن. همچنین، این کلاس میزان افزایش اطلاعات ناشی از هر تقسیم (info_gain) و پیشبینیهای نهایی برای گرههای برگ (value) رو داراست.
class Node:
def __init__(self, feature_index=None, threshold=None,
left=None, right=None, info_gain=None, value=None):
self.feature_index = feature_index
self.threshold = threshold
self.left = left
self.right = right
self.info_gain = info_gain
self.value = value
کلاس DecisionTreeClassifier: این کلاس هستهی الگوریتم درخت تصمیم رو تشکیل میده. متد سازنده (Constructor) پارامترهایی مثل حداکثر عمق درخت (max_depth) و حداقل تعداد نمونهها برای یک گره (min_samples_split) رو مشخص میکنه. تابع build_tree مسئول ساخت درخته و به صورت بازگشتی بهترین تقسیم رو بر اساس افزایش اطلاعات انتخاب میکنه. تابع predict برای پیشبینی کلاسهای نمونههای جدید استفاده میشه.
class DecisionTreeClassifier:
def __init__(self, min_samples_split=2, max_depth=2):
self.min_samples_split = min_samples_split
self.max_depth = max_depth
def build_tree(self, dataset, curr_depth=0):
pass
def train(self, X, Y):
pass
def predict(self, X):
pass
توابع کمکی: تابع entropy برای محاسبه انتروپی استفاده میشه که میزان ناخالصی در یک مجموعه داده رو نشون میده. انتروپی بالا به معنای وجود تنوع بیشتر در برچسبهای دادههاست، و انتروپی پایین نشوندهنده یکنواختی بیشتر در برچسبهاست.
تابع calculate_info_gain برای محاسبه افزایش اطلاعات یک تقسیم مشخص در درخت استفاده میشه. افزایش اطلاعات معیاری برای اندازهگیری میزان بهبودی هست که یک تقسیم مشخص در پیشبینی برچسبها ایجاد میکنه.
تابع best_split این تابع کمک میکنه تا بهترین نقطه تقسیم برای دادهها رو بر اساس معیار افزایش اطلاعات یا شاخص جینی پیدا کنیم. این تابع از بین همه ویژگیها و آستانههای ممکن، تقسیمی رو انتخاب میکنه که بیشترین افزایش اطلاعات رو به دست بیارن.
def entropy(y):
class_labels = np.unique(y)
entropy = 0
for cls in class_labels:
p = len(y[y == cls]) / len(y)
entropy -= p * np.log2(p)
return entropy
def calculate_info_gain(dataset, feature_index, threshold):
pass
def best_split(dataset, num_features):
pass
❗️توجه داشته باشین که کدهای گذاشته شده قطعه کد هستن و فقط به صورت کلی توابع لازم برای پیاده سازی درخت تصمیم رو توضیح دادن و با اجراشون خروجی نخواهید داشت.
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌6👍3❤1👨💻1
❓کوئیز شماره ۶۰: مزیت اصلی استفاده از Bagging با درخت تصمیمگیری چیه؟
Anonymous Quiz
56%
با میانگینگیری پیشبینیهای چندین درخت، از بیشبرازش جلوگیری میکنه
9%
قابلیت تفسیر درختهای تصمیمگیری رو بهبود میده
28%
پیچیدگی محاسباتی درختهای تصمیمگیری رو کاهش میده
6%
به درختهای تصمیمگیری اجازه میده تا با دادههای گمشده کار کنن
👍4❤2😎2
درخت بگینگ (Tree Bagging) یک روش یادگیری گروهی (Ensemble learning) که در اون چندین درخت تصمیمگیری به صورت مستقل از دادههای آموزشی که به صورت تصادفی انتخاب شدن (Bootstrap Aggregating)، آموزش داده میشن و بعد پیشبینیهاشون باهم ترکیب میشه تا یک مدل نهایی با عملکرد بهتر، کمتر دچار بیشبرازش شه. این روش با کاهش واریانس پیشبینیها، مدلی توانمندتری ایجاد میکنه و برای مجموعههای داده بزرگ که دارای نویز و ابهام هستن، مفیده.
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👌2❤1🔥1
درخت تصمیم بر اساس ساختار شاخهای و برگها کار میکنه. هر شاخه نشوندهنده یک تصمیم و هر برگ نشوندهنده یک دستهبندی یا پیشبینی مقداره. در ادامه، نحوه پیاده سازی درخت تصمیم در scikit-learn رو بررسی میکنیم.
۱. وارد کردن کتابخانهها و دادهها: اول کتابخانههای مورد نیاز وارد میشه.
import numpy as np
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
۲. آمادهسازی دادهها: دادهها برای مدلسازی آماده میشه. این مرحله شامل پاکسازی دادهها، جدا کردن ویژگیها و برچسبها و تقسیمبندی دادهها به دو مجموعه آموزشی و تسته.
X = data.iloc[:, :-1]
y = data.iloc[:, -1]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
۳. ایجاد مدل و آموزش: یک شی از کلاس DecisionTreeClassifier ایجاد و با دادههای آموزشی مدل آموزش داده میشه.
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
۴. پیشبینی و ارزیابی مدل: با استفاده از مدل آموزش دیده روی دادههای تست پیشبینی انجام داده و دقت مدل ارزیابی میشه.
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print(f"دقت مدل: {accuracy}")
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌5❤2👨💻1
❓کوئیز شماره ۶۱: استفاده از پارامتر splitter= random در مقایسه با splitter= best چه مزایا و معایبی داره؟
Anonymous Quiz
75%
حالت random سریعتره اما ممکنه دقت کمتری داشته باشه، در حالی که best دقیقتره و زمان بیشتری میبره.
15%
هیچ تفاوت عمدهای بین این دو وجود نداره.
10%
حالت random برای دادههای با حجم کم مناسبتره.
0%
حالت best همیشه بهترین گزینه است و نباید از random استفاده شه.
😎7❤1👍1
نه max_depth حداکثر تعداد گره هاییه که یک درخت تصمیم میتونه داشته باشه. این پارامتر برای جلوگیری از رشد بیش از حد درخت و کاهش پیچیدگی استفاده میشه. هرس، فرآیند حذف گره ها از یک درخت تصمیمه که برای بهبود دقت درخت و کاهش احتمال بیش برازش انجام شه.
برای هرس درخت تصمیم در Scikit-learn، میشه از تابع ().prune استفاده کرد. این تابع دو پارامتر ورودی criterion و max_depth رو میگیره. برای مثال برای هرس یک درخت تصمیم با استفاده از شاخص Gini و عمق حداکثر 5، میشه از کد زیر استفاده کرد:
from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier()
classifier.fit(X_train, y_train)
pruned_classifier = classifier.prune(criterion="gini", max_depth=5)
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👌1👨💻1
#Weekend
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👏3👍1
#Machine_Learning
#Random_Forest
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4🔥1
Audio
@DSLanders | دیاسلندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1🔥1
جنگل تصادفی (Random Forest) در گروه الگوریتمهای باناظر قرار داره و برای حل مسائل طبقهبندی و رگرسیون استفاده میشه. این الگوریتم بر اساس ترکیب چندین درخت تصمیم کار میکنه و به عنوان یک روش یادگیری گروهی (Ensemble Learning) شناخته میشه.
هر درخت در "جنگل" سعی میکنه به طور مستقل یک پیشبینی انجام بده، و نتیجهی نهایی بر اساس میانگین یا اکثریت آراء این درختها به دست میاد. ایدهی اصلی پشت این الگوریتم اینکه با استفاده از چندین درخت تصمیم به جای یک درخت تصمیم، بشه پیشبینیهای دقیقتر و معتبرتری انجام داد.
#Machine_Learning
#Random_Forest
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👌2👨💻1
❓کوئیز شماره ۶۱: در مورد تأثیر تعداد درختان در یک جنگل تصادفی، کدوم گزینه صحیحه؟
Anonymous Quiz
11%
افزایش تعداد درختان همیشه به بهبود دقت مدل منجر میشه
17%
افزایش بیرویه تعداد درختان به کاهش سرعت یادگیری و پیشبینی بدون بهبود قابل توجه در دقت منجر میشه
14%
کاهش تعداد درختان معمولاً باعث افزایش دقت مدل میشه
58%
افزایش درختان تا یک حدی دقت رو بهبود میده اما بعد از اون بهبود دقت ناچیز و هزینه محاسبات بیشتر میشه
👍7❤2😎1
خطای Out-of-Bag یک روش ارزیابی عملکرد برای الگوریتمهای جنگل تصادفیه. در فرایند آموزش یک جنگل تصادفی، برای هر درخت تصمیم، یک نمونهگیری بوتاسترپ از دادههای آموزشی انجام میشه. یعنی بعضی از دادهها ممکنه چندین بار در نمونهگیری ظاهر شن، در حالی که بعضی دیگه اصلاً انتخاب نمیشن. دادههایی که در نمونهگیری برای یک درخت خاص استفاده نمیشن، خارج از کیسه (OOB) نام دارن.
پس از آموزش درخت، دادههای OOB برای ارزیابی عملکرد اون درخت به کار میرن، چون این دادهها در آموزش درخت شرکت نداشتن. با استفاده از OOB برای هر درخت، خطای OOB محاسبه میشه و بعد خطاهای هر درخت در جنگل تصادفی میانگینگیری میشه تا خطای OOB کلی محاسبه شه.
مزیت این روش اینکه نیازی به جدا کردن یک مجموعه تست جداگانه نیست و میشه یک تخمین از خطای تعمیم رو بدون استفاده از دادههای بیشتر به دست آورد. خطای OOB به عنوان یک روش در زمان تنظیم هایپرپارامترها کاربرد داره.
#Machine_Learning
#Random_Forest
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤔1👌1
در الگوریتم جنگل تصادفی، "تصادفی" به دو مکانیزم اصلی اشاره داره که برای افزایش تنوع در مدلهای درخت تصمیم و کاهش بیشبرازش استفاده میشه. این دو مکانیزم به این صورت هستن:
در جنگل تصادفی، هر درخت تصمیم بر اساس یک نمونه تصادفی از دادهها آموزش میبینه. این نمونهها از طریق فرایندی به نام Bagging انتخاب میشن. در Bagging، نمونههای گوناگون با جایگذاری از مجموعه داده اصلی انتخاب میشن، به این معنی که هر نمونه میتونه بیشتر از یک بار انتخاب شه. در نتیجه باعث میشه که هر درخت تصمیم با توجه به بخشی متفاوت و منحصر به فرد از دادهها آموزش ببینه.
زمان ساخت هر گره در درختهای تصمیم، به جای بررسی تمام ویژگیها برای انتخاب بهترین تقسیم، یک زیر مجموعه تصادفی از ویژگیها انتخاب میشه و بعد بهترین تقسیم از بین این زیرمجموعه ویژگیها انتخاب میشه. این فرایند به مدل اجازه میده که برای هر گره، تنوع بیشتری داشته باشه و به این ترتیب، از بیشبرازش جلوگیری میکنه و مقاومت در برابر نویز و تغییرات در دادهها رو افزایش میده.
این دو تعریف پشت "تصادفی" در جنگل تصادفی باعث میشن که این الگوریتم به عنوان یک مدل قوی و مقاوم در برابر Overfitting شناخته شه. ترکیب پیشبینیهای تمام درختها، که هر کدوم با توجه به نمونهها و ویژگیهای متفاوتی آموزش دیدن، منجر به ایجاد یک مدل نهایی میشه که هم دقت بالایی داره و هم قابلیت تعمیم خوبی به دادههای جدید داره.
#Machine_Learning
#Random_Forest
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍2👌1👨💻1
❓کوئیز شماره ۶۲: کدوم گزینه بهترین توصیف از اثر تصادفی در بهبود کیفیت مدل جنگل تصادفیه؟
Anonymous Quiz
63%
هر درخت به خطاهای مختلف دچار میشه و با ترکیب پیشبینی درختها، خطاها جبران و مدل دقیق حاصل میشه.
26%
تصادفی بودن باعث ساخت درختهای تصمیم مشابه میشه، که در نتیجه مدل نهایی دارای پایداری بیشتری میشه.
11%
تصادفی بودن در انتخاب نمونهها و ویژگیها تاثیری روی کیفیت مدل نهایی نداره و فقط برای کاهش محاسباته.
😎9👌4❤1🤔1
#Machine_Learning
#Random_Forest
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤4👨💻1