內(nèi)容參考:
Kmeans算法與KNN算法的區(qū)別
kNN與kMeans聚類算法的區(qū)別
對(duì)比項(xiàng) | KNN | K-Means |
---|---|---|
目的 | 為了確定一個(gè)點(diǎn)的分類 | 為了將一系列點(diǎn)集分成K類 |
分類算法 | 聚類算法 | |
監(jiān)督學(xué)習(xí)(有學(xué)習(xí)語料) | 無監(jiān)督學(xué)習(xí)(沒有學(xué)習(xí)語料) | |
沒有明顯的前期訓(xùn)練過程可柿,屬于memory-based learning | 有明顯的前期訓(xùn)練過程 | |
K的含義 | “k”是用來計(jì)算的相鄰數(shù)據(jù)數(shù)筐喳。來了一個(gè)樣本x,要給它分類敢会,即求出它的y咬摇,就從數(shù)據(jù)集中辙诞,在x附近找離它最近的K個(gè)數(shù)據(jù)點(diǎn),這K個(gè)數(shù)據(jù)點(diǎn)量淌,類別c占的個(gè)數(shù)最多骗村,就把x的label設(shè)為c | “k”是類的數(shù)目。K是人工固定好的數(shù)字呀枢,假設(shè)數(shù)據(jù)集合可以分為K個(gè)簇胚股,由于是依靠人工定好,需要一點(diǎn)先驗(yàn)知識(shí) |
K值確定后每次結(jié)果固定 | K值確定后每次結(jié)果可能不同裙秋,從 n個(gè)數(shù)據(jù)對(duì)象任意選擇 k 個(gè)對(duì)象作為初始聚類中心琅拌,隨機(jī)性對(duì)結(jié)果影響較大 | |
時(shí)間復(fù)雜度 | O(n) | O(nkt),t為迭代次數(shù) |
常用距離 | 曼哈頓距離摘刑、歐式距離和閔可夫斯基距離 | 歐幾里得距離 |
相似點(diǎn) | 都包含這樣的過程:給定一個(gè)點(diǎn)进宝,在數(shù)據(jù)集中找離它最近的點(diǎn)。即二者都用到了NN(Nears Neighbor)算法枷恕,一般用KD樹來實(shí)現(xiàn)NN即彪。 |
KNN-近鄰算法-分類算法
思想:在訓(xùn)練集中數(shù)據(jù)和標(biāo)簽已知的情況下,輸入測(cè)試數(shù)據(jù),將測(cè)試數(shù)據(jù)的特征與訓(xùn)練集中對(duì)應(yīng)的特征進(jìn)行相互比較隶校,找到訓(xùn)練集中與之最為相似的前K個(gè)數(shù)據(jù)漏益,則該測(cè)試數(shù)據(jù)對(duì)應(yīng)的類別就是K個(gè)數(shù)據(jù)中出現(xiàn)次數(shù)最多的那個(gè)分類。
算法的描述為:
1)計(jì)算測(cè)試數(shù)據(jù)與各個(gè)訓(xùn)練數(shù)據(jù)之間的距離(一般使用歐氏距離或曼哈頓距離)深胳;
image
2)按照距離的遞增關(guān)系進(jìn)行排序绰疤;
3)選取距離最小的K個(gè)點(diǎn);
4)確定前K個(gè)點(diǎn)所在類別的出現(xiàn)頻率舞终;
5)返回前K個(gè)點(diǎn)中出現(xiàn)頻率最高的類別作為測(cè)試數(shù)據(jù)的預(yù)測(cè)分類轻庆。
K-Means聚類算法
把n個(gè)對(duì)象根據(jù)他們的屬性分為k個(gè)聚類以便使得所獲得的聚類滿足:同一聚類中的對(duì)象相似度較高;而不同聚類中的對(duì)象相似度較小
Kmeans算法的缺陷:
- 聚類中心的個(gè)數(shù)K 需要事先給定敛劝,但在實(shí)際中這個(gè) K 值的選定是非常難以估計(jì)的余爆,很多時(shí)候,事先并不知道給定的數(shù)據(jù)集應(yīng)該分成多少個(gè)類別才最合適
- Kmeans需要人為地確定初始聚類中心夸盟,不同的初始聚類中心可能導(dǎo)致完全不同的聚類結(jié)果蛾方。(可以使用Kmeans++算法來解決)
針對(duì)上述第2個(gè)缺陷,可以使用Kmeans++算法來解決