## 介紹 K-Nearest Neighbors (KNN) K-Nearest Neighbors(KNN)是一種基於距離度量的監督式學習方法,適用於分類與回歸任務,KNN 是一種非參數方法,這意味著它不需要對數據做任何假設,而是依賴於訓練數據集來做決策。 KNN 的核心思想是,當需要對某個新數據點進行分類或回歸時,找到與其最接近的 K 個鄰居,並根據這些鄰居的標籤或數值來決定該數據點的類別或預測值,KNN 具有簡單直觀的優勢,但在高維數據或大規模數據時,計算成本較高。 ## KNN Classifier 在分類問題中,有以下幾個步驟: 1. 選擇 K 值(通常根據交叉驗證來確定最佳 K)。 2. 計算新數據點與所有訓練數據點的距離,找出 K 個最接近的新數據點的鄰居 3. 多數決(Majority vote),如果 K 個鄰居中最多數據點屬於某個類別,則將新數據點歸類為該類別。 舉例來說,KNN 如果選擇 K=3,透過計算新數據點與資料集中所有樣本點的距離,來確定它的最近鄰居,並且 3 個鄰居中有 2 個屬於類別 B,而 1 個屬於類別 A,那麼新數據點將被分類為類別 B。  ### 決定 k 值 -> 交叉驗證(Cross-validation) K 值的選擇對於 KNN 的準確性至關重要,小的 K 值容易受到雜訊影響,導致過擬合,而較大的 K 值則可能使模型變得過於平滑,導致欠擬合,因此,常見做法是使用交叉驗證來選擇最合適的 K 值,透過不同的 K 值進行多次測試,選擇使測試誤差最小的 K 值。 ### 距離計算方式 1. 歐幾里得距離(Euclidean Distance): $d(p, q) = \sqrt{\sum_{i=1}^{n} (p_i - q_i)^2}$ 2. 曼哈頓距離(Manhattan Distance): $d(p, q) = \sum_{i=1}^{n} |p_i - q_i|$  ## KNN Regressor 在回歸問題中,KNN 回歸的步驟與分類類似: 1. 選擇 K 值。 2. 計算新數據點與所有訓練數據點的距離,找出 K 個最接近的新數據點的鄰居。 3. 根據這些鄰居的數值,計算加權平均值作為預測結果。 $\hat{y} = \frac{1}{K} \sum_{i=1}^{K} y_i$ ## KNN 的優點 1. 簡單易於理解: KNN 是一種基於距離的非參數模型,算法邏輯直觀簡單,不需要複雜的數學推導。 2. 無需訓練過程: KNN 是懶惰學習(Lazy Learning)的代表,不需要顯式的模型訓練,所有計算都在預測階段完成,因此適合快速實現基線模型。 3. 適應性強: 不依賴數據分布假設,適用於任意形狀的決策邊界。 ## KNN的缺點 1. 計算成本高: 預測時需要計算所有樣本點與目標點之間的距離,隨著數據集的增長,計算量會快速增加,導致運行速度變慢。 2. 對數據規模敏感: 如果數據集特別大且維度高,存儲和距離計算的成本會非常高。 3. 對特徵標準化敏感: 不同特徵的量級差異大時,歐幾里得距離(或其他距離度量)會偏向於主導特徵,因此需要對數據進行標準化或歸一化處理。 --- :::info 以上就是這篇文章「K-Nearest Neighbors (KNN)」的所有內容,第一次看的人會花比較多時間消化吸收,這是很正常的事情,若有任何問題,歡迎在下方與我聯繫、討論,接下來也會繼續分享相關文章,敬請期待。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up