農林漁牧網

您現在的位置是:首頁 > 農業

使用KNN進行分類和迴歸

2022-12-01由 deephub 發表于 農業

期望均方值怎麼算

一般情況下k-Nearest Neighbor (KNN)都是用來解決分類的問題,其實KNN是一種可以應用於資料分類和預測的簡單演算法,本文中我們將它與簡單的線性迴歸進行比較。

KNN模型是一個簡單的模型,可以用於迴歸和分類任務。大部分的機器學習演算法都是用它的名字來描述的KNN也是一樣,使用一個空間來表示鄰居的度量,度量空間根據集合成員的特徵定義它們之間的距離。對於每個測試例項,使用鄰域來估計響應變數的值。估計可以使用最多k個鄰域來進行,超引數控制演算法的學習方式;它們不是根據訓練資料估計出來的,而是基於一些距離函式選擇的最近的k個鄰居。

使用KNN進行分類和迴歸

在本文中,我們將重點介紹二元分類,為了防止平局k通常設定為奇數。與分類任務不同,在迴歸任務中,特徵向量與實值標量而不是標籤相關聯,KNN是透過對響應變數均值或加權均值來進行預測。

惰性學習和非引數模型

惰性學習是 KNN 的標誌。惰性學習器,也稱為基於例項的學習器,這種學習器很少或根本不處理訓練資料。與線性迴歸等積極學習的演算法不同,KNN 不會估計在訓練階段概括訓練資料的模型的引數。惰性學習有利有弊,訓練一個積極學習的成本可能很高,但使用生成的模型進行預測的成本少。透過將係數乘以特徵並新增偏置引數就可以預測簡單的結果,計算成本低,預測速度快。但是一個惰性的學習者做出預測的成本是很高的,因為KNN 預測需要在計算測試例項和訓練例項之間的距離,也就是要訪問所有的訓練資料。

引數模型使用固定數量的引數或係數來彙總資料。無論使用多少個訓練例項,引數的數量都保持不變。非引數可能看起來用詞不當,因為它並不意味著模型沒有引數;相反,它意味著引數的數量隨著訓練資料的數量而變化。

當不熟悉響應變數和解釋變數之間的關係時,非引數模型可能會很有用。KNN 就是這種非引數模型,如果例項彼此接近,則響應變數可能具有相似的值。當訓練資料稀缺或已經知道這種關係時,帶有假設的模型可能會比非引數模型有用。

使用 KNN 進行分類

我們使用一個簡單的問題作為,我們需要根據一個人的身高和體重來預測他或她的性別的情況。 這裡有兩個標籤可以分配給響應變數,這就是為什麼這個問題被稱為二元分類。 下表記錄了九個訓練例項:

使用KNN進行分類和迴歸

KNN可以使用的特徵沒有數量限制,但不能視覺化三個以上的特徵(這是因為我們生活在3維空間,無法視覺化更多維的資料)。透過建立散點圖,可以使用matplotlib視覺化資料:

使用KNN進行分類和迴歸

使用KNN進行分類和迴歸

從圖中可以看到,男性往往比女性更高更重,這一點由x標記所示。我們的經驗也與這個觀察結果一致。要根據一個人的身高和體重來預測他/她的性別。需要定義距離測量指標:我們將測量兩點之間的歐氏距離。在二維空間中,計算歐氏距離如下:

使用KNN進行分類和迴歸

下一步是計算查詢例項和所有訓練例項之間的距離:

使用KNN進行分類和迴歸

將k設定為3,我們將選擇三個最近的例項來進行預測。在下面的指令碼中,計算測試和訓練例項之間的距離,並確定每個鄰居的最常見性別:

使用KNN進行分類和迴歸

在下面的圖中,圓圈表示查詢例項,放大的標記表示它最近的三個鄰居:

使用KNN進行分類和迴歸

有兩個女性鄰居和一個性男鄰居。所以我們測試例項的結果是女性。使用scikit-learn實現KNN分類器,程式碼如下:

使用KNN進行分類和迴歸

LabelBinarizer先將字串轉換為整數,fit方法建立了從標籤字串到整數的對映。輸入標籤使用transform方法進行轉換。fit_transform同時呼叫fit和transform作。同時如果訓練集和測試集是獨立轉換的,那麼在訓練集中男性可能對映為1,而在測試集中則對映為0。所以我們使用訓練集的物件進行fit。然後使用KNeighborsClassifier進行預測。

使用KNN進行分類和迴歸

使用KNN進行分類和迴歸

透過將我們的測試標籤與分類器的預測進行比較,我們發現一個男性測試例項被錯誤地預測為女性。所以我們的準確率為75%:

使用KNN進行分類和迴歸

使用 KNN 進行迴歸

KNN 也可以執行迴歸分析。讓我們使用他們的身高和性別來預測他的體重。 我們在下表中列出了我們的訓練和測試集:

使用KNN進行分類和迴歸

使用KNN進行分類和迴歸

使用KNeighborsRegressor,我們可以進行迴歸的任務。這裡作為迴歸任務的兩個效能度量是:平均絕對誤差(MAE)和均方誤差(MSE):

使用KNN進行分類和迴歸

MAE的計算方法是將預測誤差的絕對值取平均值。MAE的計算方法如下:

使用KNN進行分類和迴歸

與平均絕對誤差相比,均方偏差(MSE)更為常用。均方誤差可以透過對預測誤差的平方取平均值來計算,公式如下:

使用KNN進行分類和迴歸

MSE比MAE對異常值的影響更大;一般情況下普通線性迴歸使MSE的平方根最小化

使用KNN進行分類和迴歸

透過資料的標準化,我們的模型表現更好。當一個人的性別被包含在例項之間的距離時,模型可以做出更好的預測。

總結

KNN是我們在本文中介紹的一個簡單但功能強大的分類和迴歸模型。KNN模型是一個懶惰的非引數學習模型;它的引數不是根據訓練資料估計出來的。為了預測響應變數,它儲存所有訓練例項並使用最接近例項進行測試。在Sklearn中我們可以直接呼叫內建的方法來使用。

https://avoid。overfit。cn/post/25204154c52341f0bf93622a797597e1

作者:Onepagecode