knn和k-means的區(qū)別:1、【k-means】算法典型的基于距離的聚類算法,采用距離作為相似性的評價指標(biāo),即認為兩個對象的距離越近,其相似度就越大;2、knn算法沒有明顯的前期訓(xùn)練過程,程序開始運行時,把數(shù)據(jù)集加載到內(nèi)存后開始分類。
knn和k-means的區(qū)別:
1. k-means聚類算法過程與原理
k-means算法(k-均值聚類算法)是一種基本的已知聚類類別數(shù)的劃分算法。它是很典型的基于距離的聚類算法,采用距離作為相似性的評價指標(biāo),即認為兩個對象的距離越近,其相似度就越大。它是使用歐氏距離度量的(簡單理解就是兩點間直線距離,歐氏距離只是將這個距離定義更加規(guī)范化,擴展到N維而已)。它可以處理大數(shù)據(jù)集,且高效。聚類結(jié)果是劃分為k類的k個數(shù)據(jù)集。根據(jù)聚類結(jié)果的表達方式又可以分為硬 k-means(H CM)算法、模糊k-means算法(F CM)和概率k-means算法(P CM)。
1.1.基本思想
它是基于給定的聚類目標(biāo)函數(shù),算法采用迭代更新的方法,每一次迭代過程都是向目標(biāo)函數(shù)減小的方向進行,最終聚類結(jié)果使得目標(biāo)函數(shù)取得極小值,達到較好的分類效果
1.2 原理
原始的k-means算法首先隨機選取k個點作為初始聚類中心,然后計算各個數(shù)據(jù)對 象到各聚類中心的距離,把數(shù)據(jù)對象歸到離它最近的那個聚類中心所在的類; 調(diào)整后的新類計算新的聚類中心,如果相鄰兩次的聚類中心沒有任何變化,說明 數(shù)據(jù)對象調(diào)整結(jié)束,聚類準則函數(shù)f已經(jīng)收斂。在每次迭 代中都要考察每個樣本的分類是否正確,若不正確,就要調(diào)整。在全部數(shù)據(jù)調(diào)整 完后,再修改聚類中心,進入下一次迭代。如果在一次迭代算法中,所有的數(shù)據(jù) 對象被正確分類,則不會有調(diào)整,聚類中心也不會有任何變化,這標(biāo)志著f已 經(jīng)收斂,算法結(jié)束。
1.3 算法流程圖
1.4 算法初始點怎么選擇?
1) 選擇批次距離盡可能遠的K個點
首先隨機選擇一個點作為第一個初始類簇中心點,然后選擇距離該點最遠的那個點作為第二個初始類簇中心點,然后再選擇距離前兩個點的最近距離最大的點作為第三個初始類簇的中心點,以此類推,直至選出K個初始類簇中心點。
2) 選用層次聚類或者Canopy算法進行初始聚類,然后利用這些類簇的中心點作為K-Means算法初始類簇中心點。
1.5算法中的k如何選???
只要我們假設(shè)的類簇的數(shù)目等于或者高于真實的類簇的數(shù)目時,該指標(biāo)上升會很緩慢,而一旦試圖得到少于真實數(shù)目的類簇時,該指標(biāo)會急劇上升。類簇指標(biāo) 作為一個重要的參考指標(biāo)。
類簇的直徑是指類簇內(nèi)任意兩點之間的最大距離。
類簇的半徑是指類簇內(nèi)所有點到類簇中心距離的最大值。
1.6 優(yōu)缺點以及如何改進?
使用簡單,是因為它使用了一個隨機的元素,所以它不能保證找到最佳的類。 無需要一個合理初始化要聚類的個數(shù):即要初始化K 。
2. K-最近鄰分類算法(K N N)
2.1 問題引入
K N N的思想: 從上圖中我們可以看到,圖中的數(shù)據(jù)集是良好的數(shù)據(jù),即都打好了label,一類是藍色的正方形,一類是紅色的三角形,那個綠色的圓形是我們待分類的數(shù)據(jù)。 如果K=3,那么離綠色點最近的有2個紅色三角形和1個藍色的正方形,這3個點投票,于是綠色的這個待分類點屬于紅色的三角形 如果K=5,那么離綠色點最近的有2個紅色三角形和3個藍色的正方形,這5個點投票,于是綠色的這個待分類點屬于藍色的正方形 即如果一個樣本在特征空間中的k個最相鄰的樣本中,大多數(shù)屬于某一個類別,則該樣本也屬于這個類別。我們可以看到,K N N本質(zhì)是基于一種數(shù)據(jù)統(tǒng)計的方法!其實很多機器學(xué)習(xí)算法也是基于數(shù)據(jù)統(tǒng)計的。
2.2 K N N算法
介紹
K N N即K-Nearest Neighbor,是一種memory-based learning,也叫instance-based learning,屬于lazy learning。即它沒有明顯的前期訓(xùn)練過程,而是程序開始運行時,把數(shù)據(jù)集加載到內(nèi)存后,不需要進行訓(xùn)練,就可以開始分類了。 K N N也是一種監(jiān)督學(xué)習(xí)算法,通過計算新數(shù)據(jù)與訓(xùn)練數(shù)據(jù)特征值之間的距離,然后選取K(K>=1)個距離最近的鄰居進行分類判(投票法)或者回歸。若K=1,新數(shù)據(jù)被簡單分配給其近鄰的類。
步驟
1)計算測試數(shù)據(jù)與各個訓(xùn)練數(shù)據(jù)之間的距離;可以使用歐式距離的公式來進行計算。
2)按照距離的遞增關(guān)系進行排序;
3)選取距離最小的K個點(k值是由自己來確定的)
4)確定前K個點所在類別的出現(xiàn)頻率;
5)返回前K個點中出現(xiàn)頻率最高的類別作為測試數(shù)據(jù)的預(yù)測分類。
特點
非參數(shù)統(tǒng)計方法:不需要引入?yún)?shù) K的選擇: K = 1時,將待分類樣本劃入與其最接近的樣本的類。 K = |X|時,僅根據(jù)訓(xùn)練樣本進行頻率統(tǒng)計,將待分類樣本劃入最多的類。 K需要合理選擇,太小容易受干擾,太大增加計算復(fù)雜性。 算法的復(fù)雜度:維度災(zāi)難,當(dāng)維數(shù)增加時,所需的訓(xùn)練樣本數(shù)急劇增加,一般采用降維處理。
2.3 算法的優(yōu)缺點
優(yōu)點:簡單、有效
缺點:計算量較大。輸出的可解釋性不強。需要存儲全部的訓(xùn)練樣本。
3. K N N與k-means的區(qū)別
相關(guān)免費學(xué)習(xí)推薦:php編程(視頻)