Նայելով K-NN-ին իրական աշխարհի տեսանկյունից

Այս հոդվածը սկսելով Ջիմ Ռոնի այս հայտնի մեջբերումով: Ես ընտրեցի այս մեջբերումը, քանի որ կարծում եմ, որ դա պարզ միջոց է՝ բացատրելու k-NN-ը մեքենայական ուսուցման մասին քիչ կամ բացակայող գիտելիքներ ունեցող մարդկանց: k-ն կարող է նաև լինել 5 այս մեջբերումից, ավելի ուշ:

Երբ խոսքը վերաբերում է հարաբերություններին, մեզ վրա մեծ ազդեցություն են թողնում, ուզենք, թե չուզենք, մեզ ամենամոտ մարդիկ: Այն ազդում է մեր կայացրած որոշումների և մեր մտածելակերպի վրա: Իհարկե, յուրաքանչյուրն իր անձն է, բայց հետազոտությունները ցույց են տվել, որ մենք ավելի շատ ենք ազդում մեր միջավայրից, ավելի շատ, քան կարծում ենք:

Մեքենայի ուսուցման հեռանկար

Նայելով մեքենայական ուսուցման POV-ի այդ հայտնի մեջբերումին, մենք կարող ենք եզրակացնել, որ այն մարդիկ, ում մոտ (ամենամոտ) ենք կամ ամենաշատ ժամանակն են անցկացնում մեզ վրա: Մենք հակված ենք ներծծելու նրանց որոշ հատկանիշներ:

K-NN-ը նշանակում է K Nearest Neighbors: Սա պարզ մեքենայական ուսուցման ալգորիթմ է, որը հիմնված է Վերահսկվող ուսուցման տեխնիկայի վրա: Այն օգտագործում է հարևանությունը՝ ենթադրելու նոր տվյալների կետի և արդեն գոյություն ունեցող տվյալների կետերի նմանությունը: Այն հիմնականում օգտագործվում է Դասակարգման խնդիրներ լուծելու համար, քանի որ այն տվյալների կետերը բաժանում է դասերի կամ խմբերի:

Հեռավորությունը կարևոր գործոն է k-NN ալգորիթմն օգտագործելիս, հետևաբար, մենք պետք է հաշվարկենք որոշ մաթեմատիկական չափումներ: Այս մաթեմատիկական չափորոշիչներից մի քանիսը ներառում են, բայց չեն սահմանափակվում Էվկլիդեսյան հեռավորությունը, Մանհեթենի հեռավորությունը, Համինգի հեռավորությունը:

Էվկլիդեսյան հեռավորություն

Մաթեմատիկայի աշխարհում ցանկացած հարթության երկու կետերի միջև ամենակարճ հեռավորությունը կոչվում է Էվկլիդեսյան հեռավորություն: Այն երկու կետերի տարբերության քառակուսիների գումարի քառակուսի արմատն է:

Սա հեռավորության ամենատարածված միջոցն է: Այն օգնում է գտնել երկու իրական արժեք ունեցող տվյալների կետերի միջև հեռավորությունը (որոնք կարող են լինել ամբողջ թվերի կամ լողացողի տեսքով):

N.B: Նախքան Էվկլիդեսյան հեռավորությունը օգտագործելը, խորհուրդ է տրվում նորմալացնել կամ ստանդարտացնել տվյալները, մենք դա անում ենք այնպես, որ ավելի մեծ արժեքներով տվյալները չգերիշխեն արդյունքի վրա:

«d»-ը Էվկլիդեսյան հեռավորությունն է

«x» և «y» երկու կետերի կոորդինատներն են

Կոդի ներդրում

Կոդով Էվկլիդեսյան հեռավորությունն իրականացնելու տարբեր եղանակներ կան, եկեք տեսնենք մի քանիսը.

Քայլեր.
Տրվում է տվյալների նոր կետ;
1. Հաշվեք տվյալների այս նոր կետի հեռավորությունը տվյալների շտեմարանի բոլոր այլ տվյալների կետերից
2. Ստացեք ամենամոտը K միավոր
3. Ստացեք պիտակը ձայների մեծամասնությամբ

1. Կոդավորում KNN-ը զրոյից

Օգտագործելով numpy-ը՝ Էվկլիդեսյան հեռավորության չափիչը կիրառելու համար

def euclidean_distance(x1, x2):
    distance = np.sqrt(np.sum(x1-x2)**2)
    return distance

Հաշվելով ամենամոտ k

    def _predict(self, x):
        # calc the distances
        distances = [euclidean_distance(x, x_train) for x_train in self.X_train]

        # get the closest k
        k_indices = np.argsort(distances)[:self.k]
        k_nearest_labels = [self.y_train[i] for i in k_indices]

        # majority vote
        most_common = Counter(k_nearest_labels).most_common()
        return most_common[0][0]

2. KNN-ի կոդավորում՝ օգտագործելով sklearn

# import libraries
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=5, metric="euclidean")
knn.fit(X_train, y_train)

Ստուգեք կոդի ամբողջական ներդրումը ստորև բերված հղումով



KNN-ի ԿԻՐԱՌՈՒՄՆԵՐԸ ՄԵՔԵՆԱՅԻՆ ՈՒՍՈՒՑՈՒՄՈՒՄ

KNN-ը լայնորեն օգտագործվում է մեքենայական ուսուցման ծրագրերում: Օգտագործման ամենահայտնի դեպքերից մի քանիսը նշված են ստորև:

Առաջարկությունների շարժիչ

Առաջարկությունների շարժիչը տրամադրում է արտադրանքի առաջարկներ կամ ծառայություններ օգտվողին տվյալների հիման վրա: KNN-ն օգտագործվել է առաջարկությունների համակարգում՝ օգտատիրոջ տվյալների հիման վրա իրերը կամ ապրանքները նույնականացնելու համար: Այնուամենայնիվ, այն պիտանի չէ բարձր ծավալային տվյալների համար՝ հաշվի առնելով: Այնուամենայնիվ, դա հիանալի ընտրություն է բազային մոտեցման համար:

օրինակ՝ Գրքերի առաջարկությունների համակարգ

Նախշերի ճանաչում

KNN-ն օգտագործվում է տեքստի կամ պատկերների օրինաչափությունները բացահայտելու համար: Օրինակ, այն օգտագործվում է ձեռագիր թվանշանների ճանաչումը նույնականացնելու, վարկային քարտի օգտագործման և պատկերի ճանաչման օրինաչափությունները հայտնաբերելու համար:

Հայեցակարգի որոնում

Հայեցակարգի որոնումը ներառում է իմաստային առումով նմանատիպ փաստաթղթերի որոնում և նմանատիպ թեմաներ պարունակող փաստաթղթերի դասակարգում: Ժամանակակից աշխարհում տվյալները ստեղծվում են էքսպոնենցիալ, և դրանք ստեղծում են տոննա փաստաթղթեր: Այդ փաստաթղթերից յուրաքանչյուրը պարունակում է հիմնական հասկացություններ: Ենթադրենք, որ մենք օգտագործում ենք այս հիմնական հասկացությունները փաստաթղթերի հավաքածուից հանելու համար, և այդ փաստաթղթերը պարունակում են հսկայական քանակությամբ տվյալներ: Տվյալներից հիմնական հասկացությունները գտնելու համար մենք օգտագործում ենք KNN ալգորիթմը:

Տվյալների հաշվառումը բացակայում է

Տվյալների հավաքածուները հաճախ ունենում են բացակայող արժեքներ, ինչը խնդիր է ստեղծում մեքենայական ուսուցման մոդելների կամ վերլուծության համար: Մոդելավորում կամ վերլուծություն անելուց առաջ մենք պետք է փոխարինենք բաց թողնված արժեքները: KNN-ը արդյունավետ ալգորիթմ է՝ բացակայող արժեքները վերագրելու համար մի գործընթացում, որը կոչվում է «մոտակա հարեւանի իմպուտացիա»:

Բանկային գործ

KNN-ը լայնորեն կիրառվում է բանկային և ֆինանսական օգտագործման դեպքերում: Բանկային ոլորտում դա օգնում է կանխատեսել՝ հաճախորդին վարկ տալը ռիսկային է, թե անվտանգ։ Ֆինանսական ինստիտուտներում դա օգնում է կանխատեսել հաճախորդների վարկային վարկանիշը։

Հետևեք ինձ հետևյալ հասցեով՝

LinkedIn՝ Դևիս Օնյեոգուզորո

GitHub: davisonyeas

Կայք՝ http://davisonye.pythonanywhere.com/

Twitter՝ @davisonyeas