آموزش دیتاساینس و ماشین‌لرنینگ
1.9K subscribers
161 photos
9 videos
134 links
🔴 آموزش مباحث حوزه دیتا شامل علم داده، یادگیری ماشین و تحلیل داده (رضا شکرزاد)

🌀 کانال اخبار و منابع هوش مصنوعی:
@DSLanders

🌀 مشاوره و ارتباط مستقیم:
https://t.iss.one/dslanders_admin

یوتیوب:
Youtube.com/@RezaShokrzad

دوره‌ها:
cafetadris.com/datascience
Download Telegram
💡ماشین بردار پشتیبان ساختاریافته چیه؟

ماشین بردار پشتیبان ساختاریافته (Structured SVM) یک توسعه از مدل‌های SVM استاندارده که برای پیش‌بینی خروجی‌هایی با ساختارهای پیچیده مثل دنباله‌ها، درخت‌ها یا گراف‌ها به کار می‌ره. به جای پیش‌بینی برچسب‌های ساده، SVM ساختاریافته می‌تونه برای حل مسائلی استفاده شه که در اونها خروجی‌ها دارای وابستگی‌های درونی هستن.

برای مثال، در تشخیص دستور زبان در پردازش زبان طبیعی یا در تشخیص اشیاء در پردازش تصویر که هر عنصر در خروجی به عناصر دیگه وابسته‌ست. SVM ساختاریافته از یک تابع هزینه استفاده می‌کنه که اختلاف بین خروجی پیش‌بینی شده و خروجی واقعی رو بر اساس ساختارشون اندازه‌گیری می‌کنه. در نتیجه امکان تعمیم مدل رو به مسائل پیچیده‌تر از دسته‌بندی استاندارد فراهم می‌کنه.

#Machine_Learning
#SVM

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61🔥1
پست‌های هفته‌ای که گذشت رو این‌جا پیدا کنین!

🔺 آموزشی

🔵تعریف SVM و مرز تصمیم گیری
👉🔗 https://t.iss.one/data_ml/177

🔵بررسی کامل Margine در SVM
👉🔗 https://t.iss.one/data_ml/180

🔵کرنل در SVM
👉🔗 https://t.iss.one/data_ml/184

🔵انواع کرنل
👉🔗 https://t.iss.one/data_ml/187

🔵حاشیه در Sklearn
👉🔗 https://t.iss.one/data_ml/189

🔵کرنل در Sklearn
👉🔗 https://t.iss.one/data_ml/192

🔺 کوئیز

🔵کوئیز شماره ۵۰: تابع هسته در SVM
👉🔗 https://t.iss.one/data_ml/178

🔵کوئیز شماره ۵۱: تابع هزینه در SVM
👉🔗 https://t.iss.one/data_ml/182

🔵کوئیز شماره ۵۲: پارامتر gamma در کرنل RBF
👉🔗 https://t.iss.one/data_ml/185

🔵کوئیز شماره ۵۳: مسئله دوگانه
👉🔗 https://t.iss.one/data_ml/188

🔵کوئیز شماره ۵۴: داده‌های نامتعادل در SVM
👉🔗 https://t.iss.one/data_ml/190

🔵کوئیز شماره ۵۵: پارامتر coef0 در کرنل polynomial
👉🔗 https://t.iss.one/data_ml/193

🔺 نکته

🔵محاسبه احتمال توسط SVM
👉🔗 https://t.iss.one/data_ml/179

🔵متغییر Slack در ماشین بردار پشتیبان
👉🔗 https://t.iss.one/data_ml/183

🔵بررسی Kernel Trick در SVM
👉🔗 https://t.iss.one/data_ml/186

🔵قضیه مرسر در SVM
👉🔗 https://t.iss.one/data_ml/191

🔵ماشین بردار پشتیبان ساختاریافته
👉🔗 https://t.iss.one/data_ml/194

#Weekend
#Machine_Learning
#SVM

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🔥1
👩‍🎓 برنامه آموزشی هفته: الگوریتم درخت تصمیم یا Decision Tree

🟠شنبه: تعریف درخت تصمیم

🔵یک‌شنبه: اصول و مفاهیم سودمندی (Gain)

🟢دوشنبه: مقایسه شاخص Gini و Entropy

🔴سه‌شنبه: کاربردها و مزایای درخت تصمیم

🟠چهارشنبه: کد درخت تصمیم از پایه (Scratch)

🔵پنج‌شنبه: درخت تصمیم در Sklearn

🟢جمعه: جمع بندی

#Machine_Learning
#Decision_Tree

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥1
Audio
🟡 توضیحات وبینار رایگان یادگیری ماشین لرنینگ و تحلیل داده با ChatGPT

🔺 سرفصل‌ها

🔵نحوه اصولی پرامپت نویسی در ChatGPT
🔵شخصی سازی ChatGPT
🔵یادگیری ماشین لرنینگ با کمک ChatGPT
🔵تحلیل داده با ChatGPT
🔵دریافت برنامه مطالعاتی بلند و کوتاه مدت

📆 یکشنبه، ۸ بهمن ساعت ۱۹

🟢 رایگان ثبت‌نام کنین:‌
👉📎 https://ctdrs.ir/cr15311

@DSLanders | دی‌اس‌لندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🔥1
👨‍🎓 تعریف درخت تصمیم

درخت تصمیم به عنوان یکی از قدرتمندترین الگوریتم‌های یادگیری نظارت‌شده، در هر دو زمینه Classification و Regression کاربرد داره.

این الگوریتم برای تصمیم‌گیری‌ها و پیش‌بینی‌ها از ساختار درخت‌ مانند استفاده می‌کنه و در الگوریتم‌های پیچیده‌تر مثل جنگل تصادفی برای آموزش روی زیرمجموعه‌های مختلف داده‌های آموزشی استفاده می‌شه.

🔵 مفاهیم پایه در درخت تصمیم

🔵گره ریشه (Root Node): نقطه شروع درخت که مجموعه داده کامل رو نشون می‌ده و بهترین ویژگی داده‌ها رو مشخص می‌کنه.

🔵گره تصمیم/داخلی (Decision/Internal Node): نقاطی که در اونها تصمیم‌گیری‌ها بر اساس ویژگی‌های خاص انجام می‌شن و به گره‌های برگ یا سایر گره‌های داخلی متصل می‌شن.

🔵گره برگ/پایانی (Leaf/Terminal Node): نقاط پایانی درخت که نتیجه نهایی یا پیش‌بینی الگوریتم رو نشون می‌دن و گره فرزند ندارن.

🔵 مراحل ساخت درخت تصمیم

🔵انتخاب ویژگی (Feature Selection): بهترین ویژگی بر اساس معیارهایی مانند شاخص Gini، Entropy و بهره اطلاعاتی (Information Gain) انتخاب می‌شه.

🔵شاخه‌زنی (Branching): داده‌ها بر اساس ویژگی انتخاب شده به زیرمجموعه‌هایی تقسیم می‌شن که هر کدوم نشون دهنده یک تصمیم ممکن هستن.

🔵هرس کردن (Pruning): برای جلوگیری از بیش‌برازش، بخش‌هایی از درخت که به بهبود مدل کمک نمی‌کنن حذف می‌شن.

🔵 اصطلاحات و مفاهیم پیشرفته در درخت تصمیم

🔵ناخالصی میزان پراکندگی یا تفاوت‌های داده‌ها در یک زیرمجموعه رو نشون می‌ده. شاخص Gini و Entropy دو روش رایج برای سنجش ناخالصی در درخت‌های تصمیم هستن و در تعیین بهترین تقسیم‌ها برای دسته‌بندی داده‌ها کاربرد دارن.

🔵تغییرپذیری اندازه‌گیری می‌کنه که چقدر متغیر‌های پیش‌بینی‌شده و هدف در نمونه‌های مختلف یک مجموعه داده متغیر هستن. این برای مشکلات رگرسیون در درخت‌های تصمیم استفاده می‌شه و با استفاده از معیارهایی مثل MSE و MAE اندازه‌گیری می‌شه.

🔵بهره اطلاعاتی معیاری برای سنجش کاهش ناخالصی در زمان تقسیم داده‌ها بر اساس یک ویژگی در درخت تصمیمه. این شاخص کمک می‌کنه تا ویژگی‌هایی رو انتخاب کنیم که زیرمجموعه‌های دقیق‌تر و خالص‌تری ایجاد می‌کنن.

#Machine_Learning
#Decision_Tree

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥1
💡مفهوم Tree Bagging چه تعریفی داره؟

مفهوم 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
👍52👌2
👨‍🎓 اصول و مفاهیم بهره اطلاعاتی (Information Gain)

یکی از مفاهیم کلیدی در طراحی و بهینه‌سازی درختان تصمیم، محاسبه و استفاده از "سود" (Gain) هست. سود در الگوریتم درخت تصمیم به معنی کاهش ناخالصیه که در نتیجه تقسیم یک گره بر اساس یک ویژگی خاص به دست میاد.

🔵نحوه محاسبه سود

محاسبه بهره اطلاعاتی که از طریق تقسیم داده‌ها بر مبنای ویژگی‌های خاص به دست می‌آید، به ما اجازه می‌ده تا درک کنیم چقدر این تقسیم می‌تونه مفید باشه. این مقدار، که به عنوان بهره اطلاعاتی شناخته می‌شه، به صورت اختلاف بین انتروپی گره والد و میانگین وزن‌دار انتروپی‌های گره‌های فرزندی که از تقسیم حاصل می‌شن، تعریف میشه.

بهره اطلاعاتی = انتروپی(والد) - [میانگین وزن‌دار] * انتروپی(فرزندان)

که در این فرمول:

🔵انتروپی(والد): انتروپی گره والد قبل از تقسیم.

🔵انتروپی(فرزندان): انتروپی هر یک از گره‌های فرزند بعد از تقسیم.

🔵میانگین وزن‌دار: میانگین وزن‌دار انتروپی‌های گره‌های فرزند هست بر اساس نسبت تعداد نمونه‌ها در هر گره فرزند.

هر وقت مقدار بهره اطلاعاتی که از تقسیم داده‌ها بر اساس یک ویژگی خاص به دست می‌آید بیشتر باشه، نشون می‌ده که ویژگی مورد نظر اطلاعات بیشتری رو برای تمایز قرار دادن بین دسته‌های مختلف فراهم می‌کنه.

به عبارت دیگه، ویژگی‌ای که بهره اطلاعاتی بالاتری داره، در تقسیم‌بندی داده‌ها و ایجاد شاخه‌های مشخص‌تر و دقیق‌تر در درخت تصمیم، مؤثرتره. این موضوع به بهبود کیفیت مدل‌سازی و افزایش دقت پیش‌بینی‌های مدل کمک می‌کنه.

🔵 معیارهای ناخالصی

برای محاسبه ناخالصی از معیارهای مختلفی استفاده می‌شه که شامل Entropy و شاخص Gini هست. این معیارها به ما کمک می‌کنن تا میزان ناخالصی (یا همگن نبودن) داده‌ها در یک گره از درخت رو محاسبه کنیم. هر چقدر داده‌ها ناهمگن‌تر باشن (یعنی توزیع کلاس‌ها یکنواخت نباشه)، انتروپی بیشتره.

🔵استفاده از Gain در ساخت درخت تصمیم

زمان ساخت یک درخت تصمیم، برای انتخاب ویژگی‌هایی که بر اساس اونها تقسیم‌بندی انجام می‌شه، از معیار سود استفاده می‌کنیم. ویژگی‌ای که بیشترین سود رو داره (یعنی بیشترین کاهش در ناخالصی رو به دنبال داره) به عنوان ویژگی برای تقسیم در نظر گرفته می‌شه. این فرایند به صورت بازگشتی ادامه داره تا زمانی که تمامی داده‌ها به خوبی دسته‌بندی شن یا شرایط خاصی برای توقف فرایند برآورده شه.

#Machine_Learning
#Decision_Tree

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🔥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👨‍💻21
👨‍🎓 مقایسه شاخص Gini و Entropy

یکی از مراحل کلیدی در ساخت درخت تصمیم، انتخاب بهترین شاخص برای تقسیم داده‌ها و ساخت زیر درخت‌هاست. در این زمینه، دو شاخص "شاخص جینی" و "انتروپی" از اهمیت ویژه‌ای برخوردار هستن.

🔵 تعریف شاخص جینی و انتروپی

🔵شاخص جینی (Gini Index):

- شاخص جینی معیاری برای اندازه‌گیری "ناخالصی" یا همگن نبودن در یک مجموعه داده است.

- مقدار این شاخص بین 0 و 1 متغیره، که 0 نشون دهنده خالص بودن کامل (یعنی همه نمونه‌ها به یک کلاس تعلق دارن) و 1 بیانگر بیشترین میزان ناخالصی (یعنی نمونه‌ها به طور مساوی بین کلاس‌ها تقسیم شدن) هست.

- به طور کلی، هدف از استفاده از شاخص جینی کاهش ناخالصی در زیرمجموعه‌های نتیجه تقسیمه.

🔵انتروپی (Entropy):

- انتروپی هم معیاری برای سنجش ناخالصی در مجموعه داده است، اما بر اساس 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
💡چه زمانی باید از شاخص جینی به جای بهره اطلاعاتی (انتروپی) استفاده کنیم؟

از شاخص جینی معمولاً وقتی استفاده می‌شه که سرعت محاسبات بیشتری نیازه، چون محاسبه ناخالصی جینی نسبت به انتروپی کمتر پیچیده و سریع‌تره.

از طرف دیگه، بهره اطلاعاتی (که بر اساس انتروپی محاسبه می‌شه) می‌تونه برای داده‌هایی که دارای توزیع‌های غیرمعمول یا بی‌نظمی‌های خاص هستن، مناسب‌تر باشه. انتروپی معمولاً زمانی کاربرد داره که مدل‌سازی اطلاعات متقارن مهمه و می‌خوایم از همه اطلاعات موجود در توزیع کلاس‌ها استفاده کنیم.

به طور کلی، اگه داده‌ها تعداد مقادیر کلاسی کمی دارن و توزیع نسبتاً متوازنی دارن، ناخالصی جینی می‌تونه مفید باشه. اما اگه داده‌ها دارای توزیع‌های نامتوازن یا نویز بیشتری هستن و یا اگه نیاز به اطلاعات دقیق‌تری از انحراف استاندارد داده‌ها داریم، استفاده از بهره اطلاعاتی بر پایه انتروپی توصیه می‌شه.

#Machine_Learning
#Decision_Tree

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71🤔1👌1
👨‍🎓 کاربردها، مزایا و معایب درخت تصمیم

🔵 کاربردهای درختان تصمیم

🔵تشخیص بیماری‌: این الگوریتم می‌تونه با تجزیه و تحلیل داده‌های بیماران و شناسایی الگوهای خاص، به تشخیص سریع‌تر و دقیق‌تر بیماری‌ها کمک کنه.

🔵تجزیه و تحلیل مشتریان: این الگوریتم می‌تونه الگوهای خرید مشتریان رو تشخیص بده و به شرکت‌ها کمک کنه تا محصولات و خدمات‌شون رو به شکلی موثرتر به بازار عرضه کنن. همچنین در تحلیل سگمنت‌های مختلف بازار و تعیین استراتژی‌های بازاریابی موثر به کار می‌ره.

🔵مدیریت ریسک: این الگوریتم می‌تونه به بانک‌ها و موسسات مالی کمک کنه تا احتمال پرداخت نشدن وام‌ها توسط مشتریان رو پیش‌بینی کنن و بر اساسش تصمیمات اعتباری مناسبی بگیرن.

🔵تحلیل تجاری و صنعتی: در صنایع تولیدی، این الگوریتم می‌تونه برای بهینه‌سازی فرآیندهای تولید، کاهش هزینه‌ها و افزایش کارایی به کار بره. همچنین، در تحلیل‌های بازار و پیش‌بینی تقاضا نیز می‌شه از درخت تصمیم‌ استفاده کرد.

🔵 مزایای درختان تصمیم

🔵قابلیت تفسیر: درخت تصمیم به دلیل ساختار شفاف و قابل درکش، قابلیت تفسیر آسونی داره. قوانینی که در این الگوریتم‌ اعمال می‌شه رو میشه به صورت نمودارهایی مثل جریان داده‌ها نشون داد.

🔵نیاز کم به پیش‌پردازش داده‌ها: در مقایسه با سایر الگوریتم‌ها، درخت تصمیم نیاز کمتری به پیش‌پردازش داده‌ها داره و نیازی به نرمال‌سازی داده‌ها، ایجاد متغیرهای مجازی برای متغیرهای Categorical، یا حذف مقادیر خالی یا گمشده نیست.

🔵مقیاس‌پذیری: اضافه کردن ویژگی‌های جدید به مجموعه داده‌ها، زمان محاسبه درخت تصمیم رو به صورت لگاریتمی (تدریجی و آهسته) افزایش می‌ده یعنی این الگوریتم می‌تونه با مجموعه داده‌های بزرگ کار کنه و به خوبی با افزایش داده‌ها مقیاس‌پذیره.

🔵کار با داده‌های عددی و دسته‌ای: اکثر الگوریتم‌های یادگیری ماشین تخصصی برای داده‌های عددی یا Categorical هستن، اما درختان تصمیم می‌تونن با هر دو نوع داده کار کنن.

🔵 معایب درختان تصمیم

🔵بیش‌برازش (Overfitting): درخت تصمیم به سرعت دچار overfitting می‌شن مخصوصا اگه بدون مکانیزم توقف یا اصلاح بعد از آموزش رشد کنن.

🔵عدم پایداری در برابر تغییرات داده‌های ورودی: یک تغییر کوچیک در داده‌های ورودی می‌تونه ساختار درخت تصمیم رو به طور قابل توجهی تغییر بده و این موضوع به قابلیت تفسیر درخت تصمیم آسیب می‌رسونه.

🔵حساسیت به نویز: درخت تصمیم به نویز موجود در داده‌ها حساسه. این موضوع باعث تغییر ساختار درخت میشه و قابلیت تفسیر رو کاهش می‌ده.

🔵غیرپیوسته بودن: خروجی‌های درختان تصمیم به صورت قطعات یا بخش‌های جداگانه و مجزا ارائه می‌شن، نه به صورت یک خط یا منحنی مداوم و بدون وقفه. به عبارت دیگه، به جای اینکه نتیجه یک تغییر مداوم و روان داشته باشه، در مقاطع یا نقاط معینی تغییر می‌کنه و بین این نقاط، ثابته. این موضوع منجر به محدودیت‌هایی در عملکرد رگرسیون درختان تصمیم و عدم توانایی‌شون در برون‌یابی میشه.

#Machine_Learning
#Decision_Tree

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌6👍31
💡الگوریتم CART (درخت‌های تصمیم‌گیری مبتنی بر طبقه‌بندی و رگرسیون) چطور درخت‌های طبقه‌بندی تولید می‌کنه؟

الگوریتم 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)

برای پیاده سازی یک درخت تصمیم از 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👍31👨‍💻1
💡درخت Bagging چیه؟

درخت بگینگ (Tree Bagging) یک روش یادگیری گروهی (Ensemble learning) که در اون چندین درخت تصمیم‌گیری به صورت مستقل از داده‌های آموزشی که به صورت تصادفی انتخاب شدن (Bootstrap Aggregating)، آموزش داده می‌شن و بعد پیش‌بینی‌هاشون باهم ترکیب می‌شه تا یک مدل نهایی با عملکرد بهتر، کمتر دچار بیش‌برازش شه. این روش با کاهش واریانس پیش‌بینی‌ها، مدلی توانمندتری ایجاد می‌کنه و برای مجموعه‌های داده بزرگ که دارای نویز و ابهام هستن، مفیده.

#Machine_Learning
#Decision_Tree

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👌21🔥1
👨‍🎓 درخت تصمیم در Sklearn

درخت تصمیم بر اساس ساختار شاخه‌ای و برگ‌ها کار می‌کنه. هر شاخه نشون‌دهنده یک تصمیم و هر برگ نشون‌دهنده یک دسته‌بندی یا پیش‌بینی مقداره. در ادامه، نحوه پیاده سازی درخت تصمیم در 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}")


🔵 نکات تکمیلی

🔵تنظیم پارامتر‌ها: امکان تنظیم پارامترهای مختلف برای تنظیم مدل درخت تصمیم وجود داره، مثل max_depth برای تعیین حداکثر عمق درخت، min_samples_split برای تعیین حداقل تعداد نمونه‌های مورد نیاز برای شاخه‌بندی بیشتر در یک گره، و criterion برای تعیین معیار کیفیت تقسیم (شاخص Gini و Entropy).

🔵پارامتر splitter: این پارامتر استراتژی تقسیم برای هر گره رو تعیین می‌کنه و دو حالت داره: best که هر گره رو به بهترین شکل ممکن تقسیم می‌کنه و random که تقسیمات رو به صورت تصادفی انتخاب می‌کنه.

🔵پارامتر min_samples_leaf: این پارامتر حداقل تعداد نمونه‌هایی که باید در هر برگ وجود داشته باشه رو تعیین می‌کنه. این مقدار برای کنترل overfitting مفیده.

🔵پارامتر max_features: تعداد ویژگی‌هایی که برای تقسیم در هر گره در نظر گرفته می‌شه رو مشخص می‌کنه. این پارامتر هم برای کنترل overfitting مفیده و سرعت محاسبات رو افزایش ده.

🔵پارامتر min_impurity_decrease: با تنظیم این پارامتر یک گره فقط وقتی تقسیم می‌شه که این تقسیم، ناخالصی رو بیش از حد معینی کاهش بده.

🔵پارامتر class_weight: این پارامتر برای مواردی که کلاس‌ها متعادل نیستن، استفاده می‌شه. مقداردهیش به صورت balanced یا به صورت دیکشنری وزن‌های خاص برای کلاس‌ها تنظیم میشه.

🔵بررسی اهمیت ویژگی‌ها: میشه اهمیت هر ویژگی در تصمیم‌گیری‌های مدل رو با استفاده از پارامتر feature_importances_ بررسی کرد.

🔵استفاده از گراف‌ها: برای درک بهتر ساختار درخت تصمیم، امکان استفاده از کتابخانه‌های مصورسازی مثل graphviz استفاده کرد تا گراف درخت به صورت بصری نمایش داده شه.

#Machine_Learning
#Decision_Tree

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌52👨‍💻1