آموزش درخت تصمیم در یادگیری ماشین با پایتون

3 سال پیش
درخت تصمیم در یادگیری ماشین با پایتون

آموزش درخت تصمیم در یادگیری ماشین با پایتون

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش درخت تصمیم در یادگیری ماشین با پایتون خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون

مقدمه ای بر درخت تصمیم در یادگیری ماشین با پایتون

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

آنها می توانند برای کارهای طبقه بندی و رگرسیون استفاده شوند. دو موجودیت اصلی یک درخت گره های تصمیم گیری هستند ، جایی که داده ها تقسیم شده و خارج می شوند، جایی که نتیجه می گیریم. نمونه ای از یک درخت باینری برای پیش بینی تناسب یا نامناسب بودن فرد با ارائه اطلاعات مختلف مانند سن، عادات غذایی و عادات ورزشی ، در زیر آورده شده است –

 

در درخت تصمیم فوق، سوال از گره های تصمیم گیری و نتایج نهایی برگ است. ما دو نوع درخت تصمیم زیر داریم:

  • درخت تصمیم گیری طبقه بندی – در این نوع درخت تصمیم، متغیر تصمیم گیری طبقه بندی می شود. درخت تصمیم فوق نمونه ای از درخت تصمیم گیری طبقه بندی است.
  • درخت تصمیم گیری رگرسیون – در این نوع درخت تصمیم، متغیر تصمیم مداوم است.

اجرای الگوریتم درخت تصمیم
شاخص جینی

این نام تابع هزینه است که برای ارزیابی تقسیمات باینری در مجموعه داده استفاده می شود و با متغیر هدف دسته ای “موفقیت” یا “شکست” کار می کند.

هر چه مقدار شاخص جینی بالاتر باشد ، همگنی بالاتر است. مقدار کامل شاخص جینی ۰ و بدترین آن ۰/۰ است (برای مسئله ۲ کلاس). شاخص جینی برای تقسیم را می توان با کمک مراحل زیر محاسبه کرد –

ابتدا، شاخص جینی را برای گره های فرعی با استفاده از فرمول p ^ 2 + q ^ 2 محاسبه کنید ، که حاصل جمع مربع احتمال موفقیت و شکست است.

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

الگوریتم طبقه بندی و رگرسیون درخت (CART) از روش جینی برای تولید تقسیمات باینری استفاده می کند.

Split Creation

تقسیم اساساً شامل یک ویژگی در مجموعه داده و یک مقدار است. ما می توانیم با کمک سه قسمت زیر ، مجموعه ای از مجموعه داده ها ایجاد کنیم –

قسمت ۱: محاسبه امتیاز جینی – ما در بخش قبلی به بحث در مورد این بخش پرداختیم.

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

قسمت ۳: ارزیابی همه تقسیم ها – قسمت بعدی پس از پیدا کردن نمره جینی و تقسیم داده ها ، ارزیابی همه تقسیم ها است. برای این منظور ، ابتدا باید هر مقداری را که با هر ویژگی مرتبط است به عنوان تقسیم نامزد بررسی کنیم. سپس باید با ارزیابی هزینه انشعاب بهترین تقسیم ممکن را پیدا کنیم. بهترین تقسیم به عنوان گره در درخت تصمیم استفاده خواهد شد.

ساختن درخت

همانطور که می دانیم یک درخت دارای گره های ریشه ای و گره های انتهایی است. پس از ایجاد گره ریشه، می توانیم درخت را با دنبال کردن دو قسمت ایجاد کنیم –

قسمت ۱: ایجاد گره ترمینال

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

حداکثر عمق درخت – همانطور که از نامش پیداست ، این حداکثر تعداد گره های یک درخت بعد از گره ریشه است. هنگامی که درخت در حداکثر عمق رسید ، باید اضافه کردن گره های انتهایی را متوقف کنیم ، به عنوان مثال یک درخت حداکثر تعداد گره های نهایی را بدست آورد.

حداقل گره – ممکن است به عنوان حداقل تعداد الگوهای آموزشی که یک گره داده شده مسئول آن است ، تعریف شود. وقتی درخت به این رکوردهای حداقل گره یا زیر این حداقل رسید ، باید اضافه کردن گره های ترمینال را متوقف کنیم.

گره ترمینال برای پیش بینی نهایی استفاده می شود.

قسمت ۲: تقسیم بازگشتی

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

پیش بینی

پس از ساختن درخت تصمیم ، باید پیش بینی آن را انجام دهیم. اساساً ، پیش بینی شامل پیمایش درخت تصمیم با ردیف داده های خاص ارائه شده است.

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

فرضیات

موارد زیر برخی از فرضیاتی است که ما هنگام ایجاد درخت تصمیم ارائه می دهیم –

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

پیاده سازی در پایتون
مثال

در مثال زیر ما می خواهیم طبقه بندی درخت تصمیم را بر روی Pima Indian Diabetes پیاده کنیم –

ابتدا با وارد کردن بسته های لازم پایتون شروع کنید –

import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

 

سپس ، مجموعه داده iris را از لینک وب خود به شرح زیر بارگیری کنید –

col_names = ['pregnant', 'glucose', 'bp', 'skin', 'insulin', 'bmi', 'pedigree', 'age', 'label']
pima = pd.read_csv(r"C:\pima-indians-diabetes.csv", header=None, names=col_names)
pima.head()

 

      pregnant    glucose  bp    skin  insulin  bmi   pedigree    age   label
۰       ۶         ۱۴۸      ۷۲    ۳۵     ۰       ۳۳٫۶    ۰٫۶۲۷     ۵۰      ۱
۱       ۱         ۸۵       ۶۶    ۲۹     ۰       ۲۶٫۶    ۰٫۳۵۱     ۳۱      ۰
۲       ۸         ۱۸۳      ۶۴     ۰     ۰       ۲۳٫۳    ۰٫۶۷۲     ۳۲      ۱
۳       ۱         ۸۹       ۶۶    ۲۳     ۹۴      ۲۸٫۱    ۰٫۱۶۷     ۲۱      ۰
۴       ۰         ۱۳۷      ۴۰    ۳۵     ۱۶۸     ۴۳٫۱    ۲٫۲۸۸     ۳۳      ۱

 

اکنون ، مجموعه داده را به شرح زیر به ویژگی ها و متغیر هدف تقسیم کنید –

feature_cols = ['pregnant', 'insulin', 'bmi', 'age','glucose','bp','pedigree']
X = pima[feature_cols] # Features
y = pima.label # Target variable

 

بعد، ما داده ها را به تقسیم قطار و آزمون تقسیم می کنیم. کد زیر مجموعه داده را به ۷۰٪ داده های آموزشی و ۳۰٪ داده های آزمایش تقسیم می کند –

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)

 

بعد ، مدل را با کمک کلاس DecisionTreeClassifier از sklearn به شرح زیر آموزش دهید –

clf = DecisionTreeClassifier()
clf = clf.fit(X_train,y_train)

 

بالاخره ما باید پیش بینی کنیم. این را می توان با کمک اسکریپت زیر انجام داد –

y_pred = clf.predict(X_test)

 

بعد ، ما می توانیم نمره دقت ، ماتریس سردرگمی و گزارش طبقه بندی را به شرح زیر بدست آوریم –

from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
result = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(result)
result1 = classification_report(y_test, y_pred)
print("Classification Report:",)
print (result1)
result2 = accuracy_score(y_test,y_pred)
print("Accuracy:",result2)

 

خروجی

Confusion Matrix:
[[۱۱۶ ۳۰]
[ ۴۶ ۳۹]]
Classification Report:
            precision   recall   f1-score    support
      ۰       ۰٫۷۲      ۰٫۷۹       ۰٫۷۵     ۱۴۶
      ۱       ۰٫۵۷      ۰٫۴۶       ۰٫۵۱     ۸۵
micro avg     0.67      0.67       0.67     231
macro avg     0.64      0.63       0.63     231
weighted avg  0.66      0.67       0.66     231

Accuracy: 0.670995670995671

 

تجسم درخت تصمیم

درخت تصمیم فوق را می توان با کمک کد زیر تجسم کرد –

Confusion Matrix:
[[۱۱۶ ۳۰]
[ ۴۶ ۳۹]]
Classification Report:
            precision   recall   f1-score    support
      ۰       ۰٫۷۲      ۰٫۷۹       ۰٫۷۵     ۱۴۶
      ۱       ۰٫۵۷      ۰٫۴۶       ۰٫۵۱     ۸۵
micro avg     0.67      0.67       0.67     231
macro avg     0.64      0.63       0.63     231
weighted avg  0.66      0.67       0.66     231

Accuracy: 0.670995670995671

 

منبع.

لیست جلسات قبل آموزش یادگیری ماشین با پایتون 

  1. آموزش یادگیری ماشین با پایتون
  2.  مبانی یادگیری ماشین با پایتون  
  3. آموزش اکوسیستم یادگیری ماشین با پایتون 
  4. آموزش متدها در یادگیری ماشین با پایتون 
  5. آموزش بارگیری داده ها برای پروژه های یادگیری ماشین
  6. آموزش درک داده ها با آمار در یادگیری ماشین
  7. آموزش آماده سازی داده ها در یادگیری ماشین با پایتون 
  8. آموزش انتخاب ویژگی داده ها در یادگیری ماشین با پایتون
  9. آموزش طبقه بندی در یادگیری ماشین با پایتون
  10. آموزش رگرسیون لجستیک در یادگیری ماشین با پایتون
  11. آموزش ماشین بردار پشتیبان در یادگیری ماشین با پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه