參考資料:
1、基於肖凱大牛的部落格
2、r in a nutshell
3、data mining with r
############################ 翻譯開始 ############################
《r in a nutshell》
與回歸類似,線性方法對於分類計算時存在一些問題。下面介紹幾個ml的分類演算法
k近鄰
其中乙個最簡單的處理分類問題的技巧是k近鄰演算法。工作原理如下:
1、首先指定「訓練」資料集
2、對於乙個新的即將被**分類的觀測值,演算法試圖找到距離這個新的觀測值最近的k個觀測值,並**這個新的觀測值的類別。
3、新觀測值的類別由與其最近的k個觀測值類別佔比最多的類別決定,作為該新值的類別。
4、不像其它模型,k近鄰並沒有建立乙個模型物件。而是,你需要提供訓練資料以及測試資料作為引數。
《data mining with r》重點翻譯
k近鄰演算法屬於所謂的惰性學習演算法。這種演算法的不是為了通過訓練集訓練乙個模型。他們簡單的儲存這些資料,並且最主要的工作是在**方面。
給定乙個新的測試樣本,演算法將會通過查詢訓練資料集中相似的哪些樣本來進行**。使用訓練集中k個最近的樣本對給定測試樣本進行**。(分類/回歸)
對於分類:
**通常是通過投票(少數服從多數)來**,並且期望的k值是乙個奇數。然而,更精確的投票演算法是計算每乙個測試樣本與k個樣本之間的距離。
對於回歸:
將會求這些k個最近的樣本的目標變數的均值。
這類模型依賴與樣本之間的相似性。也就是樣本間的「不同」或距離。但是大部分會選擇歐式距離。
注意事項:
1、knn演算法對選擇的屬性單位和異常值非常敏感,這樣會扭曲相似性的概念。
2、變數應該被歸一化(標準化)處理,否則我們會低估變數的差異,並且這個值會低於均值
3、k值的選擇。比如seq(1:11, by = 2)。然後,大的k值需要避免是因為使用遠離測試樣本的k個訓練樣本是有風險的。
顯然,選擇k依賴於訓練樣本資料的密度。太過稀疏(sparse)的資料會招致(incur)更大的風險。
4、理想的模型估計可以通過實驗設計方法來處理。
############################ 翻譯結束 ############################
############################ 總結 ############################
如果我們已經擁有一些已知類別的資料,要對一些未知類別的資料進行分類。基本思路就是將資料看作是在多元空間中的點,
先計算未知點和周圍k個已知點之間的距離。然後根據周圍k個已知點的類別進行投票來決定未知點的類別。
例如設k為3,對某個未知點找出其周圍最近的三個已知點,如果這三個點有兩個屬於a類,乙個屬於b類,那麼根據多數原則,將未知點的類別**為a類。
1、可處理分類、回歸問題
2、優點:
演算法簡單,可處理非線性判別邊界,引數簡單(距離和k)
3、弱點:
計算量大、對異常值、不平衡資料敏感。
############################ **開始 ############################
kNN方法R實現
參考資料 1 基於肖凱大牛的部落格 2 r in a nutshell 3 data mining with r 翻譯開始 r in a nutshell 與回歸類似,線性方法對於分類計算時存在一些問題。下面介紹幾個ml的分類演算法 k近鄰 其中乙個最簡單的處理分類問題的技巧是k近鄰演算法。工作原理...
R語言實現KNN 演算法
knn是機器學習中最簡單的分類演算法之一 就是把每乙個測試樣本跟訓練樣本中的每乙個樣本求他們的歐式距離,然後選出最小的幾個,裡面哪乙個類多 這個測試樣本就屬於哪乙個類 用r語言自帶的iris 寫了一下 data iris length iris 1 idx sample 150,100 train ...
用R實現KNN推薦案例
整體思路 1,選擇使用者已給出評分的使用者假設有m位符合的使用者,獲取電影id 2,再找出對某電影進行評分的使用者,假設有m位符合的使用者,並獲取使用者id 3,利用以上獲取的三組id,構造訓練集data train和測試集data test。4,將相應的訓練集與測試集按順序放入knn 函式,即可 ...