1. 程式人生 > >機器學習之KNN(k近鄰)演算法詳解

機器學習之KNN(k近鄰)演算法詳解

1-1 機器學習演算法分類

一、基本分類:

①監督學習(Supervised learning)

資料集中的每個樣本有相應的“正確答案”, 根據這些樣本做出
預測, 分有兩類: 迴歸問題和分類問題。

步驟1: 資料集的建立和分類
步驟2: 訓練
步驟3: 驗證
步驟4: 使用

( 1) 迴歸問題舉例
例如: 預測房價, 根據樣本集擬合出一條連續曲線。
( 2) 分類問題舉例
例如: 根據腫瘤特徵判斷良性還是惡性,得到的是結果是“良性”或者“惡性”, 是離散的。

監督學習:從給定的訓練資料集中學習出一個函式(模型引數), 當新的資料到來時,可以根據這個函式預測結果。監督學習的訓練集要求包括輸入輸出,也可以說是特徵和目標。訓練集中的目標是由人標註的。
PCA和很多deep learning演算法都屬於無監督學習

②無監督學習

無監督學習:輸入資料沒有被標記,也沒有確定的結果。樣本資料類別未知, 需要根據樣本間的相似性對樣本集進行分類(聚類, clustering)試圖使類內差距最小化,類間差距最大化。
實際應用中, 不少情況下無法預先知道樣本的標籤,也就是說沒有訓練樣本對應的類別,因而只能從原先沒有樣本標籤的樣本集開始學習分器設計

有監督學習 無監督學習
樣本 必須要有訓練集與測試樣本。在訓練集中找規律,而對測試樣本使用這種規律。
目標 方法是識別事物,識別的結果表現在給待識別資料加上了標籤。 因此訓練樣本集必須由帶標籤的樣本組成。

③半監督學習

半監督學習: 即訓練集同時包含有標記樣本資料和未標記樣本資料。

④強化學習

實質是: make decisions問題,即自動進行決策,並且可以做連續決策。
主要包含四個元素: agent, 環境狀態, 行動, 獎勵;
強化學習的目標就是獲得最多的累計獎勵。

小結:

監督學習:
In:有標籤
Out:有反饋
目的:預測結果
案例:學認字
演算法:分類(類別),迴歸(數字)

無監督學習:
In:無標籤
Out:無反饋
目的:發現潛在結構
案例:自動聚類
演算法:聚類,降維

半監督學習:
已知:訓練樣本Data和待分類的類別
未知:訓練樣本有無標籤均可
應用:訓練資料量過時,
監督學習效果不能滿足需求,因此用來增強效果。

強化學習:
In:決策流程及激勵系統
Out:一系列行動
目的:長期利益最大化,回報函式(只會提示你是否在朝著目標方向前進的延遲反映)
案例:學下棋
演算法:馬爾科夫決策,動態規劃

2-1 KNN基本流程

一、概念:

KNN(K Near Neighbor):k個最近的鄰居,即每個樣本都可以用它最接近的k個鄰居來代表。
這裡寫圖片描述
最近鄰 (k-Nearest Neighbors, KNN) 演算法是一種分類演算法, 1968年由 Cover和 Hart 提出, 應用場景有字元識別、 文字分類、 影象識別等領域。
該演算法的思想是: 一個樣本與資料集中的k個樣本最相似, 如果這k個樣本中的大多數屬於某一個類別, 則該樣本也屬於這個類別。

二、距離度量

在選擇兩個例項相似性時,一般使用的歐式距離
Lp距離定義:

Lp(xi,xj)=(l=1n|xi(l)xj(l)|p)1p
其中xiRn,xjRn, 其中L∞定義為:
L(xi,xj)=maxl|xi(l)xj(l)|

其中p是一個變引數。
當p=1時,就是曼哈頓距離(對應L1範數)
曼哈頓距離對應L1-範數,也就是在歐幾里得空間的固定直角座標系上兩點所形成的線段對軸產生的投影的距離總和。例如在平面上,座標(x1, y1)的點P1與座標(x2, y2)的點P2的曼哈頓距離為:|x1x2|+|y1y2|,要注意的是,曼哈頓距離依賴座標系統的轉度,而非系統在座標軸上的平移或對映。
曼哈頓距離:

L1=k=1n|x1kx2k|
L1範數表示為:
L1|x|=i=1n|xi|x=[x1x2xn]Rn

當p=2時,就是歐氏距離(對應L2範數)
最常見的兩點之間或多點之間的距離表示法,又稱之為歐幾里得度量,它定義於歐幾里得空間中。n維空間中兩個點x1(x11,x12,…,x1n)與 x2(x21,x22,…,x2n)間的歐氏距離
歐氏距離:

d12=k=1n(x1x2)2

L2範數: