
K 最近鄰 (KNN) 平台使用給定觀測的局部鄰域中觀測的響應來預測該觀測的響應值。它可用於對分類響應進行分類以及預測連續響應。
KNN 是一種非參數、有監督的機器學習演算法。它基於以下假設:某些參數(觀測值)的相似性反映了其他參數(預測)的相似性。為了滿足這個假設,KNN 對給定觀測值與所有其他觀測值之間的 k 個最小距離進行排序。
因此,K 最近鄰可以對具有不規則預測邊界的觀測進行分類。但是,由於演算法對不相關的預測變數很敏感,因此預測變數的選擇可能會影響您的結果。
計算距離
JMP pro 17 使用歐幾里德距離來計算預測變數值與其他變數值之間的距離。在 2D 空間中,(x1, y1) 和 (x2, y2) 之間的歐幾里德距離d很簡單:
d = sqrt((x2-x1)^2 + (y2-y1)^2)
歐幾裡得方法要求所有數值都是實數。
做出預測
KNN 根據其回應類型給予預測。
- 持續回應
JMP 將預測值作為 k 個最近鄰的反應的平均值。每個連續預測變數都按其標準差進行縮放。連續預測變數的缺失值將替換為該預測變數的平均值。
- 明確回應
在 JMP 中,預測值是 k 個最近鄰的最頻繁回應等級。如果存在多個頂級回應,則透過隨機選擇這些等級之一來分配預測回應。
k 值或 n_neighbors
不同的 k 值可以給出不同的預測。在JMP中,您只需指定k的最大數量。對於每個 k,1 ≤ k ≤ k_max,JMP 僅使用訓練集觀測值建立模型。這些模型中的每一個都用於對驗證集觀察結果進行分類。驗證集結果用於選擇誤分類率最低(也稱為最佳 k)的模型。
JMP 建模中 KNN 的驗證
您可以新增數值列作為 JMP Pro 中 KNN 建模的驗證。 JMP 在建模之前使用驗證將資料劃分為多個集合,以減少過度擬合並選擇良好的預測模型。對於 KNN,此功能是可選的。然而,過度擬合會導致訓練和預測之間的不匹配,即演算法對訓練資料過於特定,導致預測不太準確。
對於KNN,可以透過以下方法將資料劃分為兩個或三個集合:
|
方法
|
放
|
功能
|
|
訓練和調整
|
訓練
|
估計模型參數
|
|
驗證
|
在模型擬合演算法中調整模型參數,最終選擇具有良好預測能力的模型
|
|
訓練、調整和評估
|
訓練
|
估計模型參數
|
|
驗證
|
在模型擬合演算法中調整模型參數,最終選擇具有良好預測能力的模型
|
|
測試
|
獨立評估擬合模型的性能
|
在 JMP 文件中了解有關驗證的更多資訊: Make Validation Column 平台範例 (jmp.com)
例子
在此範例中,我們希望使用 KNN 根據客戶的財務歷史記錄將客戶分類為良好風險和不良風險。
- 選擇幫助 > 範例資料資料夾並開啟Equity.jmp 。
- 選擇分析 > 預測建模 > K 最近鄰。
- 選擇“BAD”並點選“Y”,“回應” 。這是要分析的數值。
- 選擇LOAN和CLNO ,然後按一下X,因子。這是預測變數。
- 選擇驗證並點擊驗證。這是在建模之前將資料劃分為集合的值,以避免過度擬合並選擇良好的預測模型。我們在範例中使用了訓練、調整和評估方法。
- 按一下“確定” 。
保存預測方程
- 右鍵點選“BAD”紅色小三角並選擇發布預測公式。
- 在「鄰居數量 K」旁邊,保留預設值 7。
- 按一下“確定” 。
預測方程式保存在Formula Depot中。您可以使用 Formula Depot 中的模型比較選項,將發佈到 Formula Depot 的替代模型的性能與 K = 7 最近鄰模型的性能進行比較。有關 Formula Depot 的更多信息,請參見幫助/JMP 文檔庫,第 3763 頁。
如果有興趣,可以回到步驟4。這次把所有參數放在LOAN和CLNO之間,作為X,Factor。發生了什麼變化以及為什麼?
舒然,
評論者:Jeremy T. @jeteez
2024 年 1 月,基於 JMP(R) Pro 17.2.0
本文不反映 JMP Statistical Discovery 或 SAS Institute 的立場與觀點。