七大機(jī)器學(xué)習(xí)常用算法精講:K近鄰算法(一)

0 評論 3436 瀏覽 5 收藏 12 分鐘
🔗 技术知识、行业知识、业务知识等,都是B端产品经理需要了解和掌握的领域相关的知识,有助于进行产品方案设计和评估

本文將深入剖析K近鄰算法的核心原理、實(shí)現(xiàn)步驟,并結(jié)合實(shí)際應(yīng)用場景進(jìn)行探討,以此揭示其在現(xiàn)代機(jī)器學(xué)習(xí)中的魅力所在。

在機(jī)器學(xué)習(xí)的廣闊天地中,有一種簡單卻實(shí)用的經(jīng)典算法——K近鄰(K-Nearest Neighbors, KNN)算法。

它以直觀易懂、無需假設(shè)數(shù)據(jù)分布以及對異常值敏感等特性,在分類和回歸問題中發(fā)揮著重要作用。

一、K近鄰算法基礎(chǔ)概念

K近鄰(K-Nearest Neighbor, KNN)算法是一種基于實(shí)例的學(xué)習(xí),或者稱為惰性學(xué)習(xí)方法,在機(jī)器學(xué)習(xí)中用于分類和回歸分析。

其基本概念也是相當(dāng)?shù)闹庇^:

原理

分類問題

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

回歸問題

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

步驟

1)距離度量

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

2)確定k值

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

3)搜索k近鄰

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

4)決策規(guī)則

分類任務(wù):采用多數(shù)表決法,統(tǒng)計k個鄰居中出現(xiàn)最多的類別,將該類別作為新樣本的預(yù)測類別。

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

5)邊界情況

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

優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 算法簡單易理解,實(shí)現(xiàn)起來相對直接。
  • 不需要假設(shè)數(shù)據(jù)分布,適用于非線性數(shù)據(jù)集。
  • 對異常值不敏感,可以處理多分類任務(wù)。

缺點(diǎn)

  • 計算復(fù)雜度高,尤其是隨著樣本數(shù)量增加時,每次預(yù)測都需要計算新樣本與所有訓(xùn)練樣本的距離。
  • 空間復(fù)雜度也較高,因?yàn)樾枰鎯λ杏?xùn)練數(shù)據(jù)。
  • 對于大規(guī)模數(shù)據(jù)集和高維數(shù)據(jù),效果可能會下降,因?yàn)椤熬S度災(zāi)難”問題可能導(dǎo)致距離度量失去意義。
  • 可解釋性差,無法提供決策規(guī)則或變量重要性信息。

適用場景

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

二、K近鄰算法應(yīng)用關(guān)鍵要素

K近鄰(K-Nearest Neighbor, KNN)算法的關(guān)鍵要素包括以下幾個方面:

距離度量

在KNN中,選擇一個有效的距離度量方法是至關(guān)重要的。常用的距離度量有歐氏距離、曼哈頓距離、切比雪夫距離等。

歐氏距離是最常見的選擇,計算公式為 :

其中,X1i是點(diǎn)A的第i個坐標(biāo),X2i是點(diǎn)B的第i個坐標(biāo)。

簡而言之,歐式距離就是將各維度上的坐標(biāo)差值平方后求和,然后取平方根。它是許多機(jī)器學(xué)習(xí)算法和數(shù)據(jù)分析中常用的距離度量方式。

k值的選擇

k值代表了在進(jìn)行預(yù)測時考慮的最近鄰居的數(shù)量。k值的選擇對模型性能有很大影響:

  • 較小的k值可能會導(dǎo)致模型過于敏感于局部樣本,容易過擬合;
  • 較大的k值則可能平滑掉數(shù)據(jù)中的細(xì)節(jié),使模型偏向全局趨勢,從而可能導(dǎo)致欠擬合。

理想的k值應(yīng)當(dāng)通過交叉驗(yàn)證等方式確定,以達(dá)到最優(yōu)的泛化能力。

分類決策規(guī)則

  • 對于分類任務(wù),通常采用多數(shù)表決法,即新樣本被歸類到其k個最近鄰中最頻繁出現(xiàn)的類別;
  • 有時也會采用加權(quán)投票的方式,根據(jù)每個鄰居與新樣本之間的距離賦予不同的權(quán)重,距離越近的鄰居權(quán)重越高。

異常處理

在實(shí)際應(yīng)用中,需要考慮如何處理異常值或噪聲數(shù)據(jù),因?yàn)樗鼈兛赡軐個最近鄰的結(jié)果產(chǎn)生較大影響。

數(shù)據(jù)預(yù)處理

  • 數(shù)據(jù)標(biāo)準(zhǔn)化或歸一化,確保不同特征具有可比性,這對于基于距離的算法尤為重要;
  • 特征選擇或降維,減少無關(guān)或冗余特征,可以改善KNN的效果,并降低計算復(fù)雜度。

效率優(yōu)化

針對大規(guī)模數(shù)據(jù)集,傳統(tǒng)的KNN算法搜索效率較低,因此引入KD樹、球樹、哈希表等數(shù)據(jù)結(jié)構(gòu)和算法來加速最近鄰搜索過程是非常關(guān)鍵的優(yōu)化手段。

KNN算法的成功應(yīng)用依賴于合適距離度量的選擇、合理k值的確立、有效的分類策略以及對數(shù)據(jù)質(zhì)量和計算效率的綜合考量。

三、K近鄰算法應(yīng)用場景舉例

K近鄰算法憑借其靈活性和直觀性,在多個領(lǐng)域展現(xiàn)出了強(qiáng)大的適用性和有效性:

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

總之,K近鄰算法憑借其直觀易用、無需假設(shè)數(shù)據(jù)分布的特點(diǎn),在眾多實(shí)際問題中找到了廣泛應(yīng)用的可能性,無論是傳統(tǒng)的圖像識別、醫(yī)學(xué)診斷,還是新興的物聯(lián)網(wǎng)、大數(shù)據(jù)分析等領(lǐng)域,都能看到KNN的身影。盡管面臨挑戰(zhàn),但隨著算法優(yōu)化和技術(shù)進(jìn)步,KNN的應(yīng)用前景將持續(xù)拓展。

本文由 @火粒產(chǎn)品 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!
专题
13642人已学习12篇文章
用户调研作为产品人员最常用的工作方式,相信各位一定不会陌生。但如何提高用户调研的有效性却是一直困扰大家的问题。本专题的文章分享了用户调研的方法论。
专题
19124人已学习13篇文章
在B端产品设计中,数据的筛选是其中必不可少的一个步骤。本专题的文章提供了B端数据筛选查询的设计思路。
专题
11973人已学习13篇文章
2023年已结束,你的年终总结写好了吗?本专题的文章分享了如何做好年终总结。
专题
101576人已学习23篇文章
做产品难,做运营更难,做APP运营推广难上加难。
专题
45009人已学习22篇文章
可用又易用,产品逻辑和情感化体验两手抓,用户才会爱上你的产品。