機器學習之K近鄰算法基本原理

0 評論 2548 瀏覽 2 收藏 15 分鐘

機器學習中的K近鄰算法是一種基于實例的學習算法,有點像“人以類聚,物以群分”的說法。之前的文章很多都是說算法原理,這篇文章,我們來講講其優缺點和使用場景。

一、K近鄰算法如何理解?

K近鄰(K-Nearest Neighbor, KNN)是一種基于實例的學習算法,它利用訓練數據集中與待分類樣本最相似的K個樣本的類別來判斷待分類樣本所屬的類別。在機器學習中用于分類和回歸分析。

二、K近鄰算法的基本原理?

在訓練數據集中找到與該實例最鄰近的K個實例, 如果這K個實例的大多數都屬于同一個分類,就把該輸入實例分類到這個類中。一般情況下,我們只選擇樣本集中前K個最相似的數據,這就是K近鄰算法中k的出處(通常K是不大于20的整數)。比如:比較3個最近的數據,那么K=3。

最后,選擇K個最相似的數據中出現次數最多的分類,作為新數據的分類。

這種思想實際上也非常好理解,有點像“人以類聚,物以群分”的說法——如果你身邊的鄰居都來自同一個公司,那么你極有可能也屬于某個公司;如果你身邊的朋友絕大多數都屬于某個學校畢業,那么你極有可能也曾經在這個學校讀過書。

這種方式也很類似投票機制,新來的數據與舊數據相比對,多數都屬于某個類別時,采用少數服從多數的原則,給新數據歸類。

同樣,我們轉化到幾何的方式去看這個算法,KNN可以看成:有那么一堆你已經知道分類的數據,然后當一個新數據進入的時候,就開始跟已知數據里的每個點求距離,然后挑離這個訓練數據最近的K個點看看這幾個點屬于什么類型,就把這個新的點歸到這個同屬大多數的類別里。

三、K近鄰算法的一些關鍵哪些?

1. 距離度量

KNN算法的核心在于距離度量,它決定了樣本之間的相似度。通過選擇合適的距離度量方法,KNN算法能夠準確地找出與待分類樣本最相似的鄰居,從而進行準確的分類。

2. 如何確定K值

在KNN算法中,K值的選擇對分類結果具有重要影響。K值太小可能導致過擬合,即算法對訓練數據的噪聲過于敏感;而K值太大則可能導致欠擬合,即算法忽略了訓練數據中的有用信息。

確定K值的常用方法包括交叉驗證和網格搜索。交叉驗證是一種評估模型性能的方法,它將數據集劃分為多個子集,通過多次訓練和測試來選擇最優的K值。網格搜索則是一種參數調優方法,它通過在一定的參數范圍內進行窮舉搜索,找到使得模型性能最優的K值。

在實際應用中,可以根據問題的具體需求和數據集的特性來選擇合適的K值。通常,可以通過實驗和比較不同K值下的分類性能來確定最優的K值。

3. 分類與回歸的區別

KNN算法既可以用于分類問題,也可以用于回歸問題。

分類問題

給定一個新樣本點,KNN算法通常是通過找出訓練集中與其最近的k個鄰居(根據某種距離度量),然后基于這k個鄰居中最常見的類別來預測新樣本的類別。

回歸問題

如果是回歸任務,則是通過計算k個鄰居的平均值或其他統計量(如中位數)來預測連續數值。

區別:

分類問題的目標是預測離散型變量,即樣本的類別標簽;而回歸問題的目標是預測連續型變量,即樣本的具體數值

4. k鄰近算法的步驟

1)距離度量

選擇一個合適的距離度量函數(如歐氏距離、曼哈頓距離、馬氏距離等),用于計算測試樣本與每個訓練樣本之間的差異程度。

2)確定k值

k是算法中的一個重要參數,表示需要考慮的最近鄰居的數量。k值的選擇對模型性能有直接影響,較小的k可能導致模型對噪聲敏感,較大的k則可能使模型過于保守,傾向于平均結果。

3)搜索k近鄰

對于新的測試樣本,遍歷整個訓練數據集,計算它與每個訓練樣本的距離,并按升序排列,選取距離最近的k個樣本作為鄰居。

4)決策規則

分類任務:采用多數表決法,統計k個鄰居中出現最多的類別,將該類別作為新樣本的預測類別。

回歸任務:計算k個鄰居的目標變量(連續數值)的平均值,將其作為新樣本的預測值。

5)邊界情況

在分類任務中,如果多個類別的數量相等,則可以設置額外的規則來打破平局(例如使用加權距離、考慮距離遠近等)。

四、K近鄰算法的優缺點是什么?

優點:

1、KNN算法簡單易懂。它的工作原理直觀明了,基于實例進行學習,無需建立復雜的模型或進行參數估計。這使得初學者能夠輕松理解并應用該算法,同時也便于專業人員快速實現和調試。

2、KNN算法無需參數估計。與傳統的參數化模型相比,KNN算法不需要進行復雜的參數訓練和優化過程。它直接利用訓練數據集中的實例進行分類或回歸,從而簡化了算法的實現和調試過程。

3、KNN算法適合多分類問題。無論是二分類還是多分類問題,KNN算法都能有效地處理。它通過投票機制確定待分類樣本的類別,能夠處理具有多個類別的數據集,這使得KNN算法在實際應用中具有廣泛的適用性。

缺點:

1、KNN算法的計算量較大,尤其在處理大數據集時。由于KNN算法需要計算待分類樣本與訓練集中每個樣本之間的距離,當數據集規模較大時,計算復雜度會急劇增加,導致算法運行時間較長。因此,在處理大規模數據集時,KNN算法可能不是最佳選擇。

2、KNN算法對特征值敏感。算法的性能很大程度上取決于特征值的準確性和完整性。如果特征值存在噪聲、缺失或異常值,可能會對KNN算法的分類結果產生負面影響。因此,在應用KNN算法之前,需要對數據進行適當的預處理和特征工程,以提高算法的準確性和穩定性。

3、KNN算法需要選擇合適的K值和距離度量方法。K值的選擇對算法性能具有重要影響,過小的K值可能導致過擬合,而過大的K值可能導致欠擬合。此外,不同的距離度量方法可能會對分類結果產生不同的影響。因此,在實際應用中,需要通過實驗和比較不同K值和距離度量方法下的分類性能,選擇最優的參數設置。

4、空間復雜度也較高,因為需要存儲所有訓練數據。

5、對于大規模數據集和高維數據,效果可能會下降,因為“維度災難”問題可能導致距離度量失去意義。

6、可解釋性差,無法提供決策規則或變量重要性信息。

五、K近鄰算法的適用場景是什么?

KNN適用于中小規模、低至中等維度的數據集,在特征空間相對簡單或者沒有明顯規律的情形下效果較好。對于大規模數據集,一般會結合其他技術(如降維、索引優化等)來提高效率。此外,由于其直觀性和易于理解性,KNN常被用作教學和快速原型設計的工具。

六、K近鄰算法應用場景舉例

K近鄰算法憑借其靈活性和直觀性,在多個領域展現出了強大的適用性和有效性:

  1. 推薦系統:在個性化推薦場景中,KNN被用于用戶偏好預測。例如,根據用戶的瀏覽歷史、購買記錄等信息,計算新用戶與已有用戶之間的相似度,然后找出K個最相似的鄰居用戶。這些鄰居用戶喜歡的商品或內容將被推薦給新用戶,從而實現個性化推薦。另外,KNN還可用于協同過濾技術中,通過分析用戶-物品矩陣,找出具有相似行為模式的用戶群體,以實現基于鄰域的推薦。
  2. 圖像識別:在計算機視覺任務中,KNN常應用于手寫數字識別、物體分類等問題。首先,對圖像進行預處理并提取特征(如像素直方圖、邊緣檢測特征、紋理特征等),然后利用KNN算法比較待識別圖像特征與訓練集中各類別圖像特征的距離,最終確定圖像屬于哪一類別。這種方法尤其適用于小型數據集或簡單識別任務,而在大規模圖像識別任務中,通常會結合深度學習等更復雜的方法。
  3. 醫學診斷與預測:在醫療健康領域,KNN可用于疾病診斷、病情嚴重程度評估及預后判斷等。比如,在腫瘤類型判斷上,通過對病理切片的細胞形態學特征、基因表達譜等多種生物標志物進行量化,采用KNN算法對比相似病例,來推測未知樣本所屬的腫瘤亞型或者預測其惡性程度。此外,對于病人的治療反應預測,也可以通過比較病史、生理指標等因素相近的病例,利用KNN得出最佳治療方案。
  4. 金融市場預測:在金融領域,KNN可以用來預測股票價格走勢、評估信用風險等。通過對歷史交易數據、財務報表、市場情緒等多個維度的數據進行分析,利用KNN算法尋找與當前市場狀況相似的歷史時期,并參考當時市場的表現作為未來趨勢預測的依據。
  5. 社交網絡分析:在社交網絡研究中,KNN有助于發現用戶間的隱含關系,實現社區發現或用戶興趣定位。通過衡量用戶間的行為相似度(如共同關注的話題、互動頻率等),KNN可為每個用戶找到社交網絡中的“近鄰”,進而揭示用戶群體的興趣分布以及社交影響力。
  6. 物聯網(IoT)設備故障診斷:在工業物聯網場景下,KNN可用于設備狀態監測和故障預警。通過收集設備運行時的各項參數指標,利用KNN對比類似設備的歷史故障案例,快速定位當前設備可能出現的問題。
  7. 電商網站商品推薦:除了上述提到的個性化推薦外,在電商平臺中,KNN還可用于關聯規則挖掘,根據用戶的購物行為和其他用戶的行為模式,發現商品之間的關聯性,從而推薦相關聯的商品。
  8. 文本分類:文本分類是KNN算法的一個重要應用領域。在文本分類任務中,KNN算法可以將文本數據表示為向量形式,并利用訓練數據中的文本向量來分類新的文本數據。例如,在新聞分類中,KNN算法可以根據新聞內容的相 似性將其歸類到不同的類別(如政治、經濟、體育等)。通過選擇合適的特征提取方法和距離度量方式,KNN算法能夠有效地處理文本數據中的高維性和稀疏性問題,實現準確的文本分類。

參考:

1、寫給產品經理的幾種機器學習算法原理-人人都是產品經理-策略產品夏師傅

2、七大機器學習常用算法精講:K近鄰算法(一)-人人都是產品經理-火粒產品

3、【機器學習-13】K-近鄰算法(KNN)介紹、應用及文本分類實現

本文由@厚謙 原創發布于人人都是產品經理,未經作者許可,禁止轉載。

題圖來自Unsplash,基于CC0協議。

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!