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

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

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

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

پیشنهاد ویژه : پکیج آموزش پایتون

بهبود عملکرد مدل ها در یادگیری ماشین با پایتون با Ensembles

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

روش های پی در پی گروه

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

روش های موازی گروه

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

روش های یادگیری گروه

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

bagging

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

bootstrap

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

رأی دادن

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

الگوریتم های گروه کیسه گذاری

موارد زیر سه الگوریتم گروه کیسه ای است –

درخت تصمیم کیسه ای

همانطور که می دانیم روشهای گروه کیسه گذاری با الگوریتمهایی که واریانس بالایی دارند به خوبی کار می کنند و در این زمینه بهترین مورد الگوریتم درخت تصمیم است. در دستورالعمل زیر پایتون ، ما قصد داریم مدل مجموعه درخت تصمیم کیسه ای را با استفاده از تابع BaggingClassifier sklearn با تصمیمTreeClasifier (الگوریتم درختان طبقه بندی و رگرسیون) در مجموعه داده های دیابت Pima Indians بسازیم.

ابتدا بسته های مورد نیاز را به شرح زیر وارد کنید –

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier

 

اکنون، ما باید مجموعه داده های pima-indians-diabet را بارگذاری کنیم همانطور که در مثال های قبلی انجام دادیم –

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

 

بعد، ورودی را برای اعتبار دهی ضربدر ۱۰ برابر به شرح زیر بدهید –

seed = 7
kfold = KFold(n_splits=10, random_state=seed)
cart = DecisionTreeClassifier()

 

ما باید تعداد درختانی را که می خواهیم بسازیم ارائه دهیم. در اینجا ما در حال ساخت ۱۵۰ درخت هستیم –

num_trees = 150

 

بعد مدل را با کمک اسکریپت زیر بسازید –

model = BaggingClassifier(base_estimator=cart, n_estimators=num_trees, random_state=seed)

 

نتیجه را به صورت زیر محاسبه و چاپ کنید –

results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

 

خروجی

۰٫۷۷۳۳۷۶۶۲۳۳۷۶۶۲۳۴

 

خروجی فوق نشان می دهد که ما حدود ۷۷٪ دقت مدل طبقه بندی درخت تصمیم خود را داریم.

جنگل تصادفی

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

در دستورالعمل پایتون زیر ما قصد داریم مدل گروه جنگل تصادفی کیسه ای را با استفاده از کلاس RandomForestClassifier sklearn در مجموعه داده های  Pima Indians بسازیم.

ابتدا بسته های مورد نیاز را به شرح زیر وارد کنید –

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier

 

اکنون، ما باید مجموعه داده های دیابت پیما را بارگیری کنیم، همانطور که در مثال های قبلی انجام شد –

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

 

بعد ، ورودی را برای اعتبار دهی ضربدر ۱۰ برابر به شرح زیر بدهید –

seed = 7
kfold = KFold(n_splits=10, random_state=seed)

 

ما باید تعداد درختانی را که می خواهیم بسازیم ارائه دهیم. در اینجا ما در حال ساخت ۱۵۰ درخت با نقاط تقسیم شده از بین ۵ ویژگی هستیم –

num_trees = 150
max_features = 5

 

بعد، مدل را با کمک اسکریپت زیر بسازید –

model = RandomForestClassifier (n_estimators = num_trees ، max_features = max_features)

 

نتیجه را به صورت زیر محاسبه و چاپ کنید –

results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

 

خروجی

۰٫۷۶۲۹۳۵۷۴۸۴۶۲۰۶۴۲

 

خروجی فوق نشان می دهد که ما حدود ۷۶٪ دقت مدل طبقه بندی شده تصادفی جنگل را داریم.

درختان اضافی

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

در دستورالعمل پایتون زیر، ما قصد داریم مدل گروه درخت اضافی را با استفاده از کلاس ExtraTreesClassifier sklearn در مجموعه داده های Pima Indians بسازیم.

ابتدا بسته های مورد نیاز را به شرح زیر وارد کنید –

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import ExtraTreesClassifier

 

اکنون، ما باید مجموعه داده های Pima Indians را بارگیری کنیم، همانطور که در مثال های قبلی انجام شد –

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

 

بعد ، ورودی را برای اعتبار دهی ضربدر ۱۰ برابر به شرح زیر بدهید –

seed = 7
kfold = KFold(n_splits=10, random_state=seed)

 

ما باید تعداد درختانی را که می خواهیم بسازیم ارائه دهیم. در اینجا ما در حال ساخت ۱۵۰ درخت با نقاط تقسیم شده از بین ۵ ویژگی هستیم –

num_trees = 150
max_features = 5

 

بعد، مدل را با کمک اسکریپت زیر بسازید –

num_trees = 150
max_features = 5

 

نتیجه را به صورت زیر محاسبه و چاپ کنید –

results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

 

خروجی

۰٫۷۵۵۱۴۳۵۴۰۶۶۹۸۵۶۶

 

خروجی فوق نشان می دهد که ما حدود ۷۵٫۵٪ دقت مدل طبقه بندی شده درختان اضافی را داریم.

تقویت الگوریتم های گروه

موارد زیر دو رایج ترین الگوریتم گروه تقویت کننده هستند –

AdaBoost

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

در دستورالعمل زیر پایتون ، ما قصد داریم مدل گروه Ada Boost را برای طبقه بندی با استفاده از کلاس AdaBoostClassifier sklearn در مجموعه داده های دیابت Pima Indians ایجاد کنیم.

ابتدا بسته های مورد نیاز را به شرح زیر وارد کنید –

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import AdaBoostClassifier

 

اکنون ، ما باید مجموعه داده هایpima-indians-diabet را بارگیری کنیم ، همانطور که در مثال های قبلی انجام شد –

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

 

بعد ، ورودی را برای اعتبار دهی ضربدر ۱۰ برابر به شرح زیر بدهید –

seed = 5
kfold = KFold(n_splits=10, random_state=seed)

 

ما باید تعداد درختانی را که می خواهیم بسازیم ارائه دهیم. در اینجا ما در حال ساخت ۱۵۰ درخت با نقاط تقسیم شده از بین ۵ ویژگی هستیم –

num_trees = 50

 

بعد ، مدل را با کمک اسکریپت زیر بسازید –

model = AdaBoostClassifier(n_estimators=num_trees, random_state=seed)

 

نتیجه را به صورت زیر محاسبه و چاپ کنید –

results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

 

خروجی

۰٫۷۵۳۹۴۷۳۶۸۴۲۱۰۵۲۷

 

خروجی فوق نشان می دهد که ما حدود ۷۵٪ دقت مدل گروه طبقه بندی کننده AdaBoost را بدست آورده ایم.

تقویت گرادیان تصادفی

همچنین به آن Gradient Boosting Machines گفته می شود. در دستور پایتون زیر ، ما قصد داریم مدل Stochastic Gradient Boostingensemble را برای طبقه بندی با استفاده از کلاس GradientBoostingClassifier sklearn در مجموعه داده های دیابت Pima Indians ایجاد کنیم.

ابتدا بسته های مورد نیاز را به شرح زیر وارد کنید –

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import GradientBoostingClassifier

 

اکنون ، ما باید مجموعه داده های دیابت پیما را بارگیری کنیم ، همانطور که در مثال های قبلی انجام شد –

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

 

بعد، ورودی را برای اعتبار دهی ضربدر ۱۰ برابر به شرح زیر بدهید –

seed = 5
kfold = KFold(n_splits=10, random_state=seed)

 

ما باید تعداد درختانی را که می خواهیم بسازیم ارائه دهیم. در اینجا ما در حال ساخت ۱۵۰ درخت با نقاط تقسیم شده از بین ۵ ویژگی هستیم –

num_trees = 50

 

بعد ، مدل را با کمک اسکریپت زیر بسازید –

model = GradientBoostingClassifier(n_estimators=num_trees, random_state=seed)

 

نتیجه را به صورت زیر محاسبه و چاپ کنید –

results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

 

خروجی

۰٫۷۷۴۶۵۸۲۳۶۵۰۰۳۴۱۸

 

خروجی فوق نشان می دهد که ما حدود ۷۷٫۵ درصد دقت مدل گروه طبقه بندی کننده Gradient Boosting خود را داریم.

الگوریتم های گروه رای گیری

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

در دستورالعمل پایتون زیر، ما قصد داریم مدل گروه رای دهی را برای طبقه بندی با استفاده از کلاس VotingClassifier از sklearn در مجموعه داده های دیابت Pima Indians ایجاد کنیم. ما در حال ترکیب پیش بینی های رگرسیون لجستیک ، طبقه بندی درخت تصمیم و SVM برای یک مشکل طبقه بندی به شرح زیر هستیم –

ابتدا بسته های مورد نیاز را به شرح زیر وارد کنید –

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.ensemble import VotingClassifier

 

اکنون، ما باید مجموعه داده های pima-indians-diabet را بارگیری کنیم ، همانطور که در مثال های قبلی انجام شد –

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

 

بعد ، ورودی را برای اعتبار دهی ضربدر ۱۰ برابر به شرح زیر بدهید –

kfold = KFold(n_splits=10, random_state=7)

 

بعد ما باید زیر مدل ها را به شرح زیر ایجاد کنیم –

estimators = []
model1 = LogisticRegression()
estimators.append(('logistic', model1))
model2 = DecisionTreeClassifier()
estimators.append(('cart', model2))
model3 = SVC()
estimators.append(('svm', model3))

 

اکنون، با ترکیب پیش بینی مدل های فرعی ایجاد شده در بالا ، مدل گروه رأی گیری را ایجاد کنید.

ensemble = VotingClassifier(estimators)
results = cross_val_score(ensemble, X, Y, cv=kfold)
print(results.mean())

 

خروجی

۰٫۷۳۸۲۲۶۲۴۷۴۳۶۷۷۳۸

 

خروجی فوق نشان می دهد که ما حدود ۷۴٪ دقت مدل گروه طبقه بندی کننده رأی خود را بدست آورده ایم.

 

منبع.

 

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

  1. آموزش یادگیری ماشین با پایتون
  2.  مبانی یادگیری ماشین با پایتون  
  3. آموزش اکوسیستم یادگیری ماشین با پایتون 
  4. آموزش متدها در یادگیری ماشین با پایتون 
  5. آموزش بارگیری داده ها برای پروژه های یادگیری ماشین
  6. آموزش درک داده ها با آمار در یادگیری ماشین
  7. آموزش آماده سازی داده ها در یادگیری ماشین با پایتون 
  8. آموزش انتخاب ویژگی داده ها در یادگیری ماشین با پایتون
  9. آموزش طبقه بندی در یادگیری ماشین با پایتون
  10. آموزش رگرسیون لجستیک در یادگیری ماشین با پایتون
  11. آموزش ماشین بردار پشتیبان در یادگیری ماشین با پایتون
  12. آموزش درخت تصمیم در یادگیری ماشین با پایتون
  13. آموزش Naïve Bayes در یادگیری ماشین با پایتون
  14. آموزش جنگل تصادفی در یادگیری ماشین با پایتون
  15. آموزش الگوریتم های رگرسیون در یادگیری ماشین با پایتون
  16. آموزش الگوریتم های خوشه بندی در یادگیری ماشین با پایتون
  17. آموزش الگوریتم K-Means در یادگیری ماشین با پایتون
  18. آموزش الگوریتم تغییر میانگین در یادگیری ماشین با پایتون
  19. آموزش خوشه بندی سلسله مراتبی در یادگیری ماشین با پایتون
  20. آموزش یافتن نزدیکترین همسایه در یادگیری ماشین با پایتون
  21. آموزش معیارهای عملکرد در یادگیری ماشین با پایتون
  22. آموزش گردش کار خودکار در یادگیری ماشین با پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه