**طبقه بندی** **نزدیکترین همسایه** **حاشیه بزرگ**( **LMNN** )  یک الگوریتم یادگیری ماشین آماری برای یادگیری متریک است. این یک شبه متریک طراحی شده برای طبقه بندی k-نزدیک ترین همسایه را می آموزد. این الگوریتم مبتنی بر برنامه نویسی نیمه معین است، یک زیر کلاس از بهینه سازی محدب است.

هدف یادگیری نظارت شده (به طور خاص طبقه بندی) یادگیری یک قانون تصمیم گیری است که می تواند نمونه های داده را در کلاس های از پیش تعریف شده طبقه بندی کند. قانون k-نزدیکترین همسایه یک مجموعه داده *آموزشی* از نمونه های برچسب گذاری شده را فرض می کند (یعنی کلاس ها شناخته شده اند). این مدل یک نمونه داده جدید را با کلاس به دست آمده از رای اکثریت k نزدیکترین نمونه های آموزشی (برچسب زده شده) طبقه بندی می کند. نزدیکی با یک متریک از پیش تعریف شده اندازه گیری می شود. نزدیکترین همسایه های حاشیه بزرگ الگوریتمی است که این معیار کلی (شبه) را به صورت نظارت شده می آموزد تا دقت طبقه قانون k-نزدیکترین همسایه را بهبود بخشد.

راه اندازی
----------

شهود اصلی پشت LMNN یادگیری یک شبه متری است که تحت آن تمام نمونه های داده در مجموعه آموزشی توسط حداقل k نمونه احاطه شده اند که برچسب کلاس یکسانی دارند. اگر این امر محقق شود، خطای باقیمانده (یک مورد خاص از اعتبارسنجی متقابل ) به حداقل می رسد. فرض کنید داده های آموزشی از یک مجموعه داده تشکیل شده باشد {\displaystyle D=\{({\vec {x}}\_{1},y\_{1}),\dots ,({\vec {x}}\_{n},y\_{n})\}\subset R^{d}\times C} ، که در آن مجموعه دسته بندی های کلاس ممکن، {\displaystyle C=\{1,\dots ,c\}} است.

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

{\displaystyle d({\vec {x}}\_{i},{\vec {x}}\_{j})=({\vec {x}}\_{i}-{\vec {x}}\_{j})^{\top }\mathbf {M} ({\vec {x}}\_{i}-{\vec {x}}\_{j})} .
برای {\displaystyle d(\cdot ,\cdot )} به خوبی تعریف شود، ماتریس {\mathbf {M}} باید نیمه قطعی مثبت باشد. معیار اقلیدسی یک مورد خاص است که در آن {\mathbf {M}} ماتریس هویت است. این تعمیم اغلب (به غلط[] ) به عنوان معیار ماهالانوبیس شناخته می شود .

شکل 1 اثر متریک تحت تغییرات {\mathbf {M}} را نشان می دهد. دو دایره مجموعه ای از نقاط با فاصله مساوی از مرکز را نشان می دهند {\displaystyle {\vec {x}}\_{i}}. در حالت اقلیدسی، این مجموعه یک دایره است، در حالی که تحت متریک اصلاح شده (ماهالانوبیس) به یک بیضی تبدیل می شود.

 شکل 1: تصویر شماتیک LMNN.
این الگوریتم بین دو نوع نقاط داده خاص تمایز قائل می شود: *همسایه های هدف* و *فریبکارها* .

### همسایه های هدف

همسایه های هدف قبل از یادگیری انتخاب می شوند. هر نمونه {\displaystyle {\vec {x}}\_{i}} دقیقا k همسایه هدف مختلف داخل D دارد، که همه دارای یک برچسب کلاس y\_i هستند. همسایه‌های هدف، نقاط داده‌ای هستند که *باید تحت متریک آموخته شده به* نزدیک‌ترین همسایه‌ تبدیل شوند. فرض کنید مجموعه ای از همسایه های هدف را برای یک نقطه داده مشخص کنیم {\displaystyle {\vec {x}}\_{i}} مانند {\displaystyle N\_{i}} .

### فریب دهنده ها

فریب دهنده یک نقطه داده {\displaystyle {\vec {x}}\_{i}} نقطه داده دیگری است {\displaystyle {\vec {x}}\_{j}} با برچسب کلاس متفاوت (به عنوان مثال {\displaystyle y\_{i}\neq y\_{j}} ) که یکی از نزدیکترین همسایگان {\displaystyle {\vec {x}}\_{i}} است. در طول یادگیری، الگوریتم سعی می‌کند تعداد تقلب‌کننده‌ها را برای تمام نمونه‌های داده در مجموعه آموزشی به حداقل برساند.

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

حاشیه بزرگ نزدیکترین همسایگان ماتریس {\mathbf {M}} را به کمک برنامه نویسی نیمه معین بهینه می کند. هدف دوگانه است: برای هر نقطه داده {\displaystyle {\vec {x}}\_{i}} *همسایه های هدف* باید *نزدیک* و *متقلبها* باید *دور* باشند. شکل 1 تاثیر چنین بهینه سازی را بر یک مثال گویا نشان می دهد. متریک آموخته شده باعث می شود بردار ورودی {\displaystyle {\vec {x}}\_{i}} توسط نمونه های آموزشی از همان کلاس احاطه شود. اگر یک نقطه تست بود، به درستی تحت قانون نزدیکترین همسایه با {\displaystyle k=3} طبقه بندی می شد.

اولین هدف بهینه سازی با کمینه کردن میانگین فاصله بین نمونه ها و همسایه های هدف آن ها به دست می آید.

{\displaystyle \sum \_{i,j\in N\_{i}}d({\vec {x}}\_{i},{\vec {x}}\_{j})} .
هدف دوم با جریمه کردن فاصله ها به فریبکاران {\displaystyle {\vec {x}}\_{l}} که کمتر از یک واحد دورتر از همسایه های هدف {\displaystyle {\vec {x}}\_{j}} هستند (و بنابراین آنها را از همسایگی محلی {\displaystyle {\vec {x}}\_{i}} خارج می کنند) به دست می آید. مقدار حاصل که باید به حداقل برسد را می توان به صورت زیر بیان کرد:

{\displaystyle \sum \_{i,j\in N\_{i},l,y\_{l}\neq y\_{i}}[d({\vec {x}}\_{i},{\vec {x}}\_{j})+1-d({\vec {x}}\_{i},{\vec {x}}\_{l})]\_{+}}
با عملکرد از دست دادن لولا {\textstyle [\cdot ]\_{+}=\max(\cdot ,0)} ، که تضمین می کند نزدیکی متقلب در خارج از حاشیه جریمه نمی شود. حاشیه دقیقاً یک واحد مقیاس ماتریس M را اصلاح می کند. هر انتخاب جایگزین {\displaystyle c>0} منجر به تغییر مقیاس M با ضریب {\displaystyle 1/c} می شود .

مسئله بهینه سازی نهایی به صورت زیر است:

{\displaystyle \min \_{\mathbf {M} }\sum \_{i,j\in N\_{i}}d({\vec {x}}\_{i},{\vec {x}}\_{j})+\lambda \sum \_{i,j,l}\xi \_{ijl}}
{\displaystyle \forall \_{i,j\in N\_{i},l,y\_{l}\neq y\_{i}}}
{\displaystyle d({\vec {x}}\_{i},{\vec {x}}\_{j})+1-d({\vec {x}}\_{i},{\vec {x}}\_{l})\leq \xi \_{ijl}}
{\displaystyle \xi \_{ijl}\geq 0}
{\displaystyle \mathbf {M} \succeq 0}
هایپرپارامتر {\textstyle \lambda >0} یک ثابت مثبت است (معمولاً از طریق اعتبارسنجی متقابل تنظیم می شود). در اینجا متغیرهای {\displaystyle \xi \_{ijl}} (در مجموع با دو نوع محدودیت) عبارت تابع هزینه را جایگزین می کنند. آن ها نقشی شبیه به متغیرهای سست برای جذب میزان نقض محدودیت های فریبنده ایفا می کنند. آخرین محدودیت تضمین می کند که m نیمه متناهی مثبت است. مسئله بهینه سازی نمونه ای از برنامه نویسی نیمه معین (SDP) است. اگرچه SDP ها از پیچیدگی محاسباتی بالایی رنج می برند، این نمونه SDP خاص به دلیل ویژگی های هندسی اساسی مسئله به طور بسیار کارآمدی می تواند حل شود. به طور خاص، اکثر محدودیت‌های فریبنده به طور طبیعی برآورده می‌شوند و نیازی به اعمال آنها در طول زمان اجرا نیست (یعنی مجموعه متغیرها {\displaystyle \xi \_{ijl}} تنک است). یک تکنیک حل‌کننده بسیار مناسب، روش مجموعه کاری است که مجموعه کوچکی از محدودیت‌ها را نگه می‌دارد که به طور فعال اعمال می‌شوند و محدودیت‌های باقی‌مانده (احتمالا ارضا شده) را تنها گاهی برای اطمینان از درستی نظارت می‌کند.

برنامه های افزودنی و حل کننده های کارآمد
----------------------------------------

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

کومال و همکارانش  این الگوریتم را گسترش دادند تا متغییرهای محلی را با تبدیل‌های چند جمله‌ای چند متغیره ترکیب کرده و منظم‌سازی را بهبود بخشند.

همچنین ببینید
-------------

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

منابع
-----

1. ↑  Weinberger, K. Q.; Blitzer J. C.; Saul L. K. (2006). "Distance Metric Learning for Large Margin Nearest Neighbor Classification". *Advances in Neural Information Processing Systems*. **18**: 1473–1480.
2. ↑  Weinberger, K. Q.; Saul L. K. (2008). "Fast solvers and efficient implementations for distance metric learning" (PDF). *Proceedings of International Conference on Machine Learning*: 1160–1167. Archived from the original (PDF) on 2011-07-24. Retrieved 2010-07-14.
3. ↑  Weinberger, K. Q.; Saul L. K. (2009). "Distance Metric Learning for Large Margin Classification" (PDF). *Journal of Machine Learning Research*. **10**: 207–244.
4. ↑  Kumar, M.P.; Torr P.H.S.; Zisserman A. (2007). "An invariant large margin nearest neighbour classifier". *IEEE 11th International Conference on Computer Vision (ICCV), 2007*: 1–8. doi:10.1109/ICCV.2007.4409041. ISBN 978-1-4244-1630-1.

لینک های خارجی
--------------

* پیاده سازی متلب
* ICML 2010 Tutorial on Metric Learning