<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های حسن نظری</title><link>https://virgool.ir/feed/@h.nazari</link><description></description><language>fa</language><pubDate>2026-11-11 12:40:59</pubDate><image><url>https://files.virgool.ir/upload/users/1348346/avatar/vwT1mc.png</url><title>حسن نظری</title><link>https://virgool.ir/@h.nazari</link></image><item><title>Under-fitting و Over-fitting در دنیای یادگیری ماشین</title><link>https://virgool.ir/@h.nazari/under-fitting-و-over-fitting-در-دنیای-یادگیری-ماشین-rvyqwpztqn0z</link><description>حسن نظریمی خواهیم بایاس و واریانس را برای یک تخمینگر در مجموعه داده بدست آوریم. مجموعه داده را به دو بخش آموزش و تست تقسیم می کنیم یعنی به ترتیب x_trainو y_train و x_test و y_test.بایاس:اگر به کمک مجموعه آموزش x_train یک تخمین روی داده ها انجام بدهیم یعنی مثلا رگرسیون انجام دهیم، در این صورت یک تعداد خروجی y_predicted بدست می آوریم. به اختلاف مقدار واقعی خروجی با مقدار خروجی محاسبه شده، بایاس گفته می شود.Bias=y_predicted-y_trainبه عبارت دیگر، به اختلاف بین مقدار واقعی و مقدار مورد انتظار(امید ریاضی) برای خروجی، بایاس گفته می شود یعنیBias= z-E(z*)در اینجا مقدار مورد انتظار (امید ریاضی) و تابع چگالی احتمال از روی مجموعه آموزش بدست می آید و z*، تخمین z است.واریانس:واریانس را می توان به معنای اختلاف مقدار واقعی خروجی با مقدار خروجی محاسبه شده توسط داده تست، در نظر گرفت.Variance=(y_predicted-y_test)^2زیر برازش (Underfitting):وقتی خطای مدل روی داده آموزش زیاد باشد در این صورت گفته می شود که مدل زیربرازش است. این حالت معمولا به علت کم بودن تعداد داده آموزش یا نامناسب بودن روش تخمین اتفاق می افتد. اگر دقت در حالت آموزش کم باشد به دنبال آن در حالت تست هم دقت کم خواهد بود.بیش برازش (Overfitting):اگر خطای مدل در حالت آموزش کم باشد ولی در حالت تست خطای زیادی مشاهده شود در این صورت مدل بیش برازش شده است. این شرایط وقتی اتفاق می افتد که مقدار ابرمولفه (هایپرپارامتر) طوری تنظیم شده باشد که خطای آموزش بسیار کوچک شود.مثال1:خطای برای سه مدل Aو B و Cدر جدول زیر گزارش شده است:همانطور که مشاهده می شود:-در مدل اول خطا در آموزش و تست هر دو زیاد است پس در حالت زیر برازش قرار دارد.-در مدل دوم خطا در آموزش و تست هر دو کم است پس در حالت خوبی قرار دارد.-در مدل سوم خطا در آموزش خیلی کم و در تست زیاد است پس در حالت بیش برازش قرار دارد.مثال2.در رگرسیون باید یک خط یا منحنی را طوری بیابیم که با کمترین خطا از میان داده ها عبور کند. می توان خط یا منحنی را به کمک داده آموزش محاسبه کرد و با همان داده آموزش یا داده تست، دقت خط یا منحنی را محاسبه کرد.منبع شکل: https://scikit-learn.org/stable/auto_examples/model_selection/plot_underfitting_overfitting.htmlدر شکل بالا  سه نمودار رسم شده است که در همه آن ها نمونه های داده با نقاط آبی رنگ مشخص شده اند و مدل واقعی نیز نارنجی رنگ است. سه منحنی رگرسیون رسم شده است که-در نمودار سمت چپ یک خط (منحنی درجه 1) با بایاس و واریانس زیاد رسم شده است.-در نمودار سمت وسطی یک منحنی درجه 4 با بایاس و واریانس کم مشاهده می گردد.-در نمودار سمت راست یک منحنی درجه 15 با بایاس کم و واریانس زیاد نمایش داده شده است.می توان دریافت که شکل دوم خطای کمتری را نشان می دهد و بهترین روش است.رابطه بایاس و واریانس:1-اگر از داده آموزش و یک تخمینگر ساده استفاده شود ===&gt; بایاس زیاد2-اگر از یک تخمینگر کمی پیچیده تر استفاده شود ===&gt; بایاس و واریانس کم3-اگر از یک تخمینگر پیچیده استفاده شود ===&gt; بایاس کم و واریانس زیادتوجه شود که در شکل زیر مربع بایاس با واریانس مقایسه شده است.منبع شکل: https://medium.com/@prvnk10/bias-variance-tradeoff-ebf13adcea42منبع:https://towardsdatascience.com/bias-variance-and-how-they-are-related-to-underfitting-overfitting-4809aed98b79</description><category>حسن نظری</category><author>حسن نظری</author><pubDate>Fri, 14 Jan 2022 12:35:20 +0330</pubDate></item><item><title>ارزیابی-متقابل در یادگیری ماشین: انواع؟ روش کار؟ کدنویسی؟</title><link>https://virgool.ir/@h.nazari/ارزیابی-متقابل-در-یادگیری-ماشین-انواع-روش-کار-کدنویسی-cutve2mgyfz6</link><description>ارزیابی-متقابل در یادگیری ماشین: انواع؟ روش کار؟ کدنویسی؟نویسنده: ولادیمیر لیاشنکو، مترجم: حسن نظریدر یادگیری ماشین[1]، معمولا تعمیم به قابلیت یک الگوریتم در موثر بودن در برابر ورودی های مختلف اشاره دارد. این یعنی مدل ML در مواجهه با ورودی جدید از همان نوع توزیع داده آموزشی، دچار کاهش عملکرد نمی شود.تعمیم دادن برای انسان از طبیعی ترین کارهای ممکن است. ما می توانیم پرواز را کلاس بندی کنیم. برای مثال، اساسا ما می توانیم یک سگ را تشخیص بدهیم حتی اگر قبلا هم نوع آن ندیده باشیم. با این حال، این می تواند کاملا یک چالش برای یک مدل ML باشد. این نکته نشان می دهد وقتی مدل را می سازیم چرا چک کردن قابلیت تعمیم الگوریتم یک وظیفه مهم است که نیازمند توجه زیاد است.برای انجام کار، ما از ارزیابی-متقابل[2]استفاده می کنیم.در این مقاله با به موضوعات زیر می پردازیم:-ارزیابی-متقابل چیست: تعریف، هدف از استفاده و تکنیک ها-تکنیک های مختلف CV: کنار گذاشتن، k-بخش ، رهاکردن یکی، رها کردن p، k-بخش همگن، k-بخش تکرار شده، K-بخش تو در تو، CV کامل.چطور باید از این روش ها استفاده کرد: sklearnارزیابی-متقابل در یادگیری ماشین: sklearn، CatBoost،ارزیابی-متقابل در یادگیری عمیق: Keras، PyTorch، MxNet.بهترین تمرین ها و راهنمایی ها: سری های زمانی، داده های اقتصادی و دارویی، تصاویرارزیابی-متقابل چیست؟ارزیابی-متقابل یک روش برای راستی آزمایی یک مدل یادگیری ماشین و آزمایش کردن عملکرد آن است. CV معمولا در کارهای ML کاربردی استفاده می گردد. این روش برای مقایسه کردن و انتخاب مدل مناسب برای یک مسئله مدل سازی پیش بینی کننده خاص کمک می کند.CV به راحتی فهمیده می شود، به راحتی پیاده سازی می گردد، و این روش به سمت داشتن بایاس کمتر نسبت به روش هایی که امتیازات بهینه بودن مدل را شمارش می کنند حرکت می کند. تمام این ها باعث می شوند ارزیابی-متقابل یک ابزار قدرتمند برای انتخاب بهترین مدل برای یک کار خاص باشد.در زیر تکنیک های زیادی وجود دارند که می توانند برای ارزیابی-متقابل یک مدل استفاده شوند. هنوز، همه آن ها یک الگوریتم مشابه دارند:1-مجموعه داده را به دو قسمت تقسیم کنید، یکی برای آموزش دادن، دیگری برای تست کردن.2-مدل را روی مجموعه آموزشی آموزش دهید.3-مدل را روی مجموعه تست آزمایش کنید.4-مراحل 1-3 را چندین بار تکرار کنید. این تعداد به روش CV که شما استفاده می کنید وابسته است.همانطور که شما می دانید، روش های CV زیادی وجود دارند. برخی از آنها به صورت رایج استفاده می شوند، بقیه فقط در تئوری به کار می روند. به روش های ارزیابی متقابل که در این مقاله به آنها پرداخته شده توجه کنید.- کنار گذاشتن- k-بخش- رهاکردن یکی- رها کردن p- k-بخش همگن- k-بخش تکرار شده- k-بخش تو در تو- CV کاملکنار گذاشتنارزیابی متقابل کنار گذاشتن ساده ترین و متداول ترین تکنیک است. ممکن است شما ندانید که این کار، کنار گذاشتن است ولی شما هر روز قطعا از آن استفاده می کنید.الگوریتم تکنیک کنار گذاشتن:1-مجموعه داده را به دو قسمت تقسیم کنید، یکی برای آموزش دادن، دیگری برای تست کردن. معمولا، 80% از مجموعه داده برای مجموعه آموزش قرار داده می شود و 20% برای مجموعه تست است اگرچه شما می توانید هر جداسازی که مناسب بدانید انتخاب کنید.2-مدل را روی مجموعه آموزشی آموزش دهید.3-مدل را روی مجموعه تست آزمایش کنید.4-نتایج ارزیابی را ذخیره کنید.ارزیابی متقابل کنار گذاشتنهمین است.ما معمولا از روش کنار گذاشتن روی مجموعه داده های بزرگ استفاده می کنیم چون این روش فقط یک بار  نیازمند آموزش دادن مدل است. پیاده سازی کنار گذاشتن ساده است. برای نمونه، شما می توانید این کار را با استفاده از این انجام دهید: sklearn.model_selection.train_test_splitimport numpy   as npfrom  sklearn.model_selection import train_test_splitX, y = np.arange(10).reshape((5, 2)), range(5)X_train, X_test, y_train, y_test =   train_test_split(X, y,test_size=0.2,random_state=111)تا اینجا، کنار گذاشتن یک عیب بزرگ دارد.برای مثال، یک مجموعه داده از نظر توزیع کاملاً یکنواخت نیست. اگر چنین باشد، ممکن است پس از تقسیم در یک نقطه نامناسب قرار بگیریم. برای مثال، یک مجموعه داده آموزشی یک مجموعه تست را ارائه نخواهد کرد. ممکن است هر دو مجموعه آموزش و تست تفاوت زیادی داشته باشند، یکی از آن ها ممکن است ساده تر و یا سخت تر باشد.به علاوه، این حقیقت که ما در این روش مدل خودمان را فقط یک بار تست می کنیم می تواند یک عامل مشکل زا باشد. به دلایل ذکر شده فوق، نتیجه بدست آمده با روش کنار گذاشتن می تواند غیر دقیق فرض شود.k-بخشCV k-بخش روشی است که عیوب روش کنار گذاشتن را کمینه می کند. CV k-بخش راهکار جدیدی برای جداسازی مجموعه داده معرفی می کند که برای فائق آمدن به &#34;مشکل تست فقط یکبار&#34; کمک کننده است.الگوریتم روش k-بخش:1- kشماره بخش ها را انتخاب کنید. معمولا k 5 یا 10 است اما شما می توانید هر عدد دیگری که کمتر از طول مجموعه داده است انتخاب کنید.2-مجموعه داده را به k قسمت(به آنها بخش گفته می شود) برابر (در صورت امکان) تقسیم کنید.3-k-1 بخش را انتخاب کنید که مجموعه داده آموزش خواهند بود. بخش باقی مانده مجموعه تست خواهد بود.4-مدل را با مجموعه آموزش آموزش دهید. در هر تکرار ارزیابی متقابل، شما باید یک مدل جدید را به طور مستقل نسبت به مدل آموزش داده شده در تکرار قبلی، آموزش دهید.5-با مجموعه تست، ارزیابی کنید.6-نتایج ارزیابی را ذخیره کنید.7-گام های 3-6 را k بار  تکرار کنید. هر بار از بخش بافی مانده به عنوان داده تست استفاده کنید. در پایان، شما باید مدل ارزیابی شده برای هر بخشی که دارید داشته باشید.8-برای بدست آوردن امتیاز نهایی، از نتایجی که شما در گام 6 بدست آوردید متوسط بگیرید.ارزیابی متقابل k-بخششما می توانید برای اجرای ارزیابی متقابل k-بخش از این استفاده کنید:  sklearn.model_selection.KFoldimport numpy as npfrom sklearn.model_selection import KFoldX = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])y = np.array([1, 2, 3, 4])kf = KFold(n_splits=2)for train_index, test_index in  kf.split(X):print(&#34;TRAIN:&#34;, train_index, &#34;TEST:&#34;, test_index)X_train, X_test = X[train_index],   X[test_index]y_train, y_test = y[train_index],   y[test_index]به صورت کلی، همیشه بهتر است از روش k-بخش به جای کنار گذاشتن استفاده شود. در رقابت دو روش، مقایسه k-بخشی نتایج اطمینان بخش تر و پایدارتری می دهد آموزش دادن و تست کردن روی چندین بخش متفاوت مجموعه داده انجام شده است. ما می توانیم امتیاز نهایی مقاوم تری ایجاد کنیم به شرطی که تعداد بخش ها را برای تست کردن مدل روی زیرمجموعه های مختلف زیاد را افزایش دهیم.تا اینجا، روش k-بخش یک عیب دارد. افزایش k سبب افزایش مدل ها در آموزش دادن می شود و فرآیند آموزش ممکن است واقعا گران و زمانبر شود.رهاکردن یکیارزیابی متقابل رها کردن یکی[3]، یک مورد شدت یافته CV k-بخش است. فرض کنید اگر k برابر n باشد که n تعداد نمونه ها در مجموعه داده است. بدین ترتیب مورد k-بخش برابر روش رهاکردن یکی است.الگوریتم روش LOOCV:1-یک نمونه از مجموعه داده که مجموعه تست خواهد بود انتخاب کنید.2-n-1 نمونه باقی مانده مجموعه آموزش خواهند بود.3-مدل را روی مجموعه آموزشی، آموزش دهید. در هر تکرار، یک مدل جدید باید آموزش داده شود.4-با مجموعه تست، ارزیابی کنید.5-نتایج ارزیابی را ذخیره کنید.6-گام های 1-5 را n بار تکرار کنید بدین ترتیب ما برای n نمونه، n مجموعه آموزش و تست مختلف داریم.7-برای یافتن امتیاز نهایی از نتایجی که شما در گام 5 ام بدست آوردید میانگین بگیرید.ارزیابی متقابل رهاکردن تکیبرای LOOCV نیز sklearn یک روش داخلی دارد. این روش می تواند در اینجا یافت شود: model_selection library – sklearn.model_selection.LeaveOneOut.import numpy as npfrom sklearn.model_selection import  LeaveOneOutX = np.array([[1, 2], [3, 4]])y = np.array([1, 2])loo = LeaveOneOut()for train_index, test_index in  loo.split(X):print(&#34;TRAIN:&#34;, train_index, &#34;TEST:&#34;, test_index)X_train, X_test = X[train_index],   X[test_index]y_train, y_test = y[train_index],   y[test_index]بزرگترین مزیت ارزیابی متقابل رهاکردن یکی اینست که این روش هیچ داده ای را هدر نمی دهد. ما فقط یک نمونه از تمام مجموعه داده را به عنوان مجموعه تست استفاده می کنیم، اگرچه بقیه مجموعه آموزش هستند. اما وقتی با CV k-بخش مقایسه شود، LOOCV نیازمند است n مدل را به جای k مدل بسازد، از طرفی ما می دانیم که n که معرف تعداد نمونه ها است در مجموعه داده خیلی بیشتر از k است. این یعنی LOOCV از نظر محاسباتی پرهزینه تر از k-بخش است، با استفاده از LOOCV ممکن است زمان زیادی صرف ارزیابی متقابل مدل شود.بنابراین، اجتماع علم داده، بر اساس شواهد تجربی و روش های مختلف یک قانون کلی دارد، که پیشنهاد می کند که 5- یا 10-بخش ارزیابی متقابل باید به LOOCV ترجیح داده شود.رها کردن pروش ارزیابی متقابل رهاکردن [4]p، مشابه CV رهاکردن یکی است زیرا این روش تمام مجموعه های آموزش و تست را با استفاده از p نمونه به عنوان مجموعه تست می سازد. تمام مطالب گفته شده درباره LOOCV  برای LpOC هم برقرار است.تا اینجا، توجه به این نکته مفید است که برخلاف LOOCV و k-بخش، مجموعه های تست برای LpOC به شرطی که p از یک بزرگتر باشد با هم همپوشانی خواهند داشت.الگوریتم روش LpOC:1-p نمونه از مجموعه داده که مجموعه تست خواهد بود انتخاب کنید.2-n-p نمونه باقی مانده مجموعه آموزش خواهند بود.3-مدل را با مجموعه آموزش، آموزش دهید. در هر مرحله یک مدل جدید باید آموزش ببیند.4-با مجموعه تست، ارزیابی کنید.5-نتایج ارزیابی را ذخیره کنید.6-گام های 2-5 را C(n,p) (ترکیب p از n) بار تکرار کنید.7-برای یافتن امتیاز نهایی از نتایجی که شما در گام 5 ام بدست آوردید میانگین بگیرید.شما می توانید CV رهاکردن p را با استفاده از sklearn اجرا کنید:– sklearn.model_selection.LeavePOut.import numpy as npfrom sklearn.model_selection import  LeavePOutX = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])y = np.array([1, 2, 3, 4])lpo = LeavePOut(2)for train_index, test_index in  lpo.split(X):print(&#34;TRAIN:&#34;, train_index, &#34;TEST:&#34;, test_index)X_train, X_test = X[train_index],   X[test_index]y_train, y_test = y[train_index],   y[test_index]LpOC تمام عیوب LOOCV را دارد، اما، باین حال، به اندازه LOOCV مقاوم است.k-بخش همگنگاهی ما با یک عدم توازن در مقدار هدف در مجموعه داده مواجه می شویم. برای مثال، در یک مجموعه داده درباره قیمت ساعت مچی، ممکن است بیشتر تعداد ساعت ها قیمت بالایی داشته باشند. در مورد کلاس بندی، در مجموعه داده سگ ها و گربه ها ممکن است یک شیفت بزرگ به سمت کلاس سگ ها وجود داشته باشد.k-بخش همگن، نوع متفاوت روش CV k-بخش است که طراحی شده تا در برخی موارد عدم توازن هدف موثر باشد.این روش به صورتی که در ادامه می آید کار می کند. همگن مجموعه داده را به k بخش تقسیم می کند به طوری که هر بخش تقریبا شامل درصدی از نمونه های هر طبقه هدف، به صورت مشابه یک مجموعه کامل است. در مورد رگرسیون، همگن این اطمینان را می دهد که متوسط مقدار هدف تقریبا در همه بخش ها برابر است.الگوریتم روش k-بخش همگن:1-تعداد بخش ها را انتخاب کنید.2-مجموعه داده را به k بخش تقسیم کنید. هر بخش باید شامل تقریبا همان درصدی از نمونه های هر کلاس هدف، مشابه با مجموعه کامل باشد.3-k-1 بخش را انتخاب کنید که مجموعه آموزش خواهند بود. بخش های باقی مانده مجموعه تست خواهند بود.4-مدل را با مجموعه آموزش آموزش دهید. در هر تکرار یک مدل جدید باید آموزش داده شود.5-با مجموعه تست ارزیابی را انجام دهید.6-نتایج ارزیابی را ذخیره کنید.7-گام های 3-6 را k بار تکرار کنید. هر بار بخش باقی مانده را به صورت مجموعه تست استفاده کنید. در پایان، شما باید برای هر بخشی که دارید یک مدل ارزیابی شده داشته باشید.8-برای یافتن امتیاز نهایی از نتایجی که شما در گام 6 ام بدست آوردید میانگین بگیرید.همانطور که احتمالا متوجه شدید، الگوریتم برای روش k-بخش همگن مشابه روش k-بخش استاندارد است. شما نیاز به کدنویسی چیزهای اضافه ندارید زیرا این روش هر چیز ضروری را برای شما انجام خواهد داد.k-بخش همگن همچنین یک روش داخلی در اینجا دارد sklearn – sklearn.model_selection.StratifiedKFold.import numpy as npfrom sklearn.model_selection import  StratifiedKFoldX = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])y = np.array([0, 0, 1, 1])skf =   StratifiedKFold(n_splits=2)for train_index, test_index in skf.split(X,   y):print(&#34;TRAIN:&#34;, train_index, &#34;TEST:&#34;, test_index)X_train, X_test = X[train_index],   X[test_index]y_train, y_test = y[train_index],   y[test_index]همه گفته ها درباره CV k-بخش درباره k-بخش همگن هم صادق است. وقتی بین روش های مختلف CV انتخاب می کنیم، باید مطمئن باشیم که از یک روش مناسب استفاده می کنیم. برای مثال، شاید شما فکر کنید که مدل شما بد کار می کند زیرا شما از روش CV k-بخشی برای ارزیابی مدلی استفاده کردید که روی مجموعه داده با یک کلاس نامتوازن آموزش داده شده بود. برای جلوگیری از آن شما همیشه باید یک تحلیل داده اکتشافی مناسب روی داده خودتان انجام دهید.k-بخش تکرار شدهارزیابی متقابل k-بخش تکرار شده یا CV زیر نمونه برداری تصادفی تکرار شده در بین همه روش هایCV  این مقاله شاید مقاوم ترین باشد. این روش یک نوع متفاوت روش k-بخش است اما در مورد k-بخش کردن تکرار شده، k تعداد بخش ها نیست. آن تعداد باری است که ما می خواهیم مدل را آموزش دهیم.ایده کلی اینست که ما می خواهیم در هر تکرار تعداد تصادفی نمونه از تمام مجموعه داده به عنوان مجموعه تست انتخاب کنیم. برای مثال، اگر ما تصمیم بگیریم که 20% مجموعه داده، مجموعه تست ما خواهند بود، 20% نمونه ها به صورت تصادفی انتخاب خواهند شد و 80% مجموعه آموزش خواهند شد.الگوریتم روش k-بخش تکرار شده:1-عدد k را انتخاب کنید-تعداد باری که مدل آموزش داده خواهد شد.2-تعداد نمونه هایی را که مجموعه تست خواهند بود را انتخاب کنید.3-مجموعه داده را جداسازی کنید.4-مدل را با مجموعه آموزش آموزش دهید. در هر تکرار ارزیابی متقابل یک مدل جدید باید آموزش داده شود.5-با مجموعه تست ارزیابی را انجام دهید.6-نتایج ارزیابی را ذخیره کنید.7-گام های 3-6 را k بار تکرار کنید.8-برای یافتن امتیاز نهایی از نتایجی که شما در گام 6 ام بدست آوردید میانگین بگیرید.k-بخش تکرار شدهk-بخش تکرار شده مزایای مشخصی نسبت به CV k-بخش استاندارد دارد. اولا، جداسازی آموزش\تست به تعداد تکرارها وابسته نیست. دوما، ما می توانیم هر بار ابعاد منحصر به فردی برای هر تکرار تنظیم کنیم. سوما، انتخاب تصادفی نمونه ها از مجموعه داده سبب می گردد k-بخش تکرار شده نسبت به بایاس انتخاب هرچه بیشتر مقاوم باشد.تا اینجا، برخی عیوب وجود دارند. CV k-بخش تضمین می کند که مدل روی همه نمونه ها تست خواهد شد، در حالی که، k-بخش تکرار شده بر پایه تصادفی سازی است که این یعنی شاید بعضی نمونه ها تا آخر کار هرگز به عنوان مجموعه تست انتخاب نشوند. به طور همزمان، ممکن است بعضی نمونه ها چندبار انتخاب شوند.Sklearn برای پیاده سازی CV k-بخش تکرار شده به شما کمک خواهد کرد. فقط از این استفاده کنید:  sklearn.model_selection.RepeatedKFold. در پیاده سازی این تکنیک در sklearn  شما باید تعداد بخش هایی را که شما می خواهید داشته باشید (n_splits) و تعداد دفعاتی که جداسازی انجام خواهد شد (n_repeats) را تنظیم کنید. این تضمین می کند که شما بخش های متفاوتی در هر تکرار خواهید داشت.import numpy as npfrom sklearn.model_selection import  RepeatedKFoldX = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])y = np.array([0, 0, 1, 1])rkf = RepeatedKFold(n_splits=2, n_repeats=2, random_state=42)for train_index, test_index in  rkf.split(X):print(&#34;TRAIN:&#34;, train_index, &#34;TEST:&#34;, test_index)X_train, X_test = X[train_index],   X[test_index]y_train, y_test = y[train_index],   y[test_index]k-بخش تو در توبرخلاف سایر روش های CV، که برای ارزیابی کیفیت یک الگوریتم طراحی شده اند، CV k-بخش تو در تو محبوب ترین راه برای تنظیم پارامترهای یک الگوریتم است.فرض کنید که ما یک پارامتر p داریم که معمولا وابسته به پایه الگوریتمی است که با آن در حال ارزیابی متقابل هستیم. برای مثال، برای رگرسیون لاجستیک شاید این می تواند پارامتر جریمه باشد که برای مشخص کردن نرم در جریمه کردن استفاده می شود.الگوریتم روش k-بخش تو در تو:1-یک k را انتخاب کنید-تعداد برای بخش ها، برای مثال 10-فرض کنید که ما این عدد را انتخاب کردیم.2-یک پارامتر p انتخاب کنید. فرض کنید که الگوریتم ما رگرسیون لاجستیک است و p پارامتر جریمه p = {‘l1’, ‘l2’, ‘elasticnet’, ‘none’} است.3-مجموعه داده را به 10 بخش تقسیم کنید و یکی از آنها را به عنوان تست در نظر بگیرید.4-یکی از بخش های آموزشی را برای ارزیابی قرار دهید.5-برای هر مقدار p روی این 8 بخش آموزشی باقیمانده آموزش دهید و روی بخش ارزیابی، ارزیابی کنید. شما الان 4 اندازه گیری دارید.6-مراحل 4-5 را 9 بار تکرار کنید. آن بخش آموزشی را که بخش ارزیابی است را بچرخانید. شما الان 4×9 اندازه گیری دارید.7-p را طوری انتخاب کنید که متوسط خطای آموزش روی 8 بخش کمینه شود. از این p برای ارزیابی مجموعه تست استفاده کنید.8- از گام 2، 10بار تکرار کنید، با استفاده از هر بخش، از آن به صورت چرخشی به عنوان بخش تست استفاده کنید.9-متوسط و انحراف معیار اندازه گیری ارزیابی روی 10 بخش تست را ذخیره کنید.10-بهترین الگوریتم اجرا شده آنی است که بهترین متوسط عملکرد خارج از نمونه را روی 10 بخش تست داشته است.این تکنیک از نظر محاسباتی پر هزینه است زیرا در تمام گام های 1-10 مدل های زیادی باید آموزش داده شوند و ارزیابی شوند. تا اینجا، CV k-بخش تو در تو به صورت رایج استفاده می گردد و شاید برای چندین ماموریت ML واقعا موثر باشد.متاسفانه، روش داخلی sklearn که بتواند CV k-بخش تو در تو را برای شما اجرا کند وجود ندارد. این لحظه ای است که شما باید وارد گوگل شوید و پیاده سازی یا کد یک شخص برایاین کار را خودتان پیدا کنید.ارزیابی متقابل کاملCV کامل کمترین روش مورد استفاده CV است. ایده کلی اینست که ما یک عدد k انتخاب کنیم-طول مجموعه آموزش و ارزیابی روی هر جداسازی ممکن شامل k نمونه در مجموعه آموزش.مقدار آن جداسازی ها می تواند با C(n,k) محاسبه شود که n طول مجموعه داده است. اگر k بزرگتر از 2 باشد، ما می خواهیم مدل خود را بارها آموزش دهیم که این قطعا یعنی فهم و درک یک زمان و محاسبات روال پرهزینه.این دلیل اینست که چرا CV کامل گاها در روش های تئوری استفاده می گردد یا شاید یک فرمول موثر است که به کمینه کردن محاسبات کمک می کند.الگوریتم ارزیابی متقابل کامل:1-تعداد k را انتخاب کنید-تعداد باری که مدل آموزش داده خواهد شد.2-مجموعه داده را جداسازی کنید.3-مدل را با مجموعه آموزش آموزش دهید.4-با مجموعه تست ارزیابی را انجام دهید.5-نتایج ارزیابی را ذخیره کنید.6-گام های 3-6 را C(n,k) بار تکرار کنید.7-برای یافتن امتیاز نهایی از نتایجی که شما در گام 5 ام بدست آوردید میانگین بگیرید.ارزیابی متقابل در یادگیری ماشینبیشتر روش های ارزیابی متقابل ذکر شده بالا به صورت گسترده در ML استفاده می شود. مهم است به یاد داشته باشیم که استفاده از روش های CV مناسب می توانند زمان زیادی را برای شما ذخیره کنند و برای انتخاب بهترین مدل برای ماموریت کمک کنند.این به این معناست که، اولا، بهتر است همیشه مدل ارزیابی متقابل شود، دوما، شما باید یک روش CV مرتبط را انتخاب نمایید. در نتیجه دانستن مزایا و معایب روش های ارزیابی متقابل صروری است.ذکر این نکته مفید است که اگر شما می خواهید یک مدل را ارزیابی متقابل کنید شما باید همیشه مدل را به صورت دستی چک کنید زیرا بعضی الگوریتم های ML، برای مثال، CatBoost روش های داخلی مربوط به خودش را دارد. شما می توانید در ارتباط با ماموریت ML خودتان آنها را پیدا کنید و به جای روش های داخلی sklearn از آنها استفاده کنید.در کل، همانطور که توجه کردید تکنیک های CV زیادی روش های داخلی sklearn دارند. من به شدت توصیه می کنم که از آنها استفاده کنید چون این روش ها برای ماموریت های بزرگ زمان زیادی را برایشما ذخیره می کنند.ارزیابی متقابل در یادگیری عمیقارزیابی متقابل در یادگیری عمیق[5] شاید کمی دشوار باشد زیرا بیشتر روش های CV نیازمند آموزش دادن مدل حداقل در یک تعداد دفعات هستند.در یادگیری عمیق، شما به علت هزینه متناظر با k بار آموزش دادن متفاوت مدل ها، به صورت منطقی می خواهید طوری حرکت کنید که از CV دوری کنید. به جای انجام k-بخش یا سایر روش های CV، شما می توانید از یک زیرمجموعه تصادفی داده های تصادفی خودتان به صورت یک کنار گذاشتن برای ارزیابی فرآیند ها استفاده کنید.برای نمونه، کتابخانه یادگیری عمیق Keras برای به کارگیری یکی از دو پارامتر برای تابع برازش که آموزش دادن را اجرا می کند شما را راهنمایی می کند.1. validation_split: درصدی از داده که باید برای ارزیابی کنار گذاشته شود.2.validation_data: یک تاپل از (X, y) که باید برای ارزیابی استفاده شود. این پارامتر روی پارامتر validation_split بازنویسی می کند که این یعنی شما هر بار فقط از یکی از این پارامترها می توانید استفاده کنید.یک روش مشابه در آموزش های رسمی سایر قالب های DL مانند PyTorch و MxNet استفاده می گردد. آنها همچنین جداسازی مجموعه داده به سه قسمت: آموزش دادن، ارزیابی کردن و تست کردن را پیشنهاد کردند.1. آموزش دادن- بخشی از مجموعه داده برای انجام آموزش روی آن2. ارزیابی کردن- بخشی از مجموعه داده برای انجام ارزیابی حین آموزش3. تست کردن-بخشی از مجموعه داده برای انجام ارزیابی پایانی روی مدلپس، شما می توانید از ارزیابی متقابل درDL استفاده کنید به شرطی که مجموعه داده خیلی کوچک باشد(شامل صدها نمونه). در این مورد، یادگیری یک مدل پیچیده شاید کار غیر مرتبطی باشد بنابراین مطمئن شوید که شما کار را بیشتر پیچیده نمی کنید.بهترین تمرینات و راهنمایی هاتوجه به این نکته مهم است که بعضی چیز ها سبب شده است که اجرا کردن ارزیابی متقابل کمی سخت باشد.برای مثال، این خیلی ساده است که زمان جداسازی مجموعه داده یک اشتباه منطقی رخ دهد که این شاید سبب پاسخ CV غیرمطمئن خواهد شد.شما در زیر می توانید برخی از راهنمایی هایی را که وقتی یک مدل را ارزیابی متقابل می کنید نیاز دارید در ذهن داشته باشید را پیدا کنید:1-زمان جداسازی داده منطقی باشید (آیا روش تقسیم منطقی است؟)2-از روش CV مناسب استفاده کنید (آیا این روش برای مورد استفاده من عملیاتی است؟)3-وقتی با سری های زمانی کار می کنید روی گذشته ارزیابی نکنید (به راهنمایی اول نگاه کنید)4-وقتی با داده پزشکی یا مالی کار می کنید جداسازی به وسیله شخص را به یاد داشته باشید. از اینکه هم داده آموزش و هم داده تست را برای یک شخص داشته باشید بپرهیزید چون این مثل نشت داده می ماند.5-وقتی تکه های یک تصویر بزرگ تر را به هم وصل می کنید جداسازی به کمک شناسه تصویر بزرگ را به یاد داشته باشیدقطعا، راهنمایی ها از یک کار تا کار دیگر فرق دارند و پرداختن به همه آن ها اساسا ناممکن است. به همین دلیل است که اجرا کردن یک تحلیل داده اکتشافی جدی قبل از شروع ارزیابی داده یک مدل همیشه بهترین تمرین است.سخنان پایانیارزیابی متقابل یک ابزار قدرتمند است. هر دانشمند داده باید با آن آشنا باشد. در زندگی واقعی، شما نمی توانید هیچ پروژه ای را بدون ارزیابی متقابل یک مدل به پایان برسانید.در دیدگاه من، بهترین روش های CV k-بخش تو در تو و k-بخش استاندارد است. شخصا، در ماموریت های تشخیص کلاهبرداری از آن ها استفاده می کنم. k-بخش تو در تو به خوبی GridSeachCV برای تنظیم پارامترهای مدلم به من کمک می کند. به عبارت دیگر k-بخش برای ارزیابی عملکرد مدل استفاده شد.در این مقاله، ما بیان کردیم که ارزیابی متقابل چیست، چه روش های CV در دنیا وجود دارد، و چطور باید آن ها را پیاده سازی کرد. در ادامه الگوریتم های ML اساسا خیلی بهتر از امروز اجرا خواهند شد. هنوز، ارزیابی متقابل همواره برای بازگشت به نتایج شما مورد نیاز خواهد بود.امیدوارم، با این اطلاعات، شما در اجرای پروژه بعدی یادگیری ماشین خودتان هیچ مشکلی برای تنظیم CV نداشته باشید!مراجع1. https://www.geeksforgeeks.org/cross-validation-machine-learning/2. https://machinelearningmastery.com/k-fold-cross-validation/3. https://towardsdatascience.com/cross-validation-in-machine-learning-72924a69872f4. https://towardsdatascience.com/why-and-how-to-do-cross-validation-for-machine-learning-d5bd7e60c1895. https://scikit-learn.org/stable/modules/cross_validation.htmlسایت منبع:https://neptune.ai/blog/cross-validation-in-machine-learning-how-to-do-it-right[1] Machine Learning (ML)[2] Cross-Validation (CV)[3] Leave-one-out сross-validation (LOOCV)[4] Leave-p-out cross-validation (LpOC)[5] Deep Learning (DL)</description><category>حسن نظری</category><author>حسن نظری</author><pubDate>Wed, 15 Dec 2021 14:38:30 +0330</pubDate></item><item><title>یادگیری ماشین: جرقه اولیه، مفاهیم، زبان پایتون</title><link>https://virgool.ir/@h.nazari/یادگیری-ماشین-جرقه-اولیه-مفاهیم-زبان-پایتون-qubtrqfhx6fo</link><description>جرقه اولیه هوش مصنوعیاولین جرقه هوش مصنوعی به یونان برمی گردد که می خواستند یک مغز ساختگی را در یک بدنه مکانیکی قرار بدهند و بخشی از این کارها نیز یافت شده است. در اوایل قرن 17 دانشمندان به دنبال بیان تفکر به صورت ریاضی بودند که هنوز ادامه دارد. آلن تورینگ در 1950 تاثیر زیادی روی هوش مصنوعی داشته است و تست هوشمندی به عنوان معیار هوشمندی ماشین هنوز استفاده می شود. همچنین ایشان درباره الگوریتم ژنتیک و یادگیری تقویتی یافته های مهمی داشت. در 1950 در هاروارد اولین سیستم هوش مصنوعی به کمک شبکه عصبی و نورون ها ساخته شد که از 40 نورون تشکیل شده بود. از علم تجربی می دانیم که نورون های برای انتقال پیام در مغز استفاده می شوند. در ادامه ساختار deep blue در 1996 از کاسپاروف قهرمان شطرنج شکست خورد ولی با تغییرات داده شده در سال 1997 توانست وی را شکست دهد. شبکه های عصبی جدید که برای دسته بندی تصاویر از آنها استفاده می شود دارای هزاران نورون هستند.شکل1. ساختار نورون [blog.faradars.org]معنای هوش و یادگیریکتاب هوش مصنوعی یک رویکرد مدرن به بررسی دو روش می پردازد که هر کدام دو حالت دارند. این 4 حالت ممکن برابرند با 1-منطقی فکر کند. 2-منطقی رفتار کند. 3-مانند انسان فکر کند. 4-مانند انسان رفتار کند. تفکر یا کار منطقی چیست؟ تفاوت کار منطقی با کار درست چیست؟ از نظر افلاطون فضیلت در اجتماع مهم است و از نظر نیچه افزایش قدرت اهمیت دارد. آیا هوش مصنوعی همان یادگیری ماشین است؟ در واقع یادگیری ماشین بخشی از مجموعه بزرگتر هوش مصنوعی است. تعریف هوش مصنوعی می تواند اینگونه بیان شود که هر برنامه‌ای که هوشمندی داشته باشد یا به نوعی رفتار انسان را تقلید کند، به عنوان هوش مصنوعی پذیرفته می‌شود. یکی از مهم‌ترین ویژگی‌های یادگیری ماشین، یادگیری با استفاده از داده و بدون استفاده از دستورات مستقیم است. در گام بعدی می توان به یادگیری عمیق اشاره کرد که سعی می کند از شبکه عصبی استفاده کند تا مانند مغز انسان بتواند مسائل مختلف را حل بکند.تجربه کاری یا دانشگاهی؟دکتر فروغمند: قدم اول در رابطه بین دانشگاه و صنعت این است که موضوعاتی که مقالات مرتبط با آن ها سال های گذشته نوشته شده است و در بین عموم اساتید و دانشجویان رواج دارد ولی در صنعت استفاده نمی شود در نظر گرفته شوند. پیاده سازی این موضوعات می تواند سود اقتصادی مناسب به همراه کمک به کشور در پی داشته باشد. وقتی کسی وارد صنعت یا ساختار دولتی می شد چیزی که در آنجا می دید این بود که اکثر امور روی نظم خاصی جلو می رود و مشکلی دیده نمی شد و فهم اینکه چگونه می شود یک مشکل را شناخت و برای اصلاح آن برنامه ریزی کرد اهمیت زیادی دارد. یک مثال درباره محققین دانشکده ریاضی است یک پروژه صنعت نفت را به دانشگاه آوردند و به کمک دانشجویان پردازش و حل کردند و سود اقتصادی آن به آن گروه علمی یا دانشگاه رسید. هوش مصنوعی را می توان به 2بخش تقسیم کرد هوش مصنوعی کاربردی و کارهایی که سبب بهتر شدن هوش مصنوعی می گردد. شرکت شمارا هم به بخش اول می پردازد.زمینه های شغلیفصل دوم به چالش های هوش مصنوعی می پردازد و حوزه های یادگیری ماشین را آموزش می دهد. همچنین شغل های مرتبط و پلتفرم های تمرین و یادگیری مبحث یادگیری ماشین را یاد می دهد. یکی از اولین کاربردهای یادگیری ماشین تشخیص و جداسازی ایمیل های اسپم بود. امروزه ماشین های بدون راننده میتوانند به کمک این مبحث در خیابان تردد کنند یا اقتصاددان ها برای تحلیل و پیش بینی بازار از یادگیری ماشین بهره می برند. زبان پایتون برای یادگیری ماشین بسیار مورد توجه قرار گرفته است همچنین زبان R هم جذابیت زیادی برای برنامه نویسان این حوزه دارد. از نقاط قوت این زبان ها وجود کتاب خانه های متنوع و قدرتمند متناظر با یادگیری ماشین است. مسابقات زیادی در زمینه یادگیری ماشین با موضوعات متن، داده های جدولی و تصویر برگزار می گردد. در ‌سایت کوئرا هم مسابقاتی در همین ارتباط برگزار می شود مثلا مسابقات علم داده کدکاپ، تحلیل داده کارگزاری مفید، تحلیل داده عدالتخانه، دیجی‌کالا کاپ و کانکت فوتبالیست‌ها.شکل2.زمینه های کاربردی یادگیری ماشین [dataio.ir]شغل ها و تخصص هاتحلیل گزارش ها و فاکتورهای فروش یا انبار لازمه اداره یک شرکت موفق است که مرتبط با این کار شغل های در زمینه تحلیل داده بوجود آمده است. افراد هم در زندگی شخصی خود علاقمند هستند اطلاعاتی مانند میزان وزن، مقدار پیاده روی روزانه و هزینه ها و درآمدها را ثبت و در آخر نتیجه گیری کنند. به هر حال شغل هایی مثل دانشمند داده، تحلیلگر داده و مهندس یادگیری ماشین در عمل چه کار می کنند؟تحلیل‌گر داده (Data Analyst):تحلیل گر داده وظیفه دارد که اطلاعات خام یک سازمان را آماده سازی و در قالب ها و کلاس های مختلفی قرار بدهد و در پایگاه داده از پیش طراحی شده بارگزاری کند. در مرحله دوم باید از داده های بدست آمده اطلاعات استخراج کند. این اطلاعات متناسب با زمینه کاری سازمان و اهداف مورد علاقه آن می باشد. 2 نکته برای این کار مهم است: تحلیل گر داده نباید حتما برنامه نویسی بداند بلکه می تواند از خدمات روی وب استفاده کند. همچنین باید گزارش های ساده ولی با دید نقادانه و کشف مسئله داشته باشد.دانشمند داده (Data Scientist):در سطح بالاتری نسبت به تحلیل گر داده فعالیت می کند و لازم است برنامه نویسی و ریاضیات این حوزه را بداند. حتی گاهی دانشمند داده با امور تخصصی سازمان ها مانند تجارت آشنایی دارند و پیشنهادهایی ارائه می کنند. داده کاوی توسط برنامه نویسی و استفاده از کتابخانه ها مفید تر از استفاده از پلتفرم های آماده است از این رو دانشمند داده بر خلاف تحلیل گر داده از روش اول استفاده می کند.مهندس داده (Data Engineer):وجود داده های کلان سبب شد برای مدیریت، یکپارچه سازی و ذخیره داده ها از مهندس داده استفاده شود. او با توجه به اهداف شرکت و نیاز اعضا داده های مناسب را استخراج و در اختیار شرکت قرار می دهد. پس از انتخاب منابع تولید داده، داده ها را یکپارچه می کند و برای ذخیره سازی آنها اقدام می کند.مهندس یادگیری ماشین (Machine Learning Engineer):در واقع نقطه اشتراک مهندسی نرم افزار و علم داده است و در وظایف اشتراکاتی هم با مهندس داده دارد. هر دو فرآیند تولید تا مدل داده نقش داده و چالش های موضوع را درک می کنند. البته دانش یادگیری ماشین برای مهندس یادگیری ماشین الزامی خواهد بود. او باید در نظر و عمل دانش یادگیری ماشین و الگوریتم ها و روش های آن را بشناسد و قبل از ایجاد ساختار تحلیل مناسب را انجام دهد و بعدا هم بر اجرای صحیح مدل، نظارت کند.مثال. تحلیل داده در صنایع معدنیبه دو دلیل اهمیت دارد:1-عدم قطعیت بالا 2-حجم داده بسیار زیاد. مثلا یک شرکت استرالیایی از یادگیری ماشین استفاده کرد به این صورت که در سراسر دنیا اقدام به جمع آوری داده کرده و موفق به کشف معادن طلا شده است. یکی از کاربردهای یادگیری ماشین در تصاویر ماهواره ای است. بدین صورت که تصویر بدست آمده باید از نظر عوارض و پدیده های زمین شناسی تجزیه شود و به هر عارضه رنگ و علامت مخصوصی نسبت داده شود تا با این کار نقشه های قابل فهم تری بدست آید این طبقه بندی به کمک یادگیری ماشین انجام می گیرد. کاربرد بعدی پیش‌بینی متغیرهای ژئومتالورژیکی است. به دلیل عدم قطعیت در معادن بهتر است از روش های آماری برای کشف و تحلیل آزمایش ها استفاده شود.شکل3. متغیر های موجود در صنایع معدنی [netsanews.ir]الگوریتم SVMاین الگوریتم در این رابطه به کار می رود. اگر تعدادی نمونه از قبل اندازه گیری و تحلیل شده باشد و داده های جدیدی هم اضافه بشود می توان به کمک داده های قبلی یک پیش بینی از رفتار نمونه ها داشت تا هزینه تست روی داده های جدید کمتر بشود.مصاحبه مهندس ستوده:کمک به آنالیزور های تیم ها از جمله فعالیت های ایشان بوده است. یک روش جمع آوری داده استفاده از جی پی اس نصب شده روی بدن بازیکنان فوتبال است.تعریف یادگیری ماشین:یادگیری ماشین در اکثر کاربردهای فعلی، یک برنامه کامپیوتری است که به داده دسترسی پیدا می‌کند و از آن داده برای آموزش خود استفاده می‌کند. آرتور ساموئل اولین کسی بود که از کلمه یادگیری ماشین استفاده کرد و تعریف زیر را برای آن ارائه داد: یادگیری ماشین زمینه‌ای از تحقیقات است که به کامپیوترها توانایی یادگیری بدون برنامه‌نویسی صریح را می‌دهد. ویژگی اصلی یادگیری ماشین خود آموزشی یا (Self-learning) می‌باشد که به معنی استفاده از مدلسازی آماری و عدم استفاده از دستورات مستقیم (یا صریح) می‌باشد. دیدگاه سید محسن شجاعی درباره انواع داده: کلمات (زبان طبیعی)، تصویر و بینایی ماشین، سری های زمانی، داده های جدولی به صورت عددی و دسته ای.تعریف تام میشل (Tom Mitchell):اگر کارایی برنامه در انجام تکلیف Tکه با سنجه P ارزیابی می‌شود، با تجربه E افزایش یابد، می‌گوییم که برنامه یاد گرفته است از تجربه E با توجه به تکلیف Tو سنجه P استفاده کند.یادگیری ماشین به سه دسته کلی تقسیم‌بندی می شود. یادگیری بانظارت، یادگیری بی‌نظارت، یادگیری تقویتی.یادگیری بانظارت:به دلیل اینکه الگوریتم مورد نظر ما با استفاده از داده‌هایی که دارای برچسب مشخصی هستند الگوهای لازم را پیدا می‌کند، به این دسته، یادگیری نظارت‌شده می‌گویند.یادگیری ماشین بی‌نظارت:که در آن مدل بدون دخالت انسان و با داده‌های بدون برچسب، الگوهای پنهان بین داده‌ها را پیدا می‌کند، به طور کلی به سه دسته خوشه‌بندی (clustering)، کاهش ابعاد (dimensionality reduction) و استخراج قانون وابستگی (association rule mining) تقسیم‌بندی می‌شود.یادگیری تقویتی:یکی از روش های یادگیری ماشین است که با ذهنیت آزمون و خطا کار می‌کند. عامل هوشمند (agent) طبق حالت جاری (state) ، حرکتی (action) انجام می‌دهد و بر اساس آن حرکت بازخورد (reward) دریافت می‌کند؛ این بازخورد ممکن است مثبت یا منفی (پاداش یا تنبیه) باشد و عامل با این بازخورد خط‌مشی (policy) خود را تغییر می‌دهد. به دادگانی که برای آموزش استفاده می‌شوند، دادگان آموزش (train) و به دادگانی که برای ارزیابی استفاده می‌شوند، دادگان آزمایش (test) می‌گوییم.پایتونپایتون یک زبان برنامه نویسی است که در اوایل دهه‌ی ۹۰ میلادی معرفی شد. برخلاف C که زبانی دارای کامپایلر هستند، پایتون زبانی دارای مفسر است. پایتون به نسبت زبان‌های دیگر نوشتار ساده‌تری دارد و به همین دلیل سریع قابل یادگیری است. کتابخانه مختص ذخیره‌سازی و پردازش بهینه آرایه‌های عددی در پایتون نامپای نام دارد که مخفف numeric python به معنی پایتون عددی می‌باشد. در پانداس (Pandas) ساختار اصلی داده به شکل دیتافریم (data frame) است که در واقع یک آرایه دو‌بعدی است که در آن سطر‌ها و ستون‌ها عنوان دارند. مت‌پلات‌لیب (Matplotlib) ساخت نمودارهایی که بتوانند اطلاعات را به خوبی انتقال دهند یکی از مهمترین کارها در تحلیل داده است. برای مثال، مشاهده روند داده و تشخیص داده‌های پرت از روی نمودار‌ به راحتی امکان‌پذیر است. سایکت‌لرن (scikit-learn) هدف از ساخت آن تمرکز بر مدل‌سازی داده به جای دستکاری و مرتب‌سازی و خلاصه کردن داده می‌باشد. برای مصور سازی داده می‌توان از پلاتلی (Plotly) و سیبورن (Seaborn) هم استفاده کرد. برای امور یادگیری عمیق، پایتورچ (Pytorch) ، تنسورفلو (TensorFlow) و کراس (Keras) بیشتر مورد استفاده قرار می‌گیرند. برای پردازش متن nltkو اسپیسی (Spacy) کارایی بیشتری دارند و در زمینه پردازش عکس می‌توان از کتابخانه‌های اوپن سیوی (OpenCV) و سایکت ایمیج (scikit-image) نام برد.اثر مخرب نویزکمیت نامناسب داده، داده بی‌کیفیت و ویژگی‌های نامربوط از جمله چالش‌هایی است که به داده مربوط می‌شوند. تعدادی هنگام وارد کردن وزن‌ به دلیل بی‌احتیاطی عدد را به همراه یک صفر اضافه در سمت راست وارد می‌کنند (وزنشان را ده برابر مقدار واقعی اعلام می‌کنند!). این اشتباهات اجازه نمی‌دهند مدل به عملکرد بالا دست پیدا کند. هدف ما در یادگیری‌ماشین این است که با مشاهده و یادگیری از داده‌های گذشته، آینده را پیش‌بینی کنیم.شکل4. مقایسه اثر سه نوع نویز متفاوت روی یک تصویر [اسلاید درس پردازش زمان-فرکانس دکتر رشیدی دانشگاه مالک اشتر].مسئله Overfitting:وقتی دچار Overfittingمی‌شویم در حقیقت مدل عمومیت خود را از دست داده است.مسئله Underfitting:این مشکل وقتی به‌وجود می‌آید که مدل نتواند به خوبی از دادگان آموزش، یاد بگیرد. این مسئله می‌تواند به دلایل مختلفی پیش بیاید. داده نامناسب یکی از چندین دلیل کم‌برازش است.زمان در یادگیری‌ماشین از دو جهت اهمیت دارد؛ هم مدت زمانی که طول می‌کشد تا آموزش مدل تمام شود، هم زمانی که مدل برای پیش‌بینی نمونه‌ها مصرف می‌کند.گام‌هایی که در یک پروژه یادگیری ماشین طی می‌شود: دریافت و بررسی داده، آماده‌سازی داده، انتخاب و آموزش مدل مناسب، تست و ارزیابی. این پروژه نسبت به پروژه‌های دنیای واقعی بسیار ساده‌تر است. در پروژه‌های دنیا واقعی گام‌های بیشتری باید انجام شود. علاوه بر گام‌های ذکر شده تحلیل اکتشافی داده ، مهندسی کردن ویژگی‌ها و تنظیم ابر پارامتر‌ها (Hyperparameter tuning) نمونه‌ دیگری از گام‌هایی است که در یک پروژه واقعی انجام می‌شود!در حل مسئله یافتن وزن از روی قد و جنسیت از کتابخانه‌های scikit learn، pandas و seaborn استفاده شده است. از scikit learnبرای مدل‌سازی، از pandas برای خواندن و دستکاری داده و از seaborn برای مصورسازی استفاده شده است. سنجه P برای این سوال MAEاست. MAE یا Mean Absolute Error(میانگین خطای مطلق) میانگین قدر مطلق تفاضل مقدار واقعی با مقداری که مدل پیش‌بینی کرده را نشان می‌دهد. مسئله یادگیری نظارت شده (supervised) است.می‌خواهیم بفهمیم چقدر کم یا زیاد شدن قد، روی افزایش یا کاهش وزن موثر است. به این منظور نمودار پراکندگی (scatter plot) داده‌ها را رسم می‌کنیم. ۲۰ درصد داده‌ها را به عنوان دادگان آزمایشی جدا کردیم؛ ۸۰ درصد باقی‌مانده در آموزش مدل استفاده خواهند شد. برای مدل کردن داده از XGBRegressor استفاده شد. پس از طی کردن گام‌های ذکر شده، دقت مدل حدودا به ۹۰ درصد می‌رسد. یعنی ما با داشتن تنها جنسیت و قد یک نفر می‌توانیم با دقت ۹۰ درصد وزن او را پیش‌بینی کنیم!چرخه تب تکنولوژی (Technology Hype Cycle):این چرخه را اولین بار موسسه‌ گارتنر (Gartner) در سال ۱۹۹۵ مطرح کرد. این چرخه، نمودار رشد تکنولوژی‌­های مختلف را در طی زمان نشان می‌دهد. برای مثال استفاده از واحد پردازنده گرافیکی (GPU) در هوش مصنوعی تقریبا به محدوده‌ پایانی رشد خود رسیده است. با توجه به نمودار پردازش تصویر (computer vision) شهرت خود را از دست داده است و احتمالا در 2 تا 5 سال اینده دوباره به شهرت برسد.هوش مصنوعی محدود یا ضعیف:امروزه کاربردهایی مانند تشخیص انسان‌های داخل تصویر یا انجام بازی شطرنج وجود دارند، به این نوع از هوش مصنوعی، هوش مصنوعی محدود یا ضعیف اطلاق می‌شود.هوش مصنوعی قوی:در مقابل هوش مصنوعی قوی یعنی ساختن عامل هوشمندی که مانند انسان از هوشی عمومی برخوردار باشد که توانایی آموختن در مواجهه با هر مسئله جدیدی را داشته باشد و محدود به یک زمینه یا مسئله خاص نباشد. بخشی از مسائل هوش مصنوعی قوی به فلسفه و به طور دقیق‌تر فلسفه ذهن برمی‌گردد.هوشمندی به چه معناست؟ آگاهی داشتن به چه وضعیتی اطلاق می‌شود و خودآگاهی چیست؟ مسئله بعدی مطالعه هوش طبیعی انسان است. به راستی چه رازی پشت هوشمندی و آگاهی ما انسان‌هاست؟ جالب است بدانید که در حال حاضر یک رشته دانشگاهی نسبتا جوان وجود دارد به نام علوم شناختی که مسئله شناخت را محور تحقیقات خود قرار داده است.نقطه تکینگی فناوری (technological singularity):زمانی که پیشرفت تکنولوژی به نقطه‌ای غیرقابل کنترل و برگشت ‌ناپذیر برسد که تمدن انسانی را تحت تاثیر قرار دهد. هربرت سایمون که از پیشگامان هوش مصنوعی به شمار می‌رود و هم برنده جایزه تورینگ (معروف به نوبل محاسبات) و هم برنده نوبل اقتصاد است در سال ۱۹۶۵ نوشته بود: «تا بیست سال دیگر، ماشین‌ها قادر خواهند بود هر کاری که انسان انجام می‌دهد را انجام دهند». با این حال قابل ذکر است که بسیاری از صاحب نظران معتقدند تا سال‌های دههٔ ۲۰۴۰-۲۰۵۰ شاهد چنین تحولات شگرفی خواهیم بود.شکل5. رقابت انسان و ربات [plaza.ir]معرفی چند شرکت مطرح:عامل هوشمند معروف AlphaGo که موفق به شکست قهرمان جهان در بازی Go که پیچیدگی خیلی بیشتری از شطرنج دارد توسط دیپ‌مایند طراحی شد. مدل زبانی GPT-3 و مدل ساخت تصاویر از روی متن DALL.E از محصولات شرکت OpenAI هستند که سر و صدای زیادی به پا کرده‌اند. زمینه‌های تحقیقاتی این بخش شامل ابعاد مختلف یادگیری ماشین از جمله بینایی ماشین و پردازش زبان طبیعی می‌شود اما معروف‌ترین محصول Facebook یک کتابخانه متن‌باز یادگیری ماشین به نام PyTorch است. گوگل بخشی به نام Google Brain هم دارد که قدمتی طولانی‌تر دارد و به تحقیق در زمینه هوش مصنوعی مبادرت می‌ورزد. جدی‌ترین رقیب PyTorch که یکسال پیش از آن منتشر شد متعلق به Google Brain است و TensorFlow نام دارد.معرفی یک کتاب معروف:کتاب طراحی الگو و یادگیری ماشین آقای بیشاپ (Pattern Recognition and Machine Learning)، یکی از مهمترین منابع یادگیری ماشین و طراحی الگو در دانشگاه‌های سراسر دنیا می‌باشد. آخرین ویرایش کتاب در سال ۲۰۱۸ انجام شده است.نویسنده: مهندس حسن نظریمنبع:https://quera.ir/college/land/college/8522/</description><category>حسن نظری</category><author>حسن نظری</author><pubDate>Mon, 22 Nov 2021 14:21:54 +0330</pubDate></item></channel></rss>