الگوریتم کی-نزدیکترین همسایه
در بازشناخت الگو کی-نزدیکترین همسایه (انگلیسی: k-nearest neighbors algorithm) یک متد آمار ناپارامتری است که برای طبقهبندی آماری و رگرسیون استفاده می شود. در هر دو حالت کی شامل نزدیک ترین مثال آموزشی در فضای داده ای می باشد و خروجی آن بسته به نوع مورد استفاده در طبقه بندی و رگرسیون متغیر است. در حالت طبقه بندی با توجه به مقدار مشخص شده برای کی، به محاسبه فاصله نقطه ای که میخواهیم برچسب آن را مشخص کنیم با نزدیک ترین نقاط میپردازد و با توجه به تعداد رای حداکثری این نقاط همسایه، در رابطه با برچسب نقطه مورد نظر تصمیم گیری میکنیم. برای محاسبه این فاصله میتوان از روش های مختلفی استفاده کرد که یکی از مطرح ترین این روش ها، فاصله اقلیدسی است. در حالت رگرسیون نیز میانگین مقادیر بدست آمده از کی خروجی آن می باشد. از آنجا که محاسبات این الگوریتم بر اساس فاصله است نرمالسازی دادهها میتواند به بهبود عملکرد آن کمک کند.
تنظیمات آماری
فرض کنید زوج مرتبهای (Xn,Yn),... ,(X2,Y2),(X1,Y1) از {۱٬۲} × R مقدار میگیرد. (Y نشان دهنده کلاس X است). در نتیجه خواهیم داشت: X|Y = r ~ Pr برای r = ۱٬۲ که Pr توزیع احتمال است.
با داشتن تعدادی اندازه (norm) ‖. ‖ در Rd و نقطه x، زوج مرتبهای (X(n),Y(n)) ,... , (X(2),Y(2)),(X(1),Y(1) را که ترتیب دیگری از دادههای اولیه هستند با شرط ǁX(n) ≤ xǁ ,... , ǁX(1) ≤ xǁ تعریف میکنیم.
الگوریتم
دادههای اولیه، بردارهایی در یک فضای چند بعدی هستند که هر کدام شامل برچسبی به نام دسته میباشند.
فاز یادگیری (training phase) الگوریتم، شامل ذخیرهسازی بردارهای ویژگی و برچسب دسته نمونههای اولیه است.
در فاز طبقهبندی، k یک ثابت توسط کاربر تعریف میشود و بردار بدون برچسب (نقطه تست) از دسته ای است که بیشترین تعداد را در k نزدیکترین همسایه آن نقطه داشته باشد. به این ترتیب برچسب نقطه تست نیز مشخص میشود.
معیار فاصله برای متغیرهای پیوسته معمولاً فاصله اقلیدسی است.
برای متغیرهای گسسته، مانند دستهبندی متون، میتوان از یک معیار دیگر مانند فاصله همینگ استفاده کرد.
اگر NN-
یک اشکال طبقهبندی پایه «رای اکثریت» (majority voting) زمانی اتفاق میافتد که توزیع دسته درهم شکسته شود. به این معنی که تعداد زیادی از نمونههای یک دسته در میان نزدیکترین همسایه عضو جدید بودهاست. یکی از راههای غلبه بر این مشکل، وزن دادن به طبقهبندی بر مبنای فاصله هر یک از نمونههای اولیه، از عضو جدید است. دسته (یا مقدار در مسائل رگرسیون) هرکدام از k نزدیکترین نقاط در وزن خود که متناسب با معکوس فاصله آنها از نقطه تست است، ضرب میشود.
یکی دیگر از راههای غلبه بر این مشکل، انتزاع در نمایش دادهها است. برای مثال، در یک نقشههای خودسازماندهنده (SOM)، هر گره، صرف نظر از تراکم آنها در دادههای اولیه اصلی، یک نماینده (مرکز) از نقاط مشابه است. سپس NN-
مراحل الگوریتم knn شامل موارد زیر خواهد بود:
- دادههای را بارگیری کنید.
- K به عنوان تعداد نزدیکترین همسایگان انتخاب کنید.
- برای هر یک از دادههای اولیه:
- فاصله بین داده مورد سؤال و هر یک دادههای اولیه را محاسبه کنید.
- فاصله و اندبس نمونه را به یک مجموعه اضافه کنید.
- مجموعه را بر اساس فاصله از کوچک به بزرگ مرتب کنید.
- نقاط K عضو اول مجموعه مرتب شده را انتخاب کنید.
- بسته به حالت یا حالت طبقهبندی، خروجی را اعلام کنید.
به این ترتیب، کد پایتون محاسبه فاصله اقلیدسی و NN-
def EuclideanDistance(x1, x2, length):
distance = 0
for x in range(length):
distance += np.square(x1[x] - x2[x])
return np.sqrt(distance)
کد زیر مربوط به الگوریتم knn گفته شده در حالت دستهبندی است. دادههای اولیه، trainingSet و داده مورد سؤال testInstance نامیده شدهاست.
def knn(trainingSet, testInstance, k):
distances = {}
sort = {}
length = testInstance.shape[1]
for x in range(len(trainingSet)):
dist = EuclideanDistance(testInstance, trainingSet.iloc[x], length)
distances[x] = dist[0]
sortdist = sorted(distances.items(), key=operator.itemgetter(1))
neighbors = []
for x in range(k):
neighbors.append(sortdist[x][0])
Votes = {} #to get most frequent class of rows
for x in range(len(neighbors)):
response = trainingSet.iloc[neighbors[x]][-1]
if response in Votes:
Votes[response] += 1
else:
Votes[response] = 1
sortvotes = sorted(Votes.items(), key=operator.itemgetter(1), reverse=True)
return(sortvotes[0][0], neighbors)
انتخاب پارامتر
بهترین انتخاب
دقت الگوریتم NN-
در دستهبندیهای دو کلاس، بهتر است که k یک عدد فرد انتخاب شود؛ زیرا این امر از گره خوردن آرا جلوگیری میکند.
نزدیکترین همسایه
شهودیترین نوع نزدیکترین همسایه در حالت طبقهبندی، تنها نزدیکترین همسایه است که یک نقطه را به کلاس نزدیکترین همسایه خوداختصاص میدهد؛ به این معنی که (1)Cn(x) = Y.
هر چه تعداد دادههای اولیه به بینهایت نزدیک میشود، نزدیکترین همسایه در حالت طبقهبندی تضمین میکند که میزان خطا بیشتر از دو برابر خطای بایاس (حداقل خطا قابل دستیابی با توجه به توزیع دادهها) نخواهد بود.
خصوصیات
kNN یک مورد خاص از پهنای باند متغیر است.
نسخهٔ ساده این الگوریتم از محاسبه فاصلهٔ نمونه مورد سؤال با تمامی نمونههای اولیه، بدست میآید؛ اما برای مجموعه اولیههای بزرگ، این محاسبات بسیار سنگین خواهد بود. با استفاده از الگوریتم تقریبی جستجوی نزدیکترین همسایه، میتوان از شدت این محاسبات، حتی برای مجموعه اولیههای بزرگ، کاست. در طول سالها، بسیاری از الگوریتمهای جستجوی نزدیکترین همسایه پیشنهاد شدهاند که به دنبال کاهش تعداد محاسبههای انجام شده بودهاند.
NN-
برای طبقهبندی NN-
R ≤ RkNN ≤ R (2 - ⁄ M-1 )
R نرخ خطای Bayes (حداقل نرخ خطا ممکن)، RkNN نرخ خطای NN-
یادگیری متریک
عملکرد
نزدیکترین همسایه در حالت رگرسیون
در رگرسیون، الگوریتم NN-
- محاسبه فاصله اقلیدسی یا فاصله Mahalanobis از نمونه مسئله داده شده به نمونههای علامت زده شده.
- مرتبسازی مثالهای علامت زده شده با افزایش فاصله.
- بر اساس RMSD بهینهترین درنزدیکترین همسایه را پیدا کنید. این کار با استفاده از اعتبارسنجی متقابل انجام میشود.
- محاسبه میانگین معکوس فاصله نزدیکترین همسایه.
مزایا و معایب
مزایا:
- هیچ پیش فرضی در مورد دادهها وجود ندارد - مثال برای دادههای غیر خطی
- الگوریتم ساده
- دقت نسبتاً بالا
- مقایسه مدلهای یادگیری تحت نظارت بهتر
- چند منظوره - برای طبقهبندی و رگرسیون
مضرات:
- محاسبه گران
- نیاز به حافظه بالا - چرا که الگوریتم، تمام دادههای قبلی را ذخیره میکند.
- ذخیره تقریباً یا همه دادههای اولیه
- مرحله پیشبینی ممکن است کند باشد (با N بزرگ)
- حساس به ویژگیهای نامناسب و مقیاس داده
منابع
- ↑ Piryonesi, S. Madeh; El-Diraby, Tamer E. (2020-06). "Role of Data Analytics in Infrastructure Asset Management: Overcoming Data Size and Quality Problems". Journal of Transportation Engineering, Part B: Pavements. 146 (2): 04020022. doi:10.1061/jpeodx.0000175. ISSN 2573-5438.
{{}}
: Check date values in:|date=
(help) - ↑ Hastie, Trevor. (2001). The elements of statistical learning : data mining, inference, and prediction : with 200 full-color illustrations. Tibshirani, Robert., Friedman, J. H. (Jerome H.). New York: Springer. ISBN 0-387-95284-5. OCLC 46809224.
- ↑ D. Coomans; D.L. Massart: نزدیکترین همسایه با استفاده از قوانین رایگیری جایگزین
- ↑ The KNN Algorithm
- ↑ Everitt, B. S. , Landau, S. , Leese, M. and Stahl, D
- ↑ D. G. Terrell; D. W. Scott (1992). "Variable kernel density estimation"
- ↑ Mills, Peter. "Efficient statistical classification of satellite measurements"
- ↑ Cover TM .Hart PE , Nearest neighbor pattern classification
- ↑ "Toussaint GT (April 2005). "Geometric proximity graphs for improving nearest neighbor methods in instance-based learning and data mining
- ↑ : A Quick Introduction to K-Nearest Neighbors Algorithm
مشارکتکنندگان ویکیپدیا. «K-nearest_neighbors_algorithm». در دانشنامهٔ ویکیپدیای انگلیسی، بازبینیشده در ۱۵ آوریل ۲۰۱۹.