k-NN
k-NNk-NN یک الگوریتم از دسته یادگیری ماشین است. این الگوریتم یادگیری از داده برای ساخت یک rule، grouping یا prediction استفاده میکند و معمولاً بر distance، objective یا model ساده تکیه دارد.
اول این مفهوم را در ذهن نگه دار
k-NN یک الگوریتم از دسته یادگیری ماشین است. این الگوریتم یادگیری از داده برای ساخت یک rule، grouping یا prediction استفاده میکند و معمولاً بر distance، objective یا model ساده تکیه دارد.
چطور کار میکند؟ ساده و مرحلهای
برای فهم k-NN ابتدا invariant و stateای را پیدا کن که در هر مرحله تغییر میکند.
پیچیدگی معمول این موضوع query O(n·d) naive است؛ آن را از روی loop، recursion، عملیات ساختمان داده و constraintهای ورودی تحلیل کن، نه فقط از حفظ.
الگوریتم را به شکل تصمیمهای پشت سر هم بخوان
featureها و scaling را مشخص کن.
update/search مربوط به مدل را اجرا کن.
با metric مناسب ارزیابی کن و training data را از evaluation جدا نگه دار.
یک ورودی خیلی کوچک را دستی اجرا کن و بعد از هر عملیات مهم state را بنویس. برای k-NN هدف این است که invariant را ببینی، نه اینکه کد را حفظ کنی.
query O(n·d) naive
این Complexity را حفظی نگو. اول مشخص کن مربوط به کدام عملیات یا بعد ورودی است؛ بعد هزینه را از روی loopها، عمق recursion، عملیات ساختمان داده و فرضهای preprocessing نتیجه بگیر.
موارد مناسب
- وقتی assumption مدل با داده و هدف ارزیابی هماهنگ است استفاده کن.
کجا معمولاً اشتباه میکنیم؟
- نادیده گرفتن feature scaling.
- ارزیابی فقط روی training data.
- پیادهسازی آموزشی را production-ready فرض نکن.
مدل یک پاسخ حرفهای
برای توضیح حرفهای k-NN در مصاحبه، مسئلهای که حل میکند، invariant، state یا ساختمان داده اصلی، پیچیدگی query O(n·d) naive و شرایطی که باعث میشود روش دیگری انتخاب کنی را بگو.
k-NN چه مسئلهای را حل میکند؟
k-NN یک الگوریتم از دسته یادگیری ماشین است. این الگوریتم یادگیری از داده برای ساخت یک rule، grouping یا prediction استفاده میکند و معمولاً بر distance، objective یا model ساده تکیه دارد.
درباره Complexity چه چیزی باید بگویم؟
پیچیدگی معمول اینجا query O(n·d) naive است، اما جواب کامل باید این هزینه را به representation، constraint ورودی و عملیات غالب وصل کند.
رایجترین اشتباه چیست؟
نادیده گرفتن feature scaling.