ماشین بردار پشتیبان ساختاریافته (Structured SVM) یک توسعه از مدلهای SVM استاندارده که برای پیشبینی خروجیهایی با ساختارهای پیچیده مثل دنبالهها، درختها یا گرافها به کار میره. به جای پیشبینی برچسبهای ساده، SVM ساختاریافته میتونه برای حل مسائلی استفاده شه که در اونها خروجیها دارای وابستگیهای درونی هستن.
برای مثال، در تشخیص دستور زبان در پردازش زبان طبیعی یا در تشخیص اشیاء در پردازش تصویر که هر عنصر در خروجی به عناصر دیگه وابستهست. SVM ساختاریافته از یک تابع هزینه استفاده میکنه که اختلاف بین خروجی پیشبینی شده و خروجی واقعی رو بر اساس ساختارشون اندازهگیری میکنه. در نتیجه امکان تعمیم مدل رو به مسائل پیچیدهتر از دستهبندی استاندارد فراهم میکنه.
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1🔥1
#Weekend
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1
Audio
@DSLanders | دیاسلندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
درخت تصمیم به عنوان یکی از قدرتمندترین الگوریتمهای یادگیری نظارتشده، در هر دو زمینه Classification و Regression کاربرد داره.
این الگوریتم برای تصمیمگیریها و پیشبینیها از ساختار درخت مانند استفاده میکنه و در الگوریتمهای پیچیدهتر مثل جنگل تصادفی برای آموزش روی زیرمجموعههای مختلف دادههای آموزشی استفاده میشه.
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1
❓کوئیز شماره ۵۶: کدامیک از موارد زیر یک مثال از انواع هرس کردن در درختان تصمیم نیست؟
Anonymous Quiz
16%
هرس قبل از برازش: متوقف کردن رشد درخت قبل از رسیدن به حداکثر عمق ممکن.
19%
هرس پس از برازش: حذف بعضی از شاخههای درخت بعد از ایجاد کاملشون.
32%
هرس تصادفی: انتخاب شاخههایی برای حذف به صورت تصادفی.
32%
هرس مبتنی بر کاهش پیچیدگی هزینه: حذف شاخهها بر اساس معیارهای آماری مثل اعتبارسنجی متقابل.
😎7🤔1👌1
مفهوم Tree Bagging که به عنوان Bootstrap Aggregating هم شناخته میشه، یک روش یادگیری جمعی هست که در اون چندین مدل درخت تصمیم به طور مستقل از هم روی زیرمجموعههای مختلفی از دادهها آموزش میبینن و بعد نتایجشون ترکیب میشه.
هدف از این روش بهبود عملکرد و کاهش خطای مدل با کاهش واریانس پیشبینیهاست. Bagging به خصوص در جلوگیری از Overfitting موثره، چون با ترکیب پیشبینیهای چندین درخت، حساسیت مدل نسبت به نوسانات تصادفی دادههای آموزشی کاهش پیدا میکنه. جنگل تصادفی (Random Forest) یکی از معروفترین الگوریتمهاییه که از Tree Bagging استفاده میکنه.
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2👌2
یکی از مفاهیم کلیدی در طراحی و بهینهسازی درختان تصمیم، محاسبه و استفاده از "سود" (Gain) هست. سود در الگوریتم درخت تصمیم به معنی کاهش ناخالصیه که در نتیجه تقسیم یک گره بر اساس یک ویژگی خاص به دست میاد.
محاسبه بهره اطلاعاتی که از طریق تقسیم دادهها بر مبنای ویژگیهای خاص به دست میآید، به ما اجازه میده تا درک کنیم چقدر این تقسیم میتونه مفید باشه. این مقدار، که به عنوان بهره اطلاعاتی شناخته میشه، به صورت اختلاف بین انتروپی گره والد و میانگین وزندار انتروپیهای گرههای فرزندی که از تقسیم حاصل میشن، تعریف میشه.
بهره اطلاعاتی = انتروپی(والد) - [میانگین وزندار] * انتروپی(فرزندان)
که در این فرمول:
هر وقت مقدار بهره اطلاعاتی که از تقسیم دادهها بر اساس یک ویژگی خاص به دست میآید بیشتر باشه، نشون میده که ویژگی مورد نظر اطلاعات بیشتری رو برای تمایز قرار دادن بین دستههای مختلف فراهم میکنه.
به عبارت دیگه، ویژگیای که بهره اطلاعاتی بالاتری داره، در تقسیمبندی دادهها و ایجاد شاخههای مشخصتر و دقیقتر در درخت تصمیم، مؤثرتره. این موضوع به بهبود کیفیت مدلسازی و افزایش دقت پیشبینیهای مدل کمک میکنه.
برای محاسبه ناخالصی از معیارهای مختلفی استفاده میشه که شامل Entropy و شاخص Gini هست. این معیارها به ما کمک میکنن تا میزان ناخالصی (یا همگن نبودن) دادهها در یک گره از درخت رو محاسبه کنیم. هر چقدر دادهها ناهمگنتر باشن (یعنی توزیع کلاسها یکنواخت نباشه)، انتروپی بیشتره.
زمان ساخت یک درخت تصمیم، برای انتخاب ویژگیهایی که بر اساس اونها تقسیمبندی انجام میشه، از معیار سود استفاده میکنیم. ویژگیای که بیشترین سود رو داره (یعنی بیشترین کاهش در ناخالصی رو به دنبال داره) به عنوان ویژگی برای تقسیم در نظر گرفته میشه. این فرایند به صورت بازگشتی ادامه داره تا زمانی که تمامی دادهها به خوبی دستهبندی شن یا شرایط خاصی برای توقف فرایند برآورده شه.
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
❓کوئیز شماره ۵۷: اگه در محاسبه بهره اطلاعاتی برای یک گره در درخت تصمیم، انتروپی گرههای فرزندی بعد از تقسیم به شدت کاهش پیدا کنن، این نتیجه به چه معنیه؟
Anonymous Quiz
15%
ویژگی استفاده شده برای تقسیم ممکنه بیش از حد تخصصی باشه.
35%
ویژگی استفاده شده برای تقسیم بسیار کارآمده.
46%
تقسیم احتمالا به بیشبرازش منجر شده.
4%
تقسیم هیچ تأثیری روی ناخالصی دادهها نداره.
😎6🤔1👌1
سود اطلاعاتی، که با عنوان "Information Gain" شناخته میشه، میزان بهبود پیشبینیهایی هست که از انتخاب یک ویژگی خاص در یک گره از درخت تصمیم به دست میاد و نشون میده که با این انتخاب چقدر ناخالصی کاهش پیدا کرده. اما این شاخص گاهی اوقات به ویژگیهایی که تعداد مقادیر بالا دارن سوگیری میکنه، حتی اگر این ویژگیها اطلاعات چندان مفیدی برای مدل فراهم نکنن.
نسبت سود اطلاعاتی که بهش "Information Gain Ratio" گفته میشه، برای حل این مشکل توسعه داده شده. این معیار، سود اطلاعاتی رو تعدیل میکنه به طوری که تاثیر تعداد مقادیر ممکن هر ویژگی رو در نظر میگیره و از این طریق، گرایش به انتخاب ویژگیهای با تعداد زیاد مقادیر رو کاهش میده. در نتیجه نسبت سود اطلاعاتی باعث میشه که انتخاب ویژگیها در مدل سازی بیشتر بر اساس کارایی واقعیشون در تقسیمبندی دادهها باشه و کمتر تحت تاثیر تعداد زیاد مقادیر ویژگی قرار بگیره.
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👨💻2❤1
یکی از مراحل کلیدی در ساخت درخت تصمیم، انتخاب بهترین شاخص برای تقسیم دادهها و ساخت زیر درختهاست. در این زمینه، دو شاخص "شاخص جینی" و "انتروپی" از اهمیت ویژهای برخوردار هستن.
- شاخص جینی معیاری برای اندازهگیری "ناخالصی" یا همگن نبودن در یک مجموعه داده است.
- مقدار این شاخص بین 0 و 1 متغیره، که 0 نشون دهنده خالص بودن کامل (یعنی همه نمونهها به یک کلاس تعلق دارن) و 1 بیانگر بیشترین میزان ناخالصی (یعنی نمونهها به طور مساوی بین کلاسها تقسیم شدن) هست.
- به طور کلی، هدف از استفاده از شاخص جینی کاهش ناخالصی در زیرمجموعههای نتیجه تقسیمه.
- انتروپی هم معیاری برای سنجش ناخالصی در مجموعه داده است، اما بر اساس Gain تعریف میشه.
- مقدار انتروپی بین 0 و log(c) متغیره، که c تعداد کلاسهای مختلف در مجموعه داده است.
- انتروپی 0 به معنای خالص بودن کامله (یعنی همه نمونهها به یک کلاس تعلق دارن) و انتروپی بالا نشوندهنده توزیع یکنواخت نمونهها بین کلاسها و در نتیجه، ناخالصی بیشتره.
- شاخص جینی معمولاً سریعتر از انتروپی محاسبه میشه چون انتروپی نیاز به انجام محاسبات لگاریتمی داره.
- شاخص جینی میتونه به صورت مستقیم و بدون نیاز به محاسبات پیچیده محاسبه شه.
- شاخص جینی نسبت به تغییرات در احتمالات کلاسها حساستره. به این معنی که کوچکترین تغییر در توزیع کلاسها میتونه تأثیر قابل توجهی روی مقدار شاخص جینی داشته باشه.
- انتروپی، کمتر تحت تأثیر تغییرات جزئی در توزیع دادهها قرار میگیره. اگه دقت در تخمین ناخالصی اهمیت بیشتری داره و هزینه محاسباتی مسئله ساز نیست، انتروپی میتونه گزینه مناسبتری باشه.
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👌1👨💻1
❓کوئیز شماره ۵۸: کدوم گزینه بهترین تفسیر رو برای مقایسه به دست اومده توسط شاخص جینی و انتروپی در مورد ناخالصی یک گره در درخت تصمیم ارائه میده؟
Anonymous Quiz
29%
شاخص جینی و انتروپی اطلاعات مشابهی ارائه میدن، چون هر دو ناخالصی رو میسنجن.
21%
شاخص جینی اطلاعات کمتری نسبت به انتروپی ارائه میده، چون به تغییرات کوچک در توزیع کلاسها حساستره.
38%
انتروپی اطلاعات بیشتری نسبت به شاخص جینی ارائه میده، چون به تغییرات کوچک در توزیع کلاسها حساستره.
13%
شاخص جینی و انتروپی هیچ اطلاعات قابل تفسیری در مورد ناخالصی گرهها ارائه نمیدن.
😎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
13%
با تجزیه و تحلیل ماتریس همبستگی بین ویژگیها
72%
با استفاده از معیار اهمیت ویژگیها (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
55%
با میانگینگیری پیشبینیهای چندین درخت، از بیشبرازش جلوگیری میکنه
10%
قابلیت تفسیر درختهای تصمیمگیری رو بهبود میده
29%
پیچیدگی محاسباتی درختهای تصمیمگیری رو کاهش میده
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