機器學習入門 4-1 k近鄰演算法基礎

  • 2019 年 11 月 12 日
  • 筆記

本系列是《玩轉機器學習教程》一個整理的影片筆記。本小節主要介紹K近鄰演算法。

K近鄰演算法

k近鄰演算法是機器學習中最簡單的演算法之一,他是入門機器學習中的第一個演算法。K近鄰演算法:

  1. 思想極度簡單;
  2. 應用數學知識少(近乎為零);
  3. 效果比較好;
  4. 可以解釋機器學習演算法使用過程中很多細節問題
  5. 更完整的刻畫機器學習應用流程

橫軸和縱軸分別代表兩個特徵,藍色代表惡性腫瘤,紅色代表良性腫瘤,有了這些初始資訊。

現在來了一個新的數據點。也就是下面綠色的數據點,我們該怎麼判斷新來的數據點是良性腫瘤還是惡性腫瘤呢?

如果使用K近鄰演算法,我們需要給定一個K值,K值是一個超參數,由我們根據經驗自己指定,此時我們給定k = 3。

之後要做在整個數據點中找到與綠色數據點(想要預測的數據點)最近的3個數據點(因為此時的k = 3),如下圖所示:

之後對這些最近的點的label進行統計,選擇最近的這些點中相同label最多的數據點,即認為是綠色數據點的label。就本例來說,與綠色的數據點最近的3個數據點的label標籤都是惡性腫瘤,因此K近鄰認為這個綠色的數據點為惡性腫瘤。

k近鄰的本質就是認為,如果兩個樣本足夠的相似,就有更高的概率屬於同一個類別,當然此時只看與之相近的一個類別是不靠譜的,所以多看幾個樣本,也就是k個樣本。此時看判斷兩個樣本的相似性,就是看兩個樣本在特徵空間中的距離來描述的。

下面在舉一個例子:

與綠色數據點最近的3個數據點,有兩個紅色數據點和一個藍色數據點,因此少數服從多數,紅色點勝出,因此認為綠色這個新的數據點是紅色label標籤,也就是良性腫瘤。

從上面也可以看出,K近鄰首先能夠解決分類問題,當然了K近鄰演算法也是能夠解決回歸問題的。

數據準備以及可視化

導入需要包

創建數據

此時創建的是一個假的數據,後面會使用更加真實的數據。

數據的可視化,因為是兩個特徵,並且label標籤為數據點的類別,所以我們使用散點圖來可視化數據。

預測新的數據點

K近鄰要做的就是假設有了一個新的數據x,我們需要通過k近鄰演算法知道新的數據點x屬於哪一個類別。也就是說,他最有可能是良性腫瘤還是惡性腫瘤。

根據K近鄰演算法,從圖中直觀來看,藍色數據點也就是新的數據點屬於紅色點也就是惡性腫瘤的概率大一些。接下來就使用K近鄰演算法來預測這個藍色數據點類別。

K近鄰過程

計算數據點之間相似度

首先需要計算新的數據點與其他數據點之間的相似性是多少,我們使用空間中數據點之間的距離來作為數據點之間的相似性。此時我們使用歐拉距離公式。

找出最近K個點

預測最終結果