knn演算法
knn(k-nearest neighbor,簡稱knn)演算法,是一種常用的監督學習方法,其工作機制為:給定測試樣本,基於某種距離度量找出訓練集中與其最靠近的k個訓練樣本。然後基於這k個「鄰居」的資訊來進行**,通常可選擇這k個樣本**現最多的類別標記作為測試結果;在回歸任務中,可使用「平均法」,即將這k個樣本的輸出類別標記的平均值作為**結果;還可基於距離遠近進行加權平均或加權投票,距離越近的樣本權重越大。
也就是去找你要分類的這個資料的鄰居,物以類聚人以群分,knn資料分類的道理也是如此。要想知道該資料屬於哪乙個類別,只需要去調查哪些資料是離該資料最近的資料,知道了這幾「鄰居」的類別,就可以**出該資料的類別。
給定乙個待分類樣本x,該演算法首先找出與x最接近或最相似的k個訓練樣本,然後根據這k個訓練樣本x的類別標籤確定樣本的類別,在度量待分類樣本與訓練集樣本的距離或相似性時,一般採用歐氏距離。這種方法的缺點就是在應對複雜樣本(比如樣本分佈不規則)時,分類準確率會大大降低。歐式距離ρ
ρρ的定義如下:
二維空間的歐氏距離,即兩點之間的歐氏距離,點(x1
,y1)
(x1,y1)
(x1,y1
)和點(x2
,y2)
(x2,y2)
(x2,y2
):ρ =√
(y2−
y1)+
(x2−
x1).
ρ = √(y2-y1)+(x2-x1).
ρ=√(y2
−y1)
+(x2
−x1)
.三維空間的歐氏距離:
ρ =√
(y2−
y1)+
(x2−
x1)+
(z2−
z1).
ρ = √(y2-y1)+(x2-x1)+(z2-z1).
ρ=√(y2
−y1)
+(x2
−x1)
+(z2
−z1)
.kernel knn演算法
kernel knn(核k近鄰)演算法,使用核距離代替歐氏距離作為待分類樣本與訓練集樣本的距離度量,實驗表明該演算法的分類效果優於傳統的k近鄰演算法。但該演算法的主要缺點是核函式的引數p難以確定,主要是依據經驗確定。
多項式核函式kp(
x,y)
kp(x,y)
kp(x,y
)的定義如下:
k (x
,xi)
=(x▪
xi+1
)d,d
=1,2
,...
,n
k(x,xi)=(x▪xi+1)^d, d=1,2,...,n
k(x,xi
)=(x
▪xi+
1)d,
d=1,
2,..
.,n最常用的多項式核函式kp(
x,y)
kp(x,y)
kp(x,y
)的定義如下:
k p(
x,y)
=(1+
y>)p .kp(x,y) = (1+)^p. kp(x,y )=(1 +y>)p .核函式
在實際資料上經常遇到線性不可分的情況,而解決方法是將特徵對映到更高維的空間去,核函式雖然也是將特徵進行從低維到高維的轉化,但是是在低維上進行計算,而實際的效果表現在高維上,這就解決了維度災難的問題。
核函式的選擇要求滿足mercer定理,即核函式在樣本空間內的任意格拉姆矩陣(gram matrix)為半正定矩陣(semi-positive definite)。
Kmeans Kmeans 和KNN演算法比較
k means介紹 k means演算法是聚類分析中使用最廣泛的演算法之一。它把n個物件根據他們的屬性分為k個聚類以便使得所獲得的聚類滿足 同一聚類中的物件相似度較高 而不同聚類中的物件相似度較小。其聚類過程可以用下圖表示 如圖所示,資料樣本用圓點表示,每個簇的中心點用叉叉表示。a 剛開始時是原始資...
Kmeans Kmeans 和KNN演算法比較
k means演算法是聚類分析中使用最廣泛的演算法之一。它把n個物件根據他們的屬性分為k個聚類以便使得所獲得的聚類滿足 同一聚類中的物件相似度較高 而不同聚類中的物件相似度較小。其聚類過程可以用下圖表示 如圖所示,資料樣本用圓點表示,每個簇的中心點用叉叉表示。a 剛開始時是原始資料,雜亂無章,沒有l...
Kmeans Kmeans 和KNN演算法比較
摘要 k means介紹 k means演算法是聚類分析中使用最廣泛的演算法之一。它把n個物件根據他們的屬性分為k個聚類以便使得所獲得的聚類滿足 同一聚類中的物件相似度較高 而不同聚類中的物件相似度較小。其聚類過程可以用下圖表示 如圖所示,資料樣本用圓點表示,每個簇的中心點用叉叉表示。k means...