KNN |
K-Means |
目的是為了確定一個點的分類 |
目的是為了將一系列點集分成k類 |
KNN是分類算法 |
K-Means是聚類算法 |
監督學習,分類目標事先已知 |
非監督學習,將相似數據歸到一起從而得到分類,沒有外部分類 |
訓練數據集有label,已經是完全正確的數據 |
訓練數據集無label,是雜亂無章的,經過聚類后才變得有點順序,先無序,后有序 |
沒有明顯的前期訓練過程,屬於memory-based learning |
有明顯的前期訓練過程 |
K的含義:“k”是用來計算的相鄰數據數。來了一個樣本x,要給它分類,即求出它的y,就從數據集中,在x附近找離它最近的K個數據點,這K個數據點,類別c占的個數最多,就把x的label設為c |
K的含義:“k”是類的數目。K是人工固定好的數字,假設數據集合可以分為K個簇,由於是依靠人工定好,需要一點先驗知識 |
K值確定后每次結果固定 |
K值確定后每次結果可能不同,從 n個數據對象任意選擇 k 個對象作為初始聚類中心,隨機性對結果影響較大 |
時間復雜度:O(n) |
時間復雜度:O(n*k*t),t為迭代次數 |
相似點:都包含這樣的過程,給定一個點,在數據集中找離它最近的點。即二者都用到了NN(Nears Neighbor)算法,一般用KD樹來實現NN。 |
參考引用:
- http://www.tuicool.com/articles/qamYZv
- http://www.tuicool.com/articles/yUBBbyR
- http://stats.stackexchange.com/questions/56500/what-are-the-main-differences-between-k-means-and-k-nearest-neighbours
- k-Means:http://blog.pluskid.org/?p=17