\chapter{ یادگیری‌ ماشین}
\thispagestyle{empty}
\newpage
\vspace*{1cm}

\section{یادگیری ماشین:  چیست و چرا ؟}


امروزه ما در حال ورود به عصر کلان داده‌ها هستیم. برای مثال حدود یک ترلیون صفحه‌ی وب وجود دارد یا در هر ثانیه یک ساعت ویدئو در یوتیوب آپلود می‌شود که این به معنای 10 سال محتوا در هر دو روز می‌باشد. این حجم از داده‌ها نیازمند روش‌های خودکار تجزیه تحلیل داده‌ها می‌باشد که این همان چیزی است که یادگیری ماشین فراهم می‌کند. به طور ویژه، روش‌های یادگیری ماشین را به عنوان مجموعه‌ای از روش‌ها تعریف می‌کنیم که می‌تواند به طور خودکار الگلوها در داده‌ها را کشف کند و سپس از این الگو‌های آشکار برای پیش‌بینی داده‌های جدید استفاده کند یا اگر در شرایط عدم قطعیت قرار گرفت تصمیمات دیگری را اجرا کند (مانند برنامه‌ریزی برای اینکه چطور داده‌های بیشتری جمع‌آوری کنیم). 
% بهترین راه‌حل برای حل چنین مسائلی که دارای عدم قطعیت هستند، استفاده از ابزار نظریه احتمال می‌باشد. 
%در یادگیری ماشین عدم قطعیت به اشکال مختلفی ظاهر می‌شود: بهترین پیش‌بینی برای داده‌های جدید چه می‌تواند باشد؟ بهترین مدل برای توصیف داده‌ها چیست؟ 
یادگیری ماشین شامل سه جزء اصلی می‌باشد: داده ها، مدل ها و یادگیری که در ادامه به توضییح آن می‌پردازیم.
\subsection{مجموعه داده}
به مجموعه‌ای از داده‌های جمع‌آوری شده برای ایجاد مدل‌های یادگیری ماشین و فرایند آموزش، دیتاست
\LTRfootnote{Dataset}
 یا مجموعه داده گفته می‌شود. معمولا مجموعه‌ی داده از تعدادی سطر و ستون تشکیل شده‌ است. هر سطر بیانگر یک نمونه 
 \LTRfootnote{Sample}
 و هر ستون بیانگر یک ویژگی 
 \LTRfootnote{Feature} 
 می‌باشد (\ref{housedata}).
فرض کنید ما می‌خواهیم مدلی طراحی کنیم که قیمت خانه را محاسبه کند. برای این کار نیاز به داده‌های قبلی داریم که در آن قیمت واقعی خانه‌ها در آن پیش‌بینی شده باشد. برای این داده‌ها باید تعدادی ویژگی تعیین کنیم تا توصیفی مناسب از داده‌ها ارائه دهد که منجر به یادگیری دقیق‌تر می‌شود. 
\begin{figure}[!ht]
\centering
\includegraphics[scale=0.35]{housedata.JPG}
\caption{مجموعه داده‌ی خانه}
\label{housedata}
\end{figure} 
واضح هست که هرچه نمونه‌های ما بیشتر و ویژگی‌های بهتری (نه لزوما بیشتر) داشته باشیم، مجموعه ‌داده‌ی ما بهتر خواهد بود. 
 \subsubsection{انواع داده‌ها }
داده‌ها را می‌توان به دو دسته عددی \LTRfootnote{Numerical} و غیرعددی یا دسته‌ای \LTRfootnote{Categorical} تقسیم‌بندی کرد. داده‌های عددی می‌تواند گسسته \LTRfootnote{Discrete} مانند تعداد اتاق یک خانه یا پیوسته \LTRfootnote{Continuous} مانند مساحت خانه باشد. داده‌های غیرعددی نیز می‌تواند ترتیبی \LTRfootnote{Ordinal} مانند 
جایگاه یک شخص در یک سازمان و داده‌های غیر ترتیبی  \LTRfootnote{None ordinal} مانند رنگ چشم می‌باشد. در داده‌های ترتیبی مقادیر دارای ارزش جایگاهی هستند اما در داده‌های غیر ترتیبی نمی‌توان ارزش جایگاهی تعیین کرد مثلا نمی‌توان گفت رنگ قرمز به رنگ سبز نزدیک‌تر است. 
دلیل اینکه داده‌های ترتیبی را از غیرترتیبی جدا می‌کنیم این است که روش تبدیل این نوع داده‌ها به داده‌های عددی متفاوت است. در بعضی از مدل‌های یادگیری ماشین مانند ماشین‌های بردار پشتیبان و شبکه‌ی عصبی، همه‌ی ویژگی‌ها باید از نوع عددی باشد اما در در روش درخت تصمیم ترجیح این است که داده‌ها از نوع غیر عددی باشند.  
% \subsection{پراکندگی در مجموعه داده‌ها }
% در برخی از مجموعه داده‌ها، به ‌ویژه مجموعه داده‌هایی که ویژگی‌های نامتقارن دارند، مقدار اغلب ویژگی‌های یک شیء صفر است و در اکثر موارد، تنها کمتر از یک درصد از آن‌ها مقداری غیر صفر دارند. این‌گونه داده‌ها، داده‌های پراکنده نامیده می‌شوند. همچنین می‌توان گفت که این دیتاست دارای پراکندگی است. 
 \subsubsection{مجموعه داده متعادل و نامتعادل }
 اگر در مجموعه داده ما تعداد داده‌های کلاس مثبت تقریباً با تعداد داده‌های کلاس منفی یکسان باشد، می‌توانیم بگوییم مجموعه داده ما متعادل \LTRfootnote{Balance} است. اگر تفاوت بسیار زیادی بین تعداد داده‌های کلاس مثبت و تعداد داده‌های کلاس منفی وجود داشته باشد، می‌توانیم بگوییم مجموعه داده ما نامتعادل 
\LTRfootnote{Imbalance} 
 می‌باشد.
   \subsubsection{ انواع مجموعه داده در یادگیری ماشین}
 در یادگیری ماشین و فرایند اجرا از مجموعه داده‌های آموزشی \LTRfootnote{Training dataset} و آزمایشی 
 \LTRfootnote{Test dataset}  
    استفاده می‌شود. از مجموعه داده‌ی آموزشی برای آموزش به ماشین و از مجموعه داده‌ی آزمایشی برای آزمودن عملکرد ماشین استفاده می‌شود. 
\subsection{مدل}
در یادگیری ماشین، مدل 
\LTRfootnote{Model}
به نمایش یا تقریب یک فرآیند یا مساله در دنیای واقعی اشاره دارد. این یک نمایش ریاضی یا محاسباتی از یک سیستم است که الگوها، روابط و ساختار داده‌ها را نشان می‌دهد.
یک مدل از داده ها یاد می‌گیرد و بر اساس الگوهایی که به دست آورده است، برای داده‌های جدید پیش‌بینی می‌کند. فرآیند ساخت یک مدل شامل انتخاب الگوریتم های مناسب، بهینه‌سازی پارامترهای آن و ارزیابی عملکرد آن است.

\subsubsection{مدل‌ها به عنوان تابع}
  مدل را می‌توان به عنوان تابعی در نظر گرفت که متغیرهای ورودی (ویژگی‌ها) را به متغیرهای خروجی ( هدف یا برچسب ) نگاشت می‌کند یعنی
  \begin{align}
f: R^ D \rightarrow R.
\end{align}
%انواع مختلفی از مدل ها در یادگیری ماشین استفاده می شود، مانند رگرسیون خطی، درخت تصمیم، ماشین های بردار پشتیبان، شبکه های عصبی و غیره. هر مدل ممکن است دارای مفروضات اساسی، روش‌های یادگیری و قابلیت‌های پیش‌بینی متفاوتی باشد که آن‌ها را برای انواع مختلف مسائل و مجموعه داده‌ها مناسب می‌سازد.
هنگامی که داده ها را در یک نمایش برداری مناسب داشته باشیم، می توانیم به کار ساخت یک مدل 
که تابع پیش‌بینی کننده 
\LTRfootnote{Predictor}
نامیده می‌شود، بپردازیم. پيش‌بيني كننده تابعي است كه هنگامي كه يك نمونه‌ی ورودي خاص داده مي‌شود
(بردار ویژگی‌ها)، یک خروجی تولید کند. 

\subsubsection{مدل‌ها به عنوان توزیع احتمال}
یک مدل احتمالی در یادگیری ماشین یک نمایش ریاضی است که عدم قطعیت مرتبط با نتایج یا رویدادهای مختلف را کمیت می‌کند. روشی برای تخمین احتمال وقوع یک رویداد بر اساس داده‌های موجود و دانش قبلی ارائه می‌دهد.
مدل‌های احتمال، پایه و اساس بسیاری از تکنیک‌های مختلف یادگیری ماشین هستند، زیرا استدلال را در شرایط عدم قطعیت ممکن می‌سازند و فرآیندهای تصمیم‌گیری را تسهیل می‌کنند.
در مدل‌های احتمال، نتایج یا رویدادهای مورد علاقه معمولاً با متغیرهای تصادفی مرتبط هستند. این متغیرها می توانند مقادیر متفاوتی داشته باشند و مدل احتمال به هر مقدار ممکن توزیع احتمالی را اختصاص می دهد. انتخاب توزیع احتمال بستگی به ماهیت مسئله و فرضیات ایجاد شده در مورد داده ها دارد.
الگوریتم های یادگیری ماشین اغلب از مدل های احتمال برای تخمین احتمال شرطی یک نتیجه خاص با توجه به ویژگی ها یا ورودی های مشاهده شده استفاده می کنند.
% این مدل ها را می توان به مدل های مولد و مدل های افتراقی دسته بندی کرد. مدل‌های متمایز، مانند رگرسیون لجستیک یا ماشین‌های بردار پشتیبان، بر تخمین مستقیم احتمال شرطی تمرکز می‌کنند.
مدل‌های احتمال در زمینه‌های مختلفی مورد استفاده قرار می‌گیرند. آنها درک جامعی از عدم قطعیت مرتبط با فرآیند پیش‌بینی یا استنتاج ارائه می‌کنند. علاوه بر این، آنها می‌توانند برای ارزیابی مدل مفید باشند.

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

 \subsection{انواع یادگیری ماشین}
 به طور کلی یادگیری ماشین، بهبود عملکرد ماشین در انجام یک وظیفه با کسب تجربه می‌باشد. سوالی که پیش می‌آید این است که یک ماشین از کجا بفهمد عملکردش بهبود یافته؟ برای پاسخ دادن به این سوال، به بررسی انواع روش‌های یادگیری ماشین می‌پردازیم. یادگیری ماشین اغلب به سه دسته تقسیم می‌شود : 
                                                                                                                                                           یادگیری نظارت شده
\LTRfootnote{Supervised learning} ،یادگیری بدون‌نظارت \LTRfootnote{unsupervised learning} و یادگیری تقویتی.  \LTRfootnote{reinforcment learning}
\subsubsection{یادگیری نظارت شده}
یادگیری نظارت شده محبوب‌ترین روش برای یادگیری ماشین است. چون از میان سایر روش‌ها به‌ ساده‌ترین شکل درک می‌شود و همچنین خیلی ساده  اجرا می‌شود. یادگیری نظارت شده یک تکنیک یادگیری ماشین است که در آن یک مدل بر روی یک مجموعه داده برچسب‌گذاری شده آموزش داده می‌شود، به این معنی که به ازای داده‌های ورودی، برچسب‌های خروجی مربوطه ارائه می‌شوند. هدف یادگیری تحت نظارت یادگیری تابعی است که داده‌های ورودی را به برچسب‌های خروجی صحیح نگاشت می‌کند. این فرآیند شامل وارد کردن داده‌های آموزشی در یک الگوریتم یادگیری است به گونه‌ای که  الگوها و روابط موجود در داده‌ها را برای ایجاد یک مدل به صورت تقریبی بدست آورد. سپس می توان از این مدل برای پیش‌بینی یا کلاس‌بندی داده‌هایی قبلا هرگز با آن مواجه نشده‌ایم استفاده کرد.  یادگیری نظارت شده اغلب با‌عنوان یادگیری وظیفه‌محور توصیف می‌شود. و بسیار متمرکز بر یک کار منفرد است. در طی روند یادگیری نظارت‌شده نمونه‌های بیشتر و بیشتری را به الگوریتم می‌دهیم تا زمانی‌که بتواند به‌طور دقیق کار مد نظر ما را انجام دهد. موارد استفاده شده از یادگیری نظارت شده : \\
% \subsubsection*{موارد استفاده شده از یادگیری نظارت شده}
1-	
 \textbf{ تشخیص پزشکی:}\\
یادگیری تحت نظارت می تواند به تشخیص پزشکی با مدل های آموزشی برای کلاس‌بندی تصاویر پزشکی، تفسیر نتایج آزمایشگاهی، یا تجزیه و تحلیل داده‌های بیمار برای شناسایی بیماری ها یا ناهنجاری‌ها کمک کند.\\
2-
 \textbf{فیلتر کردن هرزنامه:}\\
الگوریتم‌های یادگیری نظارت‌شده می‌توانند یاد بگیرند که ایمیل‌ها را بر اساس نمونه‌های گذشته به عنوان هرزنامه یا غیر هرزنامه کلاس‌بندی کنند. این الگوریتم‌ها می‌توانند محتوا، اطلاعات فرستنده و سایر ویژگی‌ها را برای پیش‌بینی دقیق تجزیه و تحلیل کنند.\\
3-
 \textbf{ تشخیص تصویر:}\\
با استفاده از یادگیری نظارت‌شده، می‌توان مدل‌ها را برای تشخیص و کلاس‌بندی تصاویر آموزش داد. این در زمینه‌هایی مانند تشخیص چهره، تشخیص اشیا و وسایل نقلیه خودران برای تشخیص و شناسایی اشیا یا عابران پیاده اعمال می‌شود.\\
\subsubsection{یادگیری بدون نظارت}
یادگیری بدون نظارت یک تکنیک یادگیری ماشین است که در آن یک مدل بر روی داده‌های بدون برچسب آموزش داده می‌شود. برخلاف یادگیری نظارت‌شده که در آن داده‌ها دارای برچسب‌های از پیش تعریف شده هستند، یادگیری بدون نظارت بر یافتن الگوها، روابط و ساختارهای درون داده‌ها بدون راهنمایی صریح متمرکز است. در یادگیری بدون نظارت، الگوریتم تلاش می‌کند تا الگوها یا گروه‌بندی‌های پنهان در داده‌ها را بدون هیچ دانش قبلی کشف کند. این کار را با تجزیه و تحلیل ساختار ذاتی یا ویژگی‌های مشترک داده‌ها انجام می‌دهد. خوشه‌بندی
\LTRfootnote{Clustering}
(\ref{unsup})
 یکی از رایج‌ترین وظایف در یادگیری بدون نظارت است. الگوریتم‌های خوشه‌بندی ، نقاط داده مشابه را بر اساس شباهت ویژگی‌هایشان، با هدف شناسایی خوشه‌ها یا بخش‌های معنی‌دار درون داده‌ها، گروه‌بندی می‌کنند.
 
  یکی دیگر از وظایف در یادگیری بدون نظارت، کاهش ابعاد است، که در آن هدف کاهش تعداد ویژگی ها یا متغیرها با حفظ اطلاعات مهم یا مهم است. این با یافتن نمایشی با ابعاد پایین تر از داده ها به دست می آید که ویژگی های اساسی آن را نشان می دهد.
  
الگوریتم‌های یادگیری بدون نظارت معمولی شامل خوشه‌بندی $k-means$، خوشه‌بندی سلسله مراتبی
\LTRfootnote{Hierarchical clustering}
، تجزیه و تحلیل مؤلفه‌های اصلی $(PCA)$
\LTRfootnote{Principal component analysis autoencoders.}
و رمزگذارهای خودکار
\LTRfootnote{Autoencoders}
 است. ارزیابی عملکرد در یادگیری بدون نظارت اغلب ذهنی‌تر است و به اعتبار‌سنجی متخصص یا تجزیه و تحلیل دامنه‌ی خاصی متکی است زیرا هیچ برچسب از پیش تعریف شده‌ای برای مقایسه وجود ندارد.
 
 از آنجاکه یادگیری بدون نظارت مبتنی بر داده‌ها و خصوصیات آن‌هاست، می ‌توان گفت که یادگیری بدون نظارت یادگیری داده‌محور است. نتایج حاصل از  کار یادگیری بدون نظارت را داده‌ها و نحوه‌ی شکل‌گیری آن‌ها کنترل می‌‌کند. چیزی که باعث می‌شود یادگیری بدون نظارت جالب توجه شود این است که اکثریت قریب به اتفاق داده‌ها در این جهان فاقد مارک و برچسب هستند. داشتن الگوریتم‌های هوشمندی که می‌تواند ترابایت‌ها داده‌ی بدون برچسب ما را بگیرد و درمیان آن‌ها معنا و ارتباط پیدا کند، منبع بزرگی از سود بالقوه برای بسیاری از صنایع است و  به‌تنهایی می‌تواند به افزایش بهره‌وری در چندین زمینه کمک کند. موارد استفاده شده از یادگیری بدون‌نظارت: \\
\begin{figure}[!ht]
\centering
\includegraphics[scale=0.35]{unsup.jpg}
\caption{یادگیری بدون‌نظارت}
\label{unsup}
\end{figure} \\
%\subsubsection{}
1-\textbf{سیستم های پیشنهادی :}
اگر تاکنون از \lr{YouTube} استفاده کردید، به احتمال زیاد با یک سیستم توصیه ویدیویی روبرو شدید. این سیستم‌ها غالباً در دامنه یادگیری بدون نظارت قرار می‌گیرند. سیستم باتوجه‌به فیلم‌ها، طول آن‌ها، ژانر آن‌ها، تاریخچه تماشای بسیاری از کاربران، کاربرانی که فیلم‌های مشابه با شما را تماشا کرده‌اند یا فیلم‌های دیگری که هنوز مشاهده نکرد‌ه‌اید و به کمک تحلیل این داده‌ها، به شما پیشنهادات جدیدی می‌دهد. \\
2-\textbf{تقسیم‌بندی مشتری:}
 الگوریتم‌های یادگیری بدون نظارت می‌توانند مشتریان را بر اساس رفتار، اولویت‌ها یا جمعیت‌شناسی به بخش‌های مجزا گروه‌بندی کنند. این به کسب‌وکارها کمک می‌کند تا استراتژی‌های بازاریابی را شخصی‌سازی کنند و گروه‌های مشتریان خاص را به طور مؤثرتری هدف قرار دهند.
\subsubsection{یادگیری تقویتی}
یادگیری تقویتی را با عنوان یادگیری از اشتباهات معرفی می‌کنیم.  
یک الگوریتم یادگیری تقویتی در ابتدا اشتباهات زیادی خواهد داشت. ما می‌توانیم با دادن بازخورد مثبت یا منفی به ماشین بگوییم تا چه میزان پاسخش درست بوده یا نه. 
 به این ترتیب می‌توانیم الگوریتم خود را تقویت کنیم تا رفتارهای خوب را نسبت به رفتارهای بد ترجیح دهد. با گذشت زمان، الگوریتم یادگیری ما می‌آموزد و کمتر از قبل  اشتباه می‌کند. یادگیری تقویتی یک روش رفتارمحور است. موارد استفاده از یادگیری تقویتی: \\
%\subsubsection{موارد استفاده از یادگیری تقویتی }
1-\textbf{ شبیه سازی صنعتی :}
 بسیاری از برنامه‌های کاربردی روباتیک در خطوط مونتاژ استفاده می‌شود . بهتر است که ماشین‌های ما یاد بگیرند کارهای خود را بدون نیاز به رمزگشایی در روند کار خود انجام دهند. این می‌تواند یک گزینه ارزان‌تر و مطمئن‌تر باشد. حتی ممکن است کمتر مستعد شکست باشد. ما همچنین می‌توانیم دستگاه‌های خود را برای استفاده از برق کم‌تر تنظیم کنیم  تا در هزینه‌ها صرفه‌جویی کنیم. همچنین،  به کمک این  شبیه سازی مانع خراب‌شدن دستگاه نیز می‌شویم. 
%نمونه ای از یادگیری تقویتی را می توان در آموزش یک وسیله نقلیه خودمختار برای حرکت در پیچ و خم مشاهده کرد. عامل (وسیله نقلیه خودران) با محیط (پیچ وخم) در تعامل است و برای رسیدن به هدف پاداش مثبت و برای برخورد با موانع جوایز منفی دریافت می کند. هدف عامل یادگیری خط مشی بهینه یا مجموعه اقداماتی است که منجر به حداکثر پاداش تجمعی می شود.
\section{یادگیری نظارت‌شده}
همانطور که گفته شد یادگیری نظارت شده یکی از روش‌های یادگیری ماشین هست که در آن یک مجموعه‌ی آموزشی وجود دارد که به ازای هر ورودی، پاسخ درست (برچسب) آن نیز به ماشین داده شده است به این امید که بتواند بر اساس آن برای نمونه‌های جدید تعمیم دهد. \\
در یادگیری نظارت‌شده ورودی ما یک مجموعه‌ی آموزشی که در آن به ازای هر ورودی پاسخ درست داده شده است:
\begin{align}\label{data}
D = \{(X^{(1)},y^{(1)}),(X^{(2)},y^{(2)}),...,(X^{(m)},y^{(m)})\}
\end{align}
که $m$ تعداد نمونه‌ها، $y^{i}$ پاسخ درست نمونه‌ی $i$ ام و $X=\{x_1,x_2,...,x_p\}$   مجموعه‌ای از ویژگی‌های
\LTRfootnote{Feature}
$p$
متغیره می‌باشد. \\
هدف، یادگیری تابع با نگاشت $f:X\rightarrow y$  می‌باشد که با استفاده از آن با دریافت ورودی جدید بتواند پاسخ درست را تشخیص دهد. به عبارت دیگر قابلیت تعمیم خوبی برای داده‌های جدید داشته باشد. یادگیری نظارت‌شده را می‌توان به دو نوع اصلی کلاس‌بندی 
 \LTRfootnote{Classification}
و رگرسیون 
\LTRfootnote{Regression}
تقسیم کرد. در مسائل یادگیری نظارت شده، تشخیص اینکه با کدام مساله سروکار داریم به پاسخ داده‌های ما بستگی دارد. در مسائل کلاس‌بندی، هدف پیش‌بینی دسته‌ها یا برچسب‌های مجزا است، مانند تعیین اینکه آیا ایمیل هرزنامه است یا خیر. در مساله‌ی رگرسیون، هدف پیش‌بینی مقادیر عددی پیوسته است، مانند پیش‌بینی قیمت مسکن بر اساس ویژگی‌هایی مانند اندازه، مکان و غیره.

\section{مساله‌ی رگرسیون}
همان‌طور که گفته شد مساله‌ی رگرسیون یک مساله‌ی یادگیری نظارت شده است که در آن $y$ ها مقادیری پیوسته هستند. اگر مجموعه‌ی ‌داده را به صورت (\ref{data}) در نظر بگیریم، هدف یافتن یک تقریب مناسب برای نگاشت 
\begin{align}
f: X\rightarrow y,
\end{align}  
می‌باشد که برازش \LTRfootnote{Fit} خوبی روی داده‌ها داشته باشد. به طور مثال با توجه به شکل 
(\ref{reghouse}),
مجموعه داده‌ی خانه را داریم که بر اساس اندازه خانه (ویژگی) ،قیمت (پاسخ، برچسب) آن داده شده است. هدف یادگیری تابعی است (خط قرمز) که بهترین برازش (تطابق) را روی نمونه‌های  ${\color{blue}\times}$  را داشته باشد به گونه‌ای که برای نمونه‌های جدید پیش‌بینی تقریبا دقیقی را داشته باشد. در مساله‌ی رگرسیون، اگر مجموعه داده‌ی ما شامل یک ویژگی باشد مساله‌ی رگرسیون خطی تک متغیره و اگر مجموعه داده‌ی ما دارای چندین ویژگی باشد مساله‌ی رگرسیون خطی چند متغیره نامیده می‌شود. 
 \begin{figure}[!ht]
\centering
\includegraphics[scale=0.35]{reghouse.JPG}
\caption{مساله‌ی رگرسیون روی داده‌های خانه}
\label{reghouse}
\end{figure} \\
\subsection{رگرسیون خطی تک متغیره}
\subsubsection{مجموعه‌ی آموزشی}
با توجه به شکل 
(\ref{one})
 مشاهده می‌کنیم، مجموعه‌ی آموزشی شامل ورودی $x$ و پاسخ درست $y$  می‌باشد. اگرورودی شامل یک ویژگی مثلا متراژ خانه باشد، مساله‌ی رگرسیون یک مساله‌ی تک متغیره نامیده می‌شود.
\begin{figure}[!ht]
\centering
\includegraphics[scale=0.35]{one.jpg}
\caption{مجموعه‌ی آموزشی تک متغیره‌}
\label{one}
\end{figure} \\
\subsubsection{نمادها}     
 $m$
 تعداد نمونه‌های آموزشی، $x$ متغیر وروودی یا ویژگی، $y$  متغیر خروجی یا هدف، $(x,y)$  یک نمونه‌ی آموزشی و $(x_i,y_i)$  نمونه‌ی آموزشی $i$  ام. \\
\subsubsection{بازنمایی مدل}
 در مساله‌ی رگرسیون می‌خواهیم مجموعه آموزشی را به یک الگوریتم یادگیری بدهیم که این الگوریتم از این مجموعه آموزشی تابع فرضیه‌ی
 \LTRfootnote{Hypothesis function}
    $h:x\rightarrow y$  را به گونه‌ای بدست آورد که به ازای ورودی جدید $x$ ، پاسخ $y$ را بتواند به خوبی پیش‌بینی ‌کند(\ref{flo}).  
 \begin{figure}[!ht]
\centering
\includegraphics[scale=0.20]{flo.jpg}
\caption{}
\label{flo}
\end{figure} \\
\subsubsection{تابع فرضیه}
تابع فرضیه در رگرسیون خطی تک متغیره ساده‌ترین مدل در یادگیری ماشین می‌باشد و به صورت زیر تعریف می‌شود:
\begin{align}\label{tak}
h_{\theta}(x)=\theta_0 + \theta_1 x
\end{align}
که $\theta_0$ عرض از مبدا و $\theta_1$ شیب خط می‌باشد. در اینجا شیب خط، پارامتر مرتبط با ویژگی (اندازه خانه) می‌باشد.
\subsubsection{تابع هزینه}
با توجه به مجموعه‌ی آموزشی در شکل (\ref{one}) ، تابع فرضیه به صورت 
$h_{\theta}(x)=\theta_0 + \theta_1 x$
و پارامترها به صورت $(\theta_0,\theta_1)$  می‌باشند. اما سوالی که پیش می‌آید این است که مقدار پارامترها را چگونه باید انتخاب کرد؟ یا بهترین تابع فرضیه با توجه به مجموعه داده موجود چه می‌تواند باشد؟ 
برای پاسخ به این سوال به معرفی تابع هزینه می‌پردازیم. \\%فرض کنیم پارامترهای $(\theta_0,\theta_1)$  به صورت دلخواه مقدار‌دهی شده باشند. در نهایت پارامترها باید به گونه‌ای بدست آیند که به ازای هر نمونه‌آزمایشی $(x,y)$  ، مقدار $h_{\theta}(x^i)$  به $y^i$ نزدیک باشد(\ref{khata}). 
ایده: انتخاب پارامترها به گونهای که به ازای هر نمونه آموزشی مانند $(x,y)$ ، مقدار $h_{\theta}(x)$ تا حد ممکن به مقدار $y$ نزدیک باشد. همانطور که در شکل (\ref{khata}) مشاهده می‌کنیم، داده‌های ما با علامت  ${\color{red}\times}$ نشان داده شده است. فرض کنیم $h_{\theta}(x_i)$  تابع فرضیه بدست آمده بر اساس پارامترهای اولیه دلخواه $\theta_0, \theta_1$  باشد. از آنجاییکه پاسخ درست ورودی‌های $x_i$، $y_i$ می‌باشد، این اختلاف $y_i$  و $h_{\theta}(x_i)$  خطا نامیده می‌شود که هدف تابع هزینه کم کردن این خطا می‌باشد. پس می‌توان تابع هزینه در مساله‌ی تک متغیره را به صورت زیر تعریف کرد:
\begin{align}\label{hazine}
J(\theta_0,\theta_1) = \dfrac{1}{2}\sum_{i=1}^{m}(h_{\theta}(x^i) - (y^i))^2
\end{align} \\
که $ J(\theta_0,\theta_1)$ مجموع مربعات خطا نامیده می‌شود. هدف مینیمم کردن این تابع هزینه می‌باشد یعنی:
\begin{align}
minimize_{\theta_0,\theta_1} J(\theta_0,\theta_1). 
\end{align} \\
  \begin{figure}[!ht]
\centering
\includegraphics[scale=0.35]{khata.JPG}
\caption{تابع هزینه}
\label{khata}
\end{figure} 

\subsubsection{گرادیان کاهشی}
در رگرسیون خطی، تابع هزینه (\ref{hazine}  ) یک تابع محدب است و در نتیجه گرادیان کاهشی در صورت همگرایی لزوما در بهینه‌ی سراسری همگرا می‌شود. کلیات روش گرادیان کاهشی به این صورت است که با یک مقدار اولیه تصادفی برای پارامترها $\theta_0,\theta_1$ شروع کن و مقدار پارامترها را به گونه‌ای تغییر دهیم که مقدار تابع هزینه $J(\theta_0,\theta_1)$  کاهش یابد. این عمل  را آن قدر تکرار می‌کنیم تا به یک مقدار کمینه برای تابع هزینه برسیم. الگوریتم گرادیان کاهشی به صورت زیر می‌باشد: 
\begin{latin}
\begin{algorithm}
%\begin{LTR}
	\caption{}\label{grad}
	%\begin{algorithmic}[1]
	 \textit{Repeat until convergence}\lbrace 
\\
 $\theta_j := \theta_j - \alpha \dfrac{\partial}{\partial \theta_j}   J(\theta_0,\theta_1) $ \quad \textit{for $j=0$ and $j = 1$}
 
 \rbrace
	%\end{algorithmic}
%\end{LTR}
\end{algorithm}
\end{latin}
بنابراین گرادیان تابع هزینه 
(\ref{hazine})
به صورت زیر می‌باشد:
\begin{align}\label{hazine}
\dfrac{\partial}{\partial \theta_j}J(\theta_0,\theta_1) &=\dfrac{\partial}{\partial \theta_j} \dfrac{1}{2}\sum_{i=1}^{m}(h_{\theta}(x^i) - (y^i))^2 = \dfrac{\partial}{\partial \theta_j} \dfrac{1}{2}\sum_{i=1}^{m}((\theta_0 + \theta_1 x^i) - (y^i))^2 \\ 
j &= 0 \Rightarrow \dfrac{\partial}{\partial \theta_j}J(\theta_0,\theta_1) = \sum_{i=1}^{m}(h_{\theta}(x^i) - (y^i)) \\ \nonumber
j&=1 \Rightarrow  \dfrac{\partial}{\partial \theta_j}J(\theta_0,\theta_1)= \sum_{i=1}^{m}(h_{\theta}(x^i) - (y^i))x^i . \nonumber
\end{align} \\ 
الگوریتم گرادیان کاهشی در رگرسیون خطی به صورت زیر می‌باشد:
\begin{latin}
\begin{algorithm}
%\begin{LTR}
	\caption{}\label{grad}
	%\begin{algorithmic}[1]
	 \textit{Repeat until convergence}\lbrace 
\\
 $\theta_0 := \theta_0 - \alpha \sum_{i=1}^{m}(h_{\theta}(x^i) - (y^i)) $ \\
  $\theta_1 := \theta_1 - \alpha \sum_{i=1}^{m}(h_{\theta}(x^i) - (y^i))x^i $ 
 
 \rbrace
	%\end{algorithmic}
%\end{LTR}
\end{algorithm}
\end{latin}
 
\subsection{رگرسیون خطی چند متغیره}

\subsubsection{مجموعه‌ی آموزشی} 
با توجه به شکل 
(\ref{multi})
 قیمت خانه در مجموعه‌ی آموزشی بر اساس چند ویژگی مانند متراژ خانه، تعداد اتاق،سن خانه و ... سنجیده شده است. در این حالت مساله‌ی رگرسیون یک مساله‌ی چند متغیره می‌باشد.
\begin{figure}[!ht]
\centering
\includegraphics[scale=0.25]{multi.jpg}
\caption{مجموعه داده‌ی چند متغیره}
\label{multi}
\end{figure} \\
\newpage
\subsubsection{نمادها}      
 $m$
 تعداد نمونه‌های آموزشی، $n$  تعداد ویژگی‌ها، $x$ متغیر ورودی یا ویژگی، $y$  متغیر خروجی یا هدف، $(x,y)$  یک نمونه‌ی آموزشی و $(x_i,y_i)$  نمونه‌ی آموزشی $i$  ام. 
\subsubsection{تابع فرضیه}
تابع فرضیه در حالت چند متغیره به صورت 
\begin{align}\label{chand}
h_{\theta}(x)&=\theta_0 + \theta_1 x_1 + \theta_2 x_2 +\cdots + \theta_n x_n \\ 
& = \theta^T X + \theta_0
\end{align}
تعریف می‌شود که 
$\theta = (\theta_0, \theta_1,\cdots,theta_n)$
بردار پارامترها و 
$X = (x_0, x_1,\cdots,x_n)$
بردار ویژگی‌ها می‌باشد. 
در اینجا $\theta_0$ ، عرض از مبدا یا بایاس و $(\theta_1,\cdots,\theta_n)$  پارامترهای متناظر با هر ویژگی می‌باشد. پس اگر  $n$ ویژگی داشته باشیم، به ازای هر ویژگی $n$ پارامتر داریم که با در نظر گرفتن پارامتر متناظر با بایاس $\theta_0$، مساله‌ی ما یک مساله‌ی $n+1$ بعدی می‌باشد.
در رگرسیون خطی چند متغیره، برای سادگی تعریف می‌کنیم $x_0 =1$ و با اضافه کردن $\theta_0x_0$ به تابع فرضیه‌ی (\ref{chand}) داریم:
\begin{align}
x=
 \begin{bmatrix}
{\color{red}x_{0}=1}\\
x_{1}\\
x_{2}\\
\vdots  \\
n_{n}\\
\end{bmatrix}, \quad
\theta = 
 \begin{bmatrix}
\theta_0 \\
\theta_{1}\\
\theta_{2}\\
\vdots  \\
\theta_{n}\\
\end{bmatrix} \Longrightarrow h_\theta(x) = \theta ^{T} x
\end{align}

\subsubsection{تابع هزینه}
تابع هزینه در مساله‌ی چند متغیره را می‌توان به صورت زیر تعریف کرد:
\begin{align}
J(\theta_0,\theta_1,\cdots, \theta_n) = \dfrac{1}{2}\sum_{i=1}^{m}(h_{\theta}(x^i) - (y^i))^2
\end{align} \\
\subsubsection{الگوریتم گرادیان کاهشی}
 با اضافه کردن $\theta_0x_0$  به تابع فرضیه‌ی \ref{chand} ، همه‌ی مشتق‌های جزئی به صورت 
 \begin{align}
 \dfrac{\partial}{\partial \theta_j}=\sum_{i=1}^{m}(h_{\theta}(x^i) - (y^i))x_{j}^i 
 \end{align}
 به‌دست می‌آید و بنابراین الگوریتم گرادیان به صورت زیر می‌باشد.
 \begin{latin}
\begin{algorithm}
%\begin{LTR}
	\caption{}\label{grad}
	%\begin{algorithmic}[1]
	 \textit{Repeat until convergence}\lbrace 
\\
  $\theta_j := \theta_j - \alpha \sum_{i=1}^{m}(h_{\theta}(x^i) - (y^i))x_{j}^i $ 
 
 \rbrace
	%\end{algorithmic}
%\end{LTR}
\end{algorithm}
\end{latin} 
\subsection{رگرسیون: تفسیر احتمالاتی}
برای اثبات آماری تابع هزینه فرض کنیم مدل ما به صورت 
\begin{align}
y^{(i)} = \theta ^T x^{(i)} +\underbrace{\epsilon ^{(i)}}_{\textbf{خطا}} 
\end{align}  

می‌باشد که خطاها مستقل هستند و از یک توزیع یکسان $(iid)$ \LTRfootnote{independent identically distributed} گاوسی پیروی می‌کنند. 
\begin{align}
\epsilon ^{(i)} \sim N(0,\sigma ^2) = \dfrac{1}{\sigma \sqrt{2\pi}}exp \dfrac{-\epsilon^2}{2\sigma^2}
\end{align}
خطا به دلیل در نظر گرفتن تاثیر عوامل دیگر مانند ویژگی‌های در نظر گرفته نشده و تاثیر نویز می‌باشد. بنابراین داریم:
\begin{align}
y^{(i)} \sim N(\theta ^T x^{(i)},\sigma ^2) = \dfrac{1}{\sigma \sqrt{2\pi}}exp(- \dfrac{y^{(i)}-\theta^T x^{(i)})^2}{2\sigma^2}.
\end{align}
\subsubsection*{تخمین بیشترین درست‌نمایی}
تابع درستنمایی:  احتمال مشاهده داده‌های آموزشی به عنوان تابعی از پارامترهای $\theta$ را با استفاده از تابع درستنمایی، به صورت 
\begin{align}
L(\theta) = p(y|x:\theta) = \prod_{i=1}^{m} \dfrac{1}{\sigma \sqrt{2\pi}}exp(- \dfrac{y^{(i)}-\theta^T x^{(i)})^2}{2\sigma^2}
\end{align}
می‌باشد. با لگاریتم گرفتن از تابع درستنمایی داریم:
\begin{align}
l(\theta) &= ln L(\theta) \\ \nonumber
&= ln \prod_{i=1}^{m} \dfrac{1}{\sigma \sqrt{2\pi}}exp(- \dfrac{y^{(i)}-\theta^T x^{(i)})^2}{2\sigma^2}\\ \nonumber
& = \sum_{i=1}^{m} ln [\dfrac{1}{\sigma \sqrt{2\pi}}exp(- \dfrac{y^{(i)}-\theta^T x^{(i)})^2}{2\sigma^2}]\\
& = m ln \dfrac{1}{\sigma \sqrt{2\pi}} - \dfrac{1}{2\sigma^2} \sum_{i=1}^{m} (y^{(i)}-\theta^T x^{(i)})^2)\nonumber
\end{align}
در اینجا هدف انتخاب یک مقدار برای پارامتر $\theta$ می‌باشد که به گونه‌ای که $l(\theta) $ بیشینه شود یعنی
\begin{align}
\theta_{MLE} &= \argmax_{\theta} l(\theta) \\ \nonumber
&= \argmax_{\theta}\quad  m ln \dfrac{1}{\sigma \sqrt{2\pi}} - \dfrac{1}{2\sigma^2} \sum_{i=1}^{m} (y^{(i)}-\theta^T x^{(i)})^2\\ \nonumber
&=  \argmax_{\theta} (-\dfrac{1}{2} \sum_{i=1}^{m} (y^{(i)}-\theta^T x^{(i)})^2)\\ \nonumber
&=  \argmin_{\theta} (\dfrac{1}{2} \sum_{i=1}^{m} (y^{(i)}-\theta^T x^{(i)})^2)\\ \nonumber
\end{align}
که این تابع هزینه‌ی مجموع مربعات خطا می‌باشد. 
%\subsubsection{ترفندهای عملی در رگرسیون چندمتغیره}
\subsection{رگرسیون چند‌جمله‌ای}
فرض کنیم برای قیمت‌گذاری خانه، دو ویژگی طول و عرض خانه را داشته باشیم. در این حالت تابع فرضیه به صورت 
\begin{align}
h_{\theta}(x) = \theta_0 + \theta_1 \times \underbrace{x_1}_{\textbf{طول}} + \theta_2 \times \underbrace{x_2}_{\textbf{عرض}}
\end{align}
می‌باشد که یک تابع خطی است. حال اگر بخواهیم ویژگی مهم‌تری مثل مساحت خانه یعنی 
($\textbf{مساحت} = \textbf{طول} \times \textbf{عرض}$)
را در نظر بگیریم، در حالتی که $x_1 = x_2 = x$ باشد، داریم:
\begin{align}\label{pol}
h_{\theta}(x) = \theta_0 + \theta_1 \times x +\theta_2 \times \underbrace{(x^{2}) }_{\textbf{مساحت}}
\end{align}
که در این حالت $h_{\theta}(x)$  (\ref{pol}) دیگر خطی نیست و یک تابع درجه دو می‌باشد. این تابع بر حسب پارامترها خطی است اما بر حسب متغیرها چندجمله‌ای می‌باشد. 
\subsection{رگرسیون با وزن‌دهی محلی}
رگرسیون وزن‌دار محلی \LTRfootnote{Locally Weighted Regression} یکی از روش‌های یادگیری می‌باشد که در آن پارامترها با افزایش اندازه‌ی مجموعه‌ی آموزشی به صورت خطی افزایش می‌یابد و به منظور پیش‌بینی داده‌ی جدید نیاز به کل مجموعه‌ی آموزشی داریم. به این نوع یادگیری، یادگیری غیرپارامتری می‌گویند. ایده‌ی اصلی در این روش اهمیت دادن بیشتر به داده‌های نزدیک تر می‌باشد یعنی به ازای یک داده‌ی جدید $x$ ، به تابع وزنی نیاز داریم تا به داده‌های محلی نزدیک به $x$ وزن بشتری دهد و بر اساس این داده‌ها پاسخ تقریبی $x$  را به‌دست آورد. تابع وزن به صورت 
\begin{align}
W^{(i)} = exp (- \dfrac{(x^{(i)} - x)^2}{2\tau ^2}),
\end{align}
می‌باشد که $\tau$  پهنای باند نامیده می‌شود. هرچه $\tau$  بزرگتر باشد، داده‌های محلی دورتر و هرچه $\tau$  کمتر باشد داده‌های محلی نزدیک‌تر را در نظر می‌گیرد. در این روش به تمام مجموعه‌ی آموزشی نیاز داریم اما اگر برای هر داده خطا در نظر بگیریم خطای داده‌های دورتر مهم نیستند و تنها خطای داده‌های نزدیک‌تر برای ما اهمیت دارند (شکل \ref{locally}). تابع هزینه رگرسیون وزن‌دار محلی به صورت زیر تعریف شده است.
\begin{align}
J(\theta) = \sum_{i=1}^{m} W^{(i)} (y^i - h_{\theta}(x^i))^2
\end{align}  
  \begin{figure}[!ht]
\centering
\includegraphics[scale=0.35]{locally.JPG}
\caption{رگرسیون با وزن‌دهی محلی}
\label{locally}
\end{figure} 
%\begin{align}
%y \in \{0,1\},
%\end{align}

کلاس‌بندی به عنوان فرایند شناخت، درک و گروه‌بندی اشیاء و ایده‌ها در دسته‌های از پیش تعیین‌شده تعریف می‌شود. 
کلاس‌بندی نوعی تشخیص الگو است که در آن الگوریتم‌های کلاس‌بندی بر روی داده‌های آموزشی برای کشف الگوی مشابه در مجموعه‌های داده جدید انجام می‌شود.
یک الگوریتم کلاس‌بندی، از مجموعه داده یا مشاهدات ارائه شده برای یادگیری نحوه کلاس‌بندی مشاهدات جدید در کلاس ها یا گروه‌های مختلف
 استفاده می‌کند.
پس با توجه به داده‌های آموزشی هدف یادگیری نگاشتی از ورودی $x$  به خروجی  $y$ می‌باشد که  $y\in \{1,\cdots,c\}$  و $c$ تعداد کلاس‌ها می‌باشد. اگر $c=2$  باشد مساله‌ی ما یک مساله‌ی کلاس‌بندی دودویی
 \LTRfootnote{Binary classification }
 نامیده می‌شود ، و اگر $c>2$ باشد مساله‌‌ی کلاس‌بندی چند کلاسه 
نامیده می‌شود. 

\section{ رگرسیون لجستیک : کلاس‌بند دودویی}
برای توضیح کلاس‌بندی در یادگیری نظارت‌شده، مساله‌ای را در نظر بگیرید که در آن می‌خواهیم بیماران سرطانی را به دو دسته‌ی سرطان خوش‌خیم یا بدخیم کلاس‌بندی کنیم. همانطور که در شکل \ref{reg2} مشاهده می‌کنیم، کلاس صفر سرطان خوش‌خیم و کلاس یک سرطان بدخیم را نشان می‌دهد که بر اساس ویژگی اندازه‌ی غده سنجیده شده است.
در اینجا هدف اصلی ما این هست که داده‌ی جدید در کدام کلاس قرار می‌گیرد. بدین منظور از ساده‌ترین تابع خطی 
 بر اساس روش رگرسیون استفاده می‌کنیم، تابهترین برازش را روی نمونه‌های ${\color{red}\times}$  داشته باشد (خط آبی $(h_{\theta}(x))$) به گونه‌ای که خطای کمترین مربعات کاهش یابد. تفاوت این تابع خطی با روش رگرسیون در این است که ما از این تابع برای کلاس‌بندی داده‌ی جدید می‌خواهیم استفاده کنیم.  
از آنجاییکه این تابع خطی یک تابع پیوسته هست خروجی آن بین $(-\infty,\infty)$ می‌باشد. پس هرچه خروجی به $1$ نزدیک تر باشد داده‌ی جدید متعلق به کلاس یک و هرچه خروجی به $0$ نزدیک باشد داده‌ی جدید به کلاس صفر تعلق دارد. 
پس با قرار دادن آستانه‌ای 
\LTRfootnote{threshold}
مثل $0.5$ بر روی خروجی کلاس‌بند، به ازای داده‌ی جدید داریم:

\begin{align}\left\{
\begin{array}{ll}
 h_{\theta}(x_{new})\geqslant 0.5 \Rightarrow y=0\\
 h_{\theta}(x_{new})<0.5 \Rightarrow y=1.
\end{array} 
 \right.
\end{align}
\begin{figure}[!ht]
\centering
\includegraphics[scale=0.25]{reg2.jpg}
\caption{کلاس‌بندی دودویی}
\label{reg2}
\end{figure} \\
در مساله‌ی کلاس‌بندی دودویی ما انتظار داریم که خروجی $h_{\theta}(x)$ بین صفر و یک باشد تا بتوانبم کلاس درست داده‌ی جدید را پیش‌بینی کنیم. از آنجاییکه در رگرسیون معمولی خروجی $h_{\theta}(x)>0$  یا  $h_{\theta}(x)<0$  می‌باشد، ممکن هست داده‌ای به ما داده شود که خروجی آن بین صفر و یک نباشد که برای حل این مشکل به بررسی رگرسیون لجستیک \LTRfootnote{Logistic Regression}که یکی از الگوریتم‌های یادگیری نظارت شده است و برای کلاس‌بندی از آن استفاده می‌شود، می‌پردازیم.  
ایده‌ی رگرسیون لجستیک بدین‌صورت می‌باشد که با استفاده از تابعی، خروجی‌هایی که در بازه‌ی $(-\infty,+\infty)$  هستند را به بازه $(0,1)$ انتقال دهد. این تابع، تابع لجستیک (\ref{sigmoid}) نامیده می‌شود که به صورت زیر تعربف شده است:
\begin{eqnarray}
g(z) = \dfrac{1}{1 + \exp^{-z}} = \left\lbrace 
\begin{array}{l}
z =0  \Rightarrow g(z) = \dfrac{1}{1 + \exp^{0}} = \dfrac{1}{2}\\
z =- \infty \Rightarrow g(z) = \dfrac{1}{1 + \exp^{-(-\infty)}} = 0\\
z =\infty  \Rightarrow g(z) = \dfrac{1}{1 + \exp^{-\infty}} = 1
\end{array}
\right.
\end{eqnarray}
\begin{figure}[!ht]
\centering
\includegraphics[scale=0.25]{sigmoid.jpg}
\caption{تابع لجستیک}
\label{sigmoid}
\end{figure} \\
بنابراین تابع فرضیه در رگرسیون لجستیک به صورت تعریف می‌شود: 
\begin{align}
h_{\theta}(x) = g(\theta^T x) = \dfrac{1}{1 + \exp^{-\theta^T x}}
\end{align}.
در اینجا هدف به‌دست آوردن بهترین پارامترها می‌باشد، بدین‌منظور در ادامه به برسی تابع هزینه می‌پردازیم.
\subsubsection*{تابع هزینه : تفسیر احتمالاتی}
بر اساس توزیع برنولی، اگر احتمال تعلق $x$ به کلاس یک 
\begin{align}\lable{p1}
 p(y=1|x;\theta)&=h_{\theta}(x)
\end{align}
و احتمال تعلق به کلاس صفر برابر با 
\begin{align}\lable{p0}
 p(y=0|x;\theta)&=1-h_{\theta}(x)
\end{align}
باشد، به ازای ورودی جدید با ترکیب دو رابطه‌ی \ref{p1} و \ref{p0} داریم:
\begin{align}
 p(y_i|x_i;\theta)&=h_{\theta}(x_i)^{y_i}(1-h_{\theta}(x_i))^{1-y_i} \quad \quad \quad i=1,\cdots,n.  
\end{align}
%\subsubsection*{تابع درستنمایی}
هدف پیدا کردن بهترین پارامترها می‌باشد به گونه‌ای که حاصلضرب احتمال همه‌ی داده‌های آموزشی (تابع درستنمایی) بیشینه شود یعنی 
\begin{align}
L(\theta)=p(Y|X;\theta)= \prod _{i=1}^{m} p(y_i|x_i;\theta)&=\prod _{i=1}^{m} h_{\theta}(x_i)^{y_i}(1-h_{\theta}(x_i))^{1-y_i}, 
\end{align}
%\subsubsection*{لگاریتم تابع درستنمایی}
که به جای ماکسیمم کردن $L(\theta)$  می‌توان لگاریتم آن را مینیمم کرد:
\begin{align}
l(\theta) = \log L(\theta) \\
&= \log  \prod _{i=1}^{m} p(y_i|x_i;\theta)\\
&=\sum _{i=1}^{m}\log[ h_{\theta}(x_i)^{y_i}(1-h_{\theta}(x_i))^{1-y_i}] \\
&= \sum _{i=1}^{m}[ y_i \log h_{\theta}(x_i)+(1-y_i)\log(1-h_{\theta}(x_i)].
\end{align}

%\subsubsection*{تابع هزینه}
 بنابراین تابع هزینه به صورت زیر می‌باشد:
\begin{align}
J(\theta) = -l(\theta)  = \sum _{i=1}^{m} [-y_i  \log h_{\theta}(x_i)-(1-y_i)\log (1-h_{\theta}(x_i))].
\end{align}
\subsubsection{مرز تصمیم‌گیری خطی و غیر خطی}
در مساله‌ی کلاس‌بندی ما به یک مرز تصمیم‌گیری برای پیش‌بینی داده‌های جدید نیاز داریم. بعد از بدست آمدن پارامترها، با قرار دادن $\theta^T x =0$، معادله‌ی مرز تصمیم‌گیری بدست می‌آید.  
با توجه به شکل \ref{marztas} ،
 اگر تابع فرضیه به صورت  $h_{\theta}(x) = g(\theta_0 + \theta_1 x_1 + \theta_2 x_2)$  باشد که بهترین پارامترهای به‌دست آمده   $(-3,1,1)$باشد، آنگاه معادله‌ی مرز تصمیم‌گیری به صورت 
\begin{align}
-3 + x_1 + x_2 =0
\end{align}
می‌باشد که با خط قرمز در شکل \ref{marztas}
 نشان داده شده است. 
حال برای تخمین داده‌ی جدید اگر $x_1 + x_2\geqslant 0$  ، داده‌ی جدید متعلق به کلاس یک  و اگر  $x_1 +x_2 < 0$ ، داده به کلاس صفر تعلق دارد.
\begin{figure}[!ht]
\centering
\includegraphics[scale=0.35]{marztas.JPG}
\caption{مرز تصمیم‌گیری}
\label{marztas}
\end{figure}
به طور مشابه در حالت غیر خطی،  اگر تابع فرضیه به صورت  $h_{\theta}(x) = g(\theta_0 + \theta_1 x_1 + \theta_2 x_2, \theta_3x_1^2,\theta_4x_4^2)$  باشد که بهترین پارامترهای به‌دست آمده   $(-1,0,0,1,1)$باشد، آنگاه معادله‌ی مرز تصمیم‌گیری به صورت 
\begin{align}
 x_1^2 + x_2^2 \geqslant 1 \Rightarrow y=1 \\ \nonumber
  x_1^2 + x_2^2 < 1 \Rightarrow y=1 
\end{align}
می‌باشد (\ref{marzna}) . 

\begin{figure}[!ht]
\centering
\includegraphics[scale=0.35]{marzna.JPG}
\caption{مرز تصمی‌گیری غیرخطی}
\label{marzna}
\end{figure}

\subsection{کلاس‌بندی چندکلاسه}
فرض کنیم در مساله‌ی کلاس‌بندی با بیش از دو کلاس سروکار داریم. در این حالت مساله‌ی کلاس‌بندی ما یک مساله‌ی چند کلاسه می‌باشد. در این جا خروجی ما $y \in \{1,2,..,c\}$  هست که $c$ تعداد کلاس‌ها می‌باشد. با توجه به شکل \ref{multiclass} ، مساله‌ی ما یک مسال‌ی سه کلاسه می‌باشد.  
\begin{figure}[!ht]
\centering
\includegraphics[scale=0.25]{multiclass.jpg}
\caption{کلاس‌بندی چند‌کلاسه}
\label{multiclass}
\end{figure} \\
برای بدست آوردن کلاس درست یک داده‌ی جدید از روش یکی در برابر بقیه استفاده می‌کنیم.
ایده‌ی اصلی این روش با توجه به شکل \ref{se}
\begin{figure}[!ht]
\centering
\includegraphics[scale=0.45]{maaliii.JPG}
\caption{یکی در برایر همه}
\label{maaliii}
\end{figure} 
بدین صورت است که یک کلاس را از بقیه کلاس‌ها جدا کرده، یعنی مساله‌ی کلاس‌بندی $i$ کلاسه را به $i$ تا مساله‌ی کلاس‌بندی دودویی تبدیل می‌کنیم. حال به ازای هر کلاس $i$،کلاس‌بند $h_{\theta}^{i}(x)=p(y=i|x;\theta)$ را به منظور
تخمین احتمال تعلق ورودی $x$ به کلاس $i$ آموزش می‌دهد و سپس برای پیش‌بینی داده‌ی جدید کلاس  $i$ را به گونه‌ای انتخاب می‌کند که 
\begin{align}
y = \arg\max_{i} h_{\theta}^{i}(x).
\end{align}


\section{$K$ نزدیک‌ترین همسایه}
الگوریتم $K$ نزدیکترین همسایه 
\LTRfootnote{K-nearest neighbour}
 ($KNN$)
 یک الگوریتم غیر پارامتریک در یادگیری نظارت‌شده می‌باشد که از آن برای مسائل رگرسیون و کلاس‌بندی استفاده می‌شود. پیاده سازی و درک آن آسان است اما با بزرگ شدن اندازه داده‌های مورد استفاده کاهش سرعت قابل توجهی در آن به وجود می‌آید. ایده‌ی اصلی این روش بدین‌صورت است که به ازای نقطه‌ی پرسشی جدید، فاصله‌ی آن را با همه‌ی نمونه‌ها بدست می‌آورد و $K$  تا از نزدیک‌ترین نقاط به داده‌ی پرسشی را در نظر می‌گیرد. برچسب کلاس این نقطه‌ی پرسشی بر اساس رای اکثریت به‌دست می‌آید. یعنی از بین $K$  نمونه‌ی نزدیک به نقطه‌ی پرسشی، برچسبی که بیشترین رای را داشته باشد به عنوان برچسب داده‌ی جدید در نظر می‌گیریم. 
فرض کنید، تصویری از موجودی داریم که شبیه گربه و سگ است، اما می‌خواهیم بدانیم که گربه است یا سگ. بنابراین برای این شناسایی، می‌توانیم از الگوریتم $KNN$ استفاده کنیم، زیرا بر روی معیار شباهت کار می‌کند. مدل $KNN$ ما ویژگی‌های مشابه مجموعه داده‌های جدید را با تصاویر گربه‌ها و سگ‌ها پیدا می‌کند و بر اساس مشابه‌ترین ویژگی‌ها، آن را در دسته‌بندی گربه یا سگ قرار می‌دهد (شکل
\ref{cat}).
 \end{example}
 \begin{figure}[!ht]
\centering
\includegraphics[scale=0.35]{cat.JPG}
\caption{کلاس‌بندی گربه و سگ}
\label{cat}
\end{figure}

\subsection{محاسبه $KNN$: معیارهای فاصله}
برای تعیین اینکه کدام نقاط داده به یک نقطه پرسشی نزدیکتر هستند، فاصله بین نقطه پرسشی و سایر نقاط داده باید محاسیه شود. چندین معیار فاصله وجود دارد که به بررسی چند مورد آن می‌پردازیم.
\subsubsection{فاصله‌ی اقلیدسی}
محبوب‌ترین معیار اندازه‌گیری فاصله، فاصله‌ی اقلیدسی \LTRfootnote{Euclidean distance} می‌باشد که به صورت زیر تعریف شده است:
\begin{align}\label{eu}
d(x,y) = \sqrt{\sum _{i=1}^{n}(y_i -x_i)^2},
\end{align}
که $n$  تعداد نمونه‌های آموزشی می‌باشد. 
\subsubsection{فاصله‌ی منهتن}
فاصله‌ی منهتن \LTRfootnote{Manhattan distance} ، یکی دیگر از معیارهای محبوب فاصله است که قدر‌مطلق بین دو نقطه را اندازه گیری می کند،
\begin{align}\label{eu}
d(x,y) = (\sum _{i=1}^{n}\vert x_i -y_i\vert ^2).
\end{align}
\subsubsection{فاصله مینکوفسکی }
فاصله مینکوفسکی \LTRfootnote{Minkowski distance}، شکل تعمیم یافته معیارهای فاصله اقلیدسی و منهتن است. پارامتر $p$ در فرمول زیر امکان ایجاد سایر معیارهای فاصله را فراهم می کند. فاصله اقلیدسی با این فرمول نشان داده می شود که $p=2$ و در فاصله منهتن $p=1$ . 
\begin{align}\label{eu}
d(x,y) = (\sum _{i=1}^{n}\vert x_i -y_i\vert ^{1/p}).
\end{align}
\subsection{محاسبه‌ی $K$}
مقدار $K$ در الگوریتم $KNN$ تعیین میکند که چند همسایه برای تعیین کلاس‌بندی یک نقطه پرسشی خاص بررسی می‌شود. به عنوان مثال، اگر $K=1$ باشد، نمونه به همان کلاس نزدیکترین همسایه‌اش اختصاص داده می‌شود. تعریف $K$ میتواند یک عمل متعادل‌کننده باشد زیرا مقادیر مختلف $K$ می‌تواند منجر به بیش‌برازش یا کم‌برازش شود. مقادیر کمتر $K$ می‌تواند واریانس بالایی داشته باشد، اما بایاس کم و مقادیر بزرگتر $K$ ممکن است منجر به بایاس زیاد و واریانس کمتر شود. انتخاب $K$ تا حد زیادی به داده‌های ورودی بستگی دارد زیرا داده‌هایی با مقادیر پرت یا نویز بیشتر، احتمالاً با مقادیر بالاتر $K$ عملکرد بهتری خواهند داشت. به طور کلی، توصیه می‌شود که یک عدد فرد برای $K$ داشته باشید تا از برابری تعداد نمونه‌های هر دو کلاس در کلاس‌بندی جلوگیری شود. اعتبارسنجی متقابل می‌تواند به شما در انتخاب $K$ بهینه برای مجموعه داده‌تان کمک کند.
\subsection{کاربردهای $KNN$ در زمینه‌های مختلف}
الگوریتم $KNN$  در زمینه‌‌های مختلف کلاس‌بندی مورد استفاده قرار گرفته است که یکی از کاربردهای آن در علم پزشکی می‌باشد. این الگوریتم در مراقبت‌های بهداشتی، با محاسبه محتمل‌ترین عبارات ژنی خطر حملات قلبی و سرطان را پیش‌بینی می‌کند. 
\subsection{مزایا و معایب الگوریتم $KNN$ }
الگوریتم $ KNN$ یکی از ساده‌ترین روش‌ها جهت پیاده‌سازی می‌باشد. زمانی که نمونه‌های آموزشی جدید اضافه می‌شوند الگوریتم برای محاسبه هر داده جدید تنظیم می‌شود زیرا تمام داده‌های آموزشی در حافظه ذخیره می‌شود. در این الگوریتم نیازی به ساختن مدل و  تنظیم چندین پارامتر یا پیش فرض های اضافی نیست. این روش در برابر داده‌های آموزشی نویزدار قوی است و همچنین اگر داده‌های آموزشی بزرگ باشد می تواند مؤثرتر باشد.
 عیب اصلی $KNN$  این است که  نیاز به تعیین مقدار $K$ دارد که ممکن است پیچیده باشد.
و همینطور هزینه محاسبات به دلیل محاسبه فاصله بین نقاط داده برای همه نمونه‌های آموزشی بالا است.
\subsection{الگوریتم $KNN$}
1. مجموعه داده آموزشی را بارگذاری کنید.\\
2. مقدار $K$ (تعداد همسایگان) را تعریف کنید.\\
3. برای هر نمونه جدیدی که باید کلاس‌بندی شود:\\
 4. فاصله بین نمونه جدید و همه نمونه‌های موجود در مجموعه داده آموزشی را محاسبه کنید\\
5. $K$ تا از نزدیکترین همسایگان را بر اساس فاصله محاسبه شده انتخاب کنید\\
 6. تعداد نمونه های متعلق به هر برچسب کلاس را در بین همسایگان $K$ بشمارید\\
 7. برچسب کلاسی را که بیشتر ظاهر می شود به عنوان کلاس پیش بینی شده برای نمونه جدید اختصاص دهید\\
 8. برچسب یا مقدار کلاس پیش بینی شده را به نمونه جدید اختصاص دهید\\
9. مراحل3-9 را برای همه نمونه های جدید که باید کلاس‌بندی یا پیش‌بینی شوند تکرار کنید\\

\section{شبکه‌های عصبی}
شبکه عصبی یک مدل محاسباتی است که از ساختار و عملکرد شبکه های عصبی بیولوژیکی مانند مغز انسان الهام گرفته شده است. شبکه‌های عصبی از گره‌های به هم پیوسته یا "نورون" تشکیل شده است که در لایه‌ها سازماندهی شده اند. هر نورون ورودی ها را دریافت می‌کند، آنها را پردازش می‌کند و یک خروجی تولید می‌کند. خروجی‌های یک لایه از نورون‌ها به عنوان ورودی به لایه بعدی عمل می‌کنند.
 یک شبکه عصبی بسته به اینکه چگونه آموزش داده شده و برای چه نوع وظیفه ای به کار گرفته می شود، می تواند هم برای یادگیری تحت نظارت و هم برای یادگیری بدون نظارت استفاده شود.

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

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

بنابراین، نوع یادگیری (با نظارت یا بدون نظارت) به کاربرد خاص و فرآیند آموزشی مورد استفاده در شبکه عصبی بستگی دارد.
\subsection{شبکه‌ی عصبی: یادگیری نظارت‌شده}
همانطور که در شکل‌های زیر مشاهده می‌کنید، اگر داده‌ها به صورت خطی تفکیک‌پذیر نباشند نمی‌توان با یک با کلاس‌بندهای خطی مانند رگرسیون لجستیک کلاس‌بندی خوبی روی داده‌ها داشته باشیم. 
\begin{figure}[!ht]
\centering
\begin{tabular}{cc}
\includegraphics[width=0.3\linewidth]{shabakegh.JPG}&
\includegraphics[width=0.3\linewidth]{shabakekh.jpg}\\
(آ)
&
(ب)
\end{tabular}
\caption{آ: مرز تصمیم‌گیری خطی، ب: مرز تصمیم‌گیری غیر خطی}
\label{shabake}
\end{figure}\\
\subsubsection{انتشار پیشرو }
 ایده‌ی اصلی در شبکه‌های عصبی یادگیری ویژگی‌های جدید برای داده‌هایی که به صورت خطی از هم جدا نمی‌شوند ،می‌باشد. شبکه‌های عصبی می‌توانند با ترکیب ویژگی‌های سطح پایین، ویژگی‌های سطح بالای مورد نیاز خود را یاد بگیرند. با توجه به شکل (\ref{layer1})، $x$  بردار ورودی ما می‌باشد. در کلاس‌بندی معمولی، دسته‌بند خطی به صورت $W^Tx+b$  می‌باشد. اما قدرت شبکه‌های عصبی به تابع غیرخطی اعمال شده روی $W^Tx+b$ می‌باشد که لایه‌ی مخفی \LTRfootnote{Hidden Layer} را ایجاد می‌کند. بنابراین برای شبکه عصبی دو لایه (\ref{layer1}) داریم:
\begin{figure}[!ht]
\centering
\includegraphics[scale=0.3]{layer1.JPG}
\caption{شبکه عصبی دو لایه}
\label{layer3}
\end{figure}
\begin{align}
h &= f(W_1^Tx +b) \\ \nonumber
s &= W_2 ^Th + b_2
\end{align}

به طور مشابه برای شبکه‌های عصبی سه لایه داریم (\ref{layer3}):
\begin{figure}[!ht]
\centering
\includegraphics[scale=0.3]{layer3.JPG}
\caption{شبکه عصبی سه لایه}
\label{layer3}
\end{figure}
\begin{align}
h_1 &= f(W_1^Tx +b) \\ \nonumber
h_2 &=f( W_2 ^Th + b_2)\\ \nonumber
s &= W_3^T h_3 + b_3
\end{align}
%\subsubsection{انتشار پسرو }
%با توجه به شکل (\ref{})، در انتشار پسرو \LTRfootnote{} 

که $f$  تابع فعالیت \LTRfootnote{Activation function}  غیرخطی می‌باشد. انواع توابع فعالیت به صورت زیر می‌باشد:\\

1. \textbf{تابع فعالیت سیگموید}
\begin{align}
\sigma(x)= \dfrac{1}{1+exp(-x)} \\ \nonumber
\end{align}
\begin{figure}[!ht]
\centering
\includegraphics[scale=0.3]{sig.JPG}
\caption{تابع فعالیت سیگموید}
\label{sig}
\end{figure}\\

%\subsubsection*{تابع فعالیت تانژانت‌هایپربولیک}
2. \textbf{تابع فعالیت تانژانت‌هایپربولیک}
\begin{align}
f(x)= \tanh(x) \\ \nonumber
\end{align}
\begin{figure}[!ht]
\centering
\includegraphics[scale=0.3]{tan.JPG}
\caption{تابع فعالیت تانژانت‌هایپربولیک}
\label{tan}
\end{figure}\\

%\subsubsection*{تابع فعالیت $ReLU$}
3. \textbf{تابع فعالیت $ReLU$}
\begin{align}
f(x) = max(0,x) \\ \nonumber
\end{align}
\begin{figure}[!ht]
\centering
\includegraphics[scale=0.3]{relu.JPG}
\caption{$ReLU$ تابع فعالیت }
\label{relu}
\end{figure}
\newpage



\subsection{شبکه‌ی عصبی: یادگیری بدون‌نظارت}
رمزگذارهای خودکار \LTRfootnote{Authoencoder} نوعی معماری شبکه عصبی است که معمولاً برای کارهای مختلف پردازش تصویر از جمله حذف نویز و رفع تاری تصویر استفاده می شود. این شامل یک شبکه رمزگذار است که تصویر ورودی را به یک نمایش فضای پنهان با ابعاد پایین تر فشرده می کند، و یک شبکه رمزگشا که تصویر را از این نمایش بازسازی می کند.

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

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

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

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

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

\section{مفاهیم اساسی در یادگیری ماشین}
\subsection{مدل‌های پارامتری و غیر پارامتری}
راه‌های زیادی برای تعریف چنین مدل‌هایی وجود دارد، اما مهم‌ترین تمایز این است: آیا مدل تعداد پارامترهای ثابتی دارد یا تعداد پارامترها با مقدار داده‌های آموزشی افزایش می یابد؟
در مدل‌های پارامتری یک مجموعه‌ی ثابت از پارامترها وجود دارد. یعنی چه صد داده داشته باشیم چه هزار داده، تعداد پارامترها ثابت می‌باشد و برای پیش‌بینی داده‌ی جدید نیازی به مجموعه‌ی آموزشی نمی‌باشد. یعنی:
\begin{align}
h_{\theta}(x^{new})= \theta ^{T} x^{new}
\end{align}
از مدل‌های پارامتریک می‌توان رگرسیون، رگرسیون لجستیک و شبکه عصبی را نام برد. 
در مدل‌های غیرپارامتری، تعداد پارامترها با افزایش اندازه‌ی مجموعه‌ی آموزشی به صورت خطی افزایش می‌یابد و به منظور پیش‌بینی داده‌های جدید به تمام مجموعه‌ی آموزشی نیاز داریم. از جمله این مدل‌ها، می‌توان رگرسیون با وزن‌دهی محلی را نام برد. 

\subsection{بیش‌برازش، کم‌برازش و مدل درست}
در روش‌های یادگیری ماشین، مدل مناسب مدلی می‌باشد که علاوه‌بر اینکه داده‌های آموزشی را خوب یاد می‌گیرد، قابلیت تعمیم خوبی روی داده‌های آزمایشی (داده‌هایی که دیده نشده‌اند) نیز داشته باشد
 (س,\ref{over},\ref{overc}) . 
%بیش‌برازش  یک رفتار نامطلوب در یادگیری ماشین است و زمانی رخ می‌دهد که مدل یادگیری ماشین پیش‌بینی دقیقی برای داده‌های آموزشی ارائه می‌دهد اما برای داده‌های جدید نه. هنگامی که دانشمندان داده از مدل‌های یادگیری ماشین برای پیش بینی استفاده می کنند، ابتدا مدل را بر روی یک مجموعه داده شناخته شده آموزش می‌دهند. سپس، بر اساس این اطلاعات، مدل سعی می کند نتایج را برای مجموعه داده‌های جدید پیش‌بینی کند. یک مدل بیش‌برازش می‌تواند پیش‌بینی های نادرستی ارائه دهد و نمی تواند برای همه انواع داده‌های جدید عملکرد خوبی داشته باشد.

%در روش‌های یادگیری ماشین دو هدف اصلی برای انتخاب مدل مناسب وجود دارد. 
% عملکرد بسیار خوب مدل بر روی داده‌های آموزشی و همچنین عملکرد خوب مدل بر روی داده‌های جدید (قابلیت تعمیم برای داده‌های جدید).
 همانطور که در شکل  (\ref{over}) مشاهده می‌کنید، از رگرسیون چندجمله‌ای با با درجه‌های $15,4,1$  برای برازش نمونه‌های سبز رنگ استفاده شده است. مدل درستی که باید بدست آید با خط قرمز نشان داده شده است.
  در (\ref{over},\ref{a}) از ساده‌ترین مدل، رگرسیون خطی (چندجمله‌ای درجه یک) استفاده شده است. %اگر مجموع مربعات خطا را محاسبه کنیم عدد بزرگی خواهد بود که بیانگر هزینه زیاد می‌باشد.
در این حالت، مدل نمی‌تواند الگوی غالب در داده‌ها را تشخیص دهد؛ درنتیجه، این امر افزایش خطا و عملکرد ضعیف مدل را به همراه دارد. در اینجا مدل قادر نیست رابطه‌ی میان متغیرهای ورودی و خروجی را به طور دقیق ثبت کند که باعث ایجاد خطای بالایی در هر دو مجموعه‌ی آموزشی و مجموعه‌ی داده‌های دیده‌نشده (تست) را رقم می‌زند. به این نوع مدل‌ها، مدل کم‌برازش  \LTRfootnote{underfitting} گفته می‌شود. 
  % پس می‌توان نتیجه گرفت که این داده‌ها را نمی‌توان با یک تابع خطی مدل کرد زیرا حتی داده‌های آموزشی را هم خوب یاد نمی‌گیرد در این حالت مدل ما کم‌برازش می‌باشد \LTRfootnote{underfitting}. کم‌برازش زمانی اتفاق می‌افتد که یک مدل برای گرفتن ساختار زیربنایی داده‌ها بسیار ساده باشد که این می‌تواند منجر به عملکرد ضعیف روی داده‌های آموزشی و همچنین عملکرد ضعیف روی داده‌های آزمایشی شود. 
    اگر درجه چند‌جمله‌ای را $4$ در نظر بگیریم (\ref{over},\ref{b}) ، یعنی علاوه‌بر ویژگی $x$ ، ویژگی‌های $x^2, x^3, x^4$  را نیز اضافه کنیم، در این حالت مدلی که بدست آمده تقریبا منطبق با خط قرمز می‌باشد یعنی داده‌های آموزشی را به خوبی یاد گرفته و برای داده‌های جدید هم می‌تواند با دقت خوبی پیش‌بینی کند. پس می‌توان نتیجه گرفت که رگرسیون چندجمله‌ای درجه‌ی $4$  مدل مناسبی برای این مجموعه داده‌ها می‌باشد.
  یکی از مشکلات بسیار متداول در یادگیری ماشین، بیش‌برازش \LTRfootnote{overfitting} می‌باشد. بیش‌برازش زمانی اتفاق می‌افتد که مدل ما بیش از حد نیاز پیچیده باشد که به دلیل تعداد بسار زیاد ویژگی‌ها می‌تواند رخ دهد.
یعنی به جای برازش الگوی کلی، با ویژگی‌های مجموعه آموزشی مطابقت داشته باشد. در   (\ref{over},\ref{c})
 با افزایش تعداد ویژگی‌ها (چند‌جمله‌ای از درجه‌ی  $15$) ، مدل به خوبی روی داده‌های آموزشی منطبق شده است. این مدل عملکرد بسیار خوبی روی داده‌های آموزشی را دارد اما عملکرد خوبی برای داده‌های جدید نخواهد داشت. با توجه به شکل (\ref{new} ) اگر داده‌ی جدید را با دایره‌ی توخالی نشان دهیم بر اساس مدل بدست آمده پیش‌بینی خوبی نخواهد داشت. 
% پس می‌توان نتیجه گرفت که با افزایش تعداد ویژگی‌ها (افزایش درجه‌ی چند‌جمله‌ای)  (\ref{over},\ref{c})
به طور مشابه در مسائل کلاس‌بندی هم مدل ما دچار بیش‌برازش خواهد شد(\ref{overc}) .
 
 \begin{figure}[!ht]
\centering
\begin{tabular}{ccc}
\includegraphics[width=0.3\linewidth]{under.png}&
\includegraphics[width=0.3\linewidth]{over.png}&
\includegraphics[width=0.3\linewidth]{good.png}\\
(آ)
&
(ب)
&
(س)
\end{tabular}
\caption{
(آ) \label{a}
کم‌برازش
~~
(ب)\label{b}
بیش‌برازش
~~
(س)\label{c}
مدل درست
}\label{over}
\end{figure} \\
 \begin{figure}[!ht]
\centering
\includegraphics[scale=0.45]{new.JPG}
\caption{پیش‌بینی داده‌ی جدید}
\label{new}
\end{figure} \\ 
 \begin{figure}[!ht]
\centering
\begin{tabular}{ccc}
\includegraphics[width=0.3\linewidth]{underc.JPG}&
\includegraphics[width=0.3\linewidth]{overc.JPG}&
\includegraphics[width=0.3\linewidth]{goodc.JPG}\\
(آ)
&
(ب)
&
(س)
\end{tabular}
\caption{
(آ) \label{ac}
کم‌برازش
~~
(ب)\label{bc}
بیش‌برازش
~~
(س)\label{cc}
مدل درست
}\label{overc}
\end{figure} \\
\newpage
\subsection{تنظیم: برخورد با بیش‌برازش}
یک روش مؤثر برای کاهش یا حذف بیش‌برازش، تنظیم \LTRfootnote{Reularization} می‌باشد. ایده اصلی در تنظیم جلوگیری از بزرگ شدن بیش از حد مقدار پارامترها با افزودن یک جمله به تابع هزینه به منظور جریمه کردن مقادیر بزرگ پارامترها می‌باشد. ویژگی‌های زیاد باعث بیش‌برازش می‌شود. اگر تابع هموار باشد با تغییر کوچکی در $x$، $y$  خیلی تغییر نمی‌کند ولی در تابع ناهموار با تغییر کوچک در $x$، شاهد تغییرات ناگهانی در $y$ خواهیم بود که به دلیل ضرایب $\theta$ها اتفاق می‌افتد. اگر نگذاریم $\theta$ها بیش از حد بزرگ شوند آنگاه تابع هموار بدست می‌آید. بدین منظور، یک جمله به تابع هزینه اضافه می‌کنیم که اگر پارامتری بزرگ شد آن را جریمه کند. بنابراین تابع هزینه به صورت زیر می‌باشد:
\begin{align}
J(\theta) =\underbrace{\dfrac{1}{n}\sum_{i=1}^{n}Cost(x^{(i)},x^{(j)})}_{\textbf{خطای مجموعه‌ی آموزشی}}  +{\color{red}\lambda} \underbrace{ R(\theta)}_{\textbf{تنظیم، خطای تعمیم}}
\end{align}
که $\lambda$  ضریب تنظیم می‌باشد. در این تابع هزینه، هدف برقراری توازن بین مینیمم کردن خطای مجموعه‌ی آموزشی و خطای تعمیم می‌باشد که از طریق ضریب تنظیم انجام می‌شود.  $\lambda\rightarrow 0$، بیانگر اهمیت بیشتر به خطای مجموعه‌ی آموزشی می‌باشد یعنی داده‌های آموزشی را خوب یاد بگیرد و $\lambda\rightarrow \infty$ ، بیانگر اهمیت بیشتر به خطای تعمیم می‌باشد یعنی داده‌های جدید را خوب پیش‌بینی کند. 
\subsection{انواع تنظیم}
\subsubsection{تنظیم لاسو ($L_1$)}
همانطور که گفته شد، استفاده از تنظیم به منظور جلوگیری از بزرگ شدن بیش‌ از حد پارامترها می‌باشد. در تنظیم لاسو 
\LTRfootnote{Lasso}
 که $L_1$  نیز نامیده می‌شود،
 هدف نگه داشتن پارامترهای مرتبط با فیچرهای مهم می‌باشد و پارامترهای فیچرهای غیر ضروری دیگر را صفر می‌کند. تنظیم $L_1$ به صورت زیر تعریف می‌شود
  (\ref{kl1}):
\begin{align}
R(\theta) = \sum_{j=1}^{n}\vert \theta\vert = \Vert \theta \Vert_{1}.
\end{align}

\subsubsection{تنظیم ریج ($L_2$)}
تنظیم ریج \LTRfootnote{Ridge} که $L_2$  نیز نامیده می‌شود، پارامترها را تا حد امکان کوچک می‌کند ولی هیچ پارامتری را صفر نمی‌کند. تنظیم $L_2$ به صورت زیر تعریف می‌شود(\ref{kl2}):
\begin{align}
R(\theta) = \sum_{j=1}^{n}\vert \theta^2 \vert = \Vert \theta \Vert_{2}^{2}.
\end{align}
  \begin{figure}[!ht]
\centering
\includegraphics[scale=0.25]{kl1.JPG}
\caption{تنظیم $L_1$}
\label{kl1}
\end{figure} \\
  \begin{figure}[!ht]
\centering
\includegraphics[scale=0.25]{kl2.JPG}
\caption{تنظیم $L_2$}
\label{kl2}
\end{figure} \\
در شکل‌های (\ref{kl1}) و (\ref{kl2}) که یک مساله در فضای دو بعدی با دو پارامتر $\theta_1$  و  $\theta_2$  می‌باشد، کانتور آبی رنگ تابع مجموع مربعات خطا می‌باشدکه محدب است و کانتور قرمز به ترتیب تابع قدرمطلق پارامترها و تابع مجموع مربعات پارامترها می‌باشد. در $L_2$ با مینیمایز کردن هر دو کانتور نقاط بهینه نقاطی هستند که در تلاقی دو کانتور آبی و قرمز قرار می‌گیرند. اما در $L_1$  جواب‌های بهینه روی خط $\theta_1$  و  $\theta_2$ قرار می‌گیرند. اگر $\lambda\rightarrow0$ اهمیت بیشتری به بهینه‌سازی کانتور آبی می‌دهیم و اگر $\lambda\rightarrow \infty$  یعنی به تنظیم یا بهینه‌سازی کانتور قرمز اهمیت بیشتری می‌دهیم.
\subsubsection{تنظیم ($Elastic-net$)}
تنظیم $Elastic-net$  ، ترکیبی از تنظیم $L_1$  و  $L_2$  می‌باشد که به صورت زیر تعریف شده است:
\begin{align}
R(\theta) = \alpha \Vert \theta \Vert_1 + (1-\alpha)\Vert \theta \Vert_{2}^{2}.
\end{align}
برای توضیح بیشتر، مساله‌ی رگرسیون چندجمله‌ای درجه‌ی $15$  (\ref{over}) را در نظر بگیرید. همانطور که گفته شد این یک مدل بیش‌برازش می‌باشد که پارامترهای آن در شکل (\ref{pm}) آمده شده است. اگر عبارت‌های تنظیم $L_1$  و  $L_2$  را به تابع هزینه اضافه کنیم پارامترها به صورت(\ref{pml1})  و 
(\ref{pml2})
 می‌باشد.
 
  \begin{figure}[!ht]
\centering
\includegraphics[scale=0.25]{pm.JPG}
\caption{}
\label{pm}
\end{figure} \\
  \begin{figure}[!ht]
\centering
\includegraphics[scale=0.25]{pml1.JPG}
\caption{}
\label{pml1}
\end{figure} \\
  \begin{figure}[!ht]
\centering
\includegraphics[scale=0.25]{pml2.JPG}
\caption{}
\label{pml2}
\end{figure} \\
\newpage
\subsection{انتخاب مدل: ابرپارامترها}
انتخاب مدل در یادگیری ماشین به فرآیند انتخاب مناسب‌ترین الگوریتم یا مدل برای یک مجموعه داده و مساله‌ی معین اشاره دارد. این شامل ارزیابی مدل‌های مختلف و انتخاب مدلی است که به بهترین حالت با داده‌ها مطابقت دارد و احتمالاً به خوبی به داده‌های دیده نشده تعمیم می‌یابد. به‌دست آوردن همچین مدلی مبتنی بر یادگیری بهترین ابرپارامترها 
\LTRfootnote{Hyper-parameter}
می‌باشد. تکنیک های مختلفی برای انتخاب مدل وجود دارد که به شرح زیر می‌باشد:

\subsubsection{جدا کردن داده‌های آموزشی و آزمایشی\LTRfootnote{Split test and train}}
 با این استراتژی، داده‌های موجود به دو مجموعه‌ی آزمایشی و آموزشی تقسیم می شوند. مدل‌ها با استفاده از یک معیار
\LTRfootnote{Metric}
 ارزیابی از پیش تعیین شده در مجموعه آزمایشی پس از آموزش در مجموعه آموزشی ارزیابی می شوند. این روش یک راه سریع و آسان برای ارزیابی عملکرد یک مدل با استفاده از داده‌های فرضی ارائه می‌دهد.

\subsubsection{اعتبارسنجی متقابل $k$ بخش\LTRfootnote{K- Fold Cross validation}}
در این روش داده‌ها را به دو مجموعه‌ی آموزشی و آزمایشی تقسیم می‌کنیم. 
 اگر مجموعه داده‌های آموزشی را به طور تصادفی به $k$ زیرنمونه یا «لایه» $fold$ با حجم یکسان تفکیک کنیم، می‌توان در هر مرحله از فرایند  $CV$\LTRfootnote{cross validation}، تعداد $k-1$ از این لایه‌ها را به عنوان مجموعه داده آموزشی و یکی را به عنوان مجموعه داده اعتبارسنجی در نظر گرفت. تصویر زیر (\ref{fold})، مراحل روش $k$ بخش برا به خوبی نشان می‌دهد. مشخص است که با انتخاب $k=5$، تعداد تکرارهای فرآیند $CV$ برابر با $5$ خواهد بود و دستیابی به مدل مناسب به سرعت امکان‌پذیر می‌شود. 
%داده‌های آزمایشی را کنار می‌گذاریم و داده‌های آموزشی را به $k$  بخش تقسیم می‌کنیم. با توجه به شکل (\ref{fold}) ، داده‌های آموزشی را به پنج بخش تقسیم کرده‌ایم. 
در هر مرحله از  $CV$ یک بخش از داده‌های آموزشی را به عنوان داده‌های اعتبارسنجی کنار گذاشته و بقیه‌ی بخش‌ها را برای آموزش به مدل می‌دهیم و روی قسمت اعتبارسنجی آزمایش می‌کنیم و خطای هر بخش را بدست می‌آوریم. در نهایت برای انتخاب بهترین مدل از میانگین خطاها استفاده می‌کنیم. 
 \begin{figure}[!ht]
\centering
\includegraphics[scale=0.25]{fold2.JPG}
\caption{}
\label{fold}
\end{figure} 
\subsubsection{معیارهای ارزیابی}
 انتخاب معیارهای ارزیابی مناسب بر اساس مساله‌ی در دست، برای مقایسه مدل‌ها بسیار مهم است. 
در اینجا، ما از رایج‌ترین معیارها مانند دقت \LTRfootnote{accuracy} ، درستی \LTRfootnote{precision} ، یادآوری \LTRfootnote{recall} ،  امتیاز $F1$ و منحنی $AUC$  به منظور ارزیابی عملکرد روش پیشنهادی استفاده می‌کنیم\cite{Handelman,Zhou} . 
مولفه‌های این معیارها شامل منفی درست  $TN$
\LTRfootnote{True negative}،
مثبت درست $TP$ 
\LTRfootnote{True positive}، 
منفی کاذب $FN$  
\LTRfootnote{False negative}،
و مثبت کاذب $TN$  
\LTRfootnote{True negative}
می‌باشد. امتیاز $F1$ میانگین وزنی درستی و یاداوری می‌باشد که به صورت زیر محاسبه می‌شود
 \begin{eqnarray}
 F1  score=\dfrac{2\times Precision\times Recall}{Precision+Recall},
 \end{eqnarray}
که  
 \begin{eqnarray}
 Precision=\dfrac{TP}{TP+FP},
 \end{eqnarray}
بخشی از نمونه‌های بازیابی شده مرتبط هستند، و 
 \begin{eqnarray}
 Recall=\dfrac{TP}{TP+FN},
 \end{eqnarray} 
بخشی از نمونه های مربوطه است که بازیابی می شود.
امتیاز $F1$ به بهترین مقدار خود در $1$ و بدترین مقدار در $0$ می رسد. دقت، عملکرد کلاسبندی را خلاصه می کند که توسط 
 \begin{eqnarray}
Accuracy=\dfrac{TN+TP}{TN+TP+FN+FP}.
 \end{eqnarray} \\
\subsubsection{تعادل بایاس-واریانس}
 مدل‌های با بایاس بالا ممکن است با داده‌ها کمتر مطابقت داشته باشند و مدل دچار کم‌برازش شود ،در حالی که مدل‌های با واریانس بالا ممکن است بیش از حد با داده‌ها مطابقت داشته باشند و بیش‌برازش رخ دهد. انتخاب مدلی که موازنه بهینه بین بایاس و واریانس را تضمین کند، مهم است. تکنیک‌هایی مانند منظم‌سازی می‌تواند به کنترل این مبادله کمک کند.
\subsubsection{انتخاب ویژگی}
 شناسایی مرتبط ترین ویژگی‌ها و انتخاب مدل‌هایی که عملکرد خوبی با ویژگی‌های موجود دارند، می‌تواند دقت مدل را بهبود بخشد. تکنیک‌هایی مانند رگرسیون گام به گام، $LASSO$، و حذف ویژگی‌های بازگشتی می‌توانند به انتخاب ویژگی کمک کنند.
\subsubsection{پیچیدگی}
پیچیدگی یک مدل به ظرفیت آن برای نشان دادن روابط پیچیده در داده ها اشاره دارد. انتخاب مدلی که نه خیلی ساده و نه خیلی پیچیده باشد مهم است. این را می توان از طریق تکنیک هایی مانند منحنی‌های یادگیری ارزیابی کرد، که در آن آموزش و عملکرد اعتبار‌سنجی یک مدل در برابر اندازه مجموعه داده آموزشی ترسیم می‌شود.
\subsubsection{تفسیرپذیری مدل}
تفسیرپذیری مدل
\LTRfootnote{Model interpretability}
بسته به مساله، تفسیرپذیری یک مدل ممکن است مهم باشد. برخی از مدل‌ها، مانند رگرسیون خطی یا درخت‌های تصمیم، دارای درجه بالایی از تفسیرپذیری هستند، در حالی که برخی دیگر، مانند شبکه‌های عصبی یا روش‌های جمعی \LTRfootnote{ensemble}، ممکن است عملکرد بهتری ارائه دهند اما فاقد قابلیت تفسیر هستند. تعادل بین تفسیرپذیری و عملکرد باید در نظر گرفته شود.
\subsubsection{ منابع محاسباتی}
بسته به اندازه مجموعه داده و منابع محاسباتی
\LTRfootnote{Computational resources}
 موجود، مدل‌های خاصی ممکن است امکان‌پذیرتر از مدل‌های دیگر باشند. برخی از مدل‌ها ممکن است از نظر محاسباتی گران باشند یا به مقدار زیادی حافظه نیاز داشته باشند.

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

\newpage
