這段時間在考慮下一步的學(xué)習(xí)計劃,在地鐵上完成了 Andrew Ng 的機(jī)器學(xué)習(xí)的課程难述,感覺非常棒萤晴,從未知到知曉的過程總是帶給我快樂。只不過觀看視頻只能對可能需要的知識有一個大概的框架胁后,還需要在項目中應(yīng)用才能真正的理解店读。
在這里記錄一些常用的機(jī)器學(xué)習(xí)的算法知識,算是做一個初步的總結(jié)攀芯,以備自己隨時查看屯断,后續(xù)還是要在應(yīng)用中繼續(xù)深入學(xué)習(xí)和補充完善。這段時間以來一個很深的體會是在算法學(xué)習(xí)中,一個很重要的原則是:先建立直覺殖演,再勾勒細(xì)節(jié)氧秘。在此基礎(chǔ)上,相應(yīng)的數(shù)學(xué)和代碼就都是水到渠成的事了趴久。
KNN, K Nearest Neighbors
K 鄰近算法是基于實例的學(xué)習(xí)方法 Instance based learning丸相,其核心觀點在于我們不再采用對于已有數(shù)據(jù)的曲線擬合來完成新的樣本的分類或回歸,而是基于與新樣本最近的某 K 個樣本的分類中出現(xiàn)最多的分類來對新樣本進(jìn)行分類彼棍,或者在回歸問題中灭忠,取最近的 K 個標(biāo)簽值的均值作為預(yù)測值。由于算法只有在執(zhí)行預(yù)測時才進(jìn)行學(xué)習(xí)座硕,因此也被稱為 Lazy Learning弛作,與此相對應(yīng)的預(yù)先學(xué)習(xí)的算法稱為 Eager Learning。
在 KNN 中华匾,由于預(yù)先假設(shè)不同樣本點之間具有一定的相似性 Similarity defined by locality缆蝉,并且通常在進(jìn)行距離計算時一般會假定不同特征的差異再決定分類時具有相同的重要性,例如對于兩個二維樣本 x, y 的曼哈頓距離進(jìn)行計算時瘦真,由于其可以表示為 |x1 - y1| + |x2 - y2|,此時我們假定樣本的不同特征之間可以簡單的線性相加黍瞧。而如果真實的函數(shù)關(guān)系為 z = x12 + x2诸尽,則選擇曼哈頓距離作為評價標(biāo)準(zhǔn)時 KNN 無法準(zhǔn)確的給出預(yù)測值,算法準(zhǔn)確度會隨著特征維數(shù)的增加而愈加下降印颤,盡管采用加權(quán)計算一定程度上可以減少 Curse of Dimensionality 的影響您机,算法也比較容易受到異常值的影響。
Curse of Dimensionality
As the number of features or dimensions grows, the amount of data we need to generalize accurately grows exponentially.
KNN 算法的核心原理非常簡單年局,在實際使用中實際輸出結(jié)果根據(jù)算法執(zhí)行中距離的判斷標(biāo)準(zhǔn)(歐式距離际看、曼哈頓距離等)、對于距離相同時的處理方式矢否、K 的選擇等不同的細(xì)節(jié)會有所不同仲闽。
- To be added: locally weighted regression