機器學習算法-K近鄰算法-KNN

1. K近鄰算法是什么?

定義:

K近鄰是一種基于實例的懶惰學習(Lazy Learning)算法,用于分類和回歸任務

  • 核心思想:“物以類聚”——通過計算樣本間的距離,找到目標點的最近K個鄰居,根據鄰居的多數類別(分類)或平均值(回歸)進行預測。

  • 非參數模型:不假設數據分布,直接依賴數據本身的結構。


2. 核心原理

工作流程
  1. 計算距離:使用歐氏距離、曼哈頓距離等衡量樣本間相似度

  2. 選擇K值:確定參與投票的鄰居數量(如K=3)。

  3. 投票或平均:

    1. 分類:統計K個鄰居中多數類別作為預測結果。

    2. 回歸:取K個鄰居目標值的平均值。

關鍵參數
  • K值:

    • K過小 → 對噪聲敏感,容易過擬合。

    • K過大 → 忽略局部特征,可能欠擬合。

  • 距離度量:

    • 歐氏距離(默認):適用于連續特征。

    • 曼哈頓距離:對異常值更魯棒。

    • 余弦相似度:適合文本或高維稀疏數據。

數據預處理
  • 標準化/歸一化:消除不同特征量綱的影響(如年齡范圍0-100 vs 收入范圍0-1e6)。

  • 處理缺失值:填充或刪除缺失樣本。


3. 實際生產中的例子

案例1:推薦系統(相似用戶推薦)
  • 場景:視頻平臺根據用戶觀看記錄推薦內容。

  • 實現:

    • 將用戶表示為特征向量(如觀看類型、時長、評分)。

    • 找到與目標用戶最接近的K個用戶,推薦他們喜歡的視頻。

  • 優點:簡單直觀,適合冷啟動問題

案例2:醫療診斷(疾病分類)
  • 場景:根據患者癥狀判斷疾病類型。

  • 特征:體溫、血壓、化驗指標、病史編碼。

  • 輸出:疾病類別(如流感、肺炎)。

  • 應用:輔助醫生快速匹配相似病例。

案例3:金融風控(欺詐檢測)
  • 場景:識別信用卡異常交易。

  • 特征:交易金額、時間、地點、商戶類型。

  • 輸出:正常(0)或欺詐(1)。

  • 應用:標記與歷史欺詐交易最相似的K筆交易。

案例4:圖像分類(簡單圖像識別)
  • 場景:手寫數字識別(如MNIST數據集)。

  • 實現:

    • 將圖像像素展開為特征向量。

    • 計算測試圖像與訓練集中所有圖像的歐氏距離,取最近K個鄰居的多數類別。

  • 局限:計算成本高,適合小規模數據。


4. 生產中的優化方法

降低計算復雜度
  • KD樹或球樹:空間數據結構,加速近鄰搜索(適合低維數據)。

  • 近似最近鄰(ANN):如Facebook的FAISS庫,用哈希或量化技術犧牲精度換速度(適合高維大數據)。

處理類別不平衡
  • 加權投票:根據鄰居距離賦予不同權重(近鄰投票權重更大)。

  • 調整K值:增加K以包含更多潛在少數類樣本。

特征選擇與降維
  • 使用PCA或LDA減少特征維度,緩解“維度災難”(高維下距離區分度下降)。


5. 優缺點

優點
  • ? 簡單易懂,無需訓練過程(“懶惰學習”)。

  • ? 對數據分布無假設,適應復雜模式。

  • ? 天然支持多分類和回歸任務。

缺點
  • ? 計算成本高(需存儲全部數據,預測時實時計算)。

  • ? 對高維數據和大規模數據性能差(維度災難)

  • ? 對噪聲和不相關特征敏感。


6. 代碼工具示例(Python)


7. 與邏輯回歸的對比

??維度????K近鄰????邏輯回歸??
??模型類型??非參數,基于實例參數,基于概率模型
??訓練速度??無需訓練(惰性學習)需迭代優化參數
??預測速度??慢(需計算所有樣本距離)快(直接計算加權和)
??可解釋性??低(依賴局部鄰居)高(權重反映特征重要性)
??適用場景??小數據、低維、非線性關系大數據、線性或近似線性關系

8. 適用場景總結

  • 推薦使用KNN:

    • 數據量較小且特征維度低(如數百樣本、幾十維度)。

    • 需要快速驗證簡單模型(如原型驗證階段)。

    • 數據存在復雜局部模式且無需全局解釋。

  • 避免使用:

    • 數據量極大(百萬級以上)或特征維度極高(如文本、圖像)。

    • 實時性要求高(如高頻交易系統)。


一句話總結

K近鄰是“近朱者赤”的直觀算法,憑借簡單性和無假設特性,在小規模、低維場景中表現優異,但計算成本限制了其在大數據中的應用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/86818.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/86818.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/86818.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于vue框架的法律知識咨詢普及系統gwuv7(程序+源碼+數據庫+調試部署+開發環境)帶論文文檔1萬字以上,文末可獲取,系統界面在最后面。

系統程序文件列表 項目功能:用戶,知識類型,律師,律師推薦,法律知識,新聞類型,法律新聞,咨詢律師 開題報告內容 基于Vue框架的法律知識咨詢普及系統開題報告 一、研究背景與意義 隨著法治社會建設的深入推進,公眾對法律知識的需求呈現爆發式增長。然而…

Netty 揭秘CompositeByteBuf:零拷貝優化核心技術

CompositeByteBuf 類 核心設計目標?? ??虛擬緩沖區??:將多個 ByteBuf 合并為單一邏輯視圖,減少數據復制。??零拷貝優化??:通過組合而非復制提升性能。??引用計數管理??:統一管理底層 ByteBuf 的生命周期。 核心成…

用css實現文字字體顏色漸變

用css實現文字字體顏色漸變 background-clip 是CSS3中新增的屬性,可以用于指定背景圖片或顏色的繪制范圍。利用 background-clip 屬性實現文字顏色從左到右、從綠到白的漸變效果: 代碼如下: .gradient-color {background-image: linear-gr…

SpringBatch處理數據性能優化

SpringBatch的Step默認使用同步方式批量處理數據,也可以通過配置將讀數改為同步,處理和寫入改為異步方式。 1、同步處理Step SpringBatch的Step一般由ItemReader、ItemProcessor和ItemWriter組成,其中ItemProcessor是可選的。他的設計思路的…

【機器學習深度學習】前饋神經網絡(單隱藏層)

目錄 一、什么是前饋神經網絡? 二、數學表達式是什么? 三、為什么需要“非線性函數”? 四、NumPy 實現前饋神經網絡代碼示例 五、 運行結果 六、代碼解析 6.1 初始化部分 6.2 前向傳播 6.3 計算損失(Loss) 6…

設計模式系列(08):創建型模式 - 原型模式

系列導讀:完成創建型模式的學習,我們來看最后一個創建型模式——原型模式。它通過復制已有對象來創建新對象,是一種獨特的創建方式。 解決什么問題:通過復制現有對象來創建新對象,而不是重新實例化。適用于對象創建成本…

區塊鏈到底是什么?

區塊鏈本質上是一種去中心化的分布式賬本技術,具有以下核心特點: - 去中心化:沒有中央管理機構,數據由網絡中的多個節點共同維護,比如比特幣網絡中各個節點都保存著完整賬本。 - 分布式存儲:數據不是存在一…

系統架構設計師論文分享-論ATAM的使用

我的軟考歷程 摘要 2023年2月,我司通過了研發紗線MES系統的立項,該系統為國內紗線工廠提供SAAS服務,旨在提高紗線工廠的數字化和智能化水平。我在本項目中擔任系統架構設計師,負責整個項目的架構設計工作。本文結合我在該項目中…

vue-28(服務器端渲染(SSR)簡介及其優勢)

服務器端渲染(SSR)簡介及其優勢 服務器端渲染(SSR)是現代網絡應用的關鍵技術,特別是使用 Vue.js 等框架構建的應用。它通過在服務器上渲染初始應用狀態來彌補傳統單頁應用(SPA)的局限性&#x…

工業電子 | 什么是SerDes,為何工業和汽車應用需要它?

重點內容速覽: 1. 什么是SerDes? 2. ADI:私有協議的GMSL將向公有協議轉變 3. TI:工業和汽車有兩套SerDes解決方案 4. Microchip:推出通用協議SerDes芯片 5. 羅姆:主要針對汽車領域 6. 國產SerDes芯…

大事件項目記錄4-用戶接口開發-更新用戶基本信息

4)更新用戶基本信息。 UserController.java: UserMapper.java: Update("update user set nickname #{nickname},email #{email},update_time #{updateTime} where id #{id}")void update(User user); UserServiceInterface…

Transformer結構--輸入編碼(BPE,PE)

在Transformer結構中,輸入編碼是模型處理文本數據的關鍵步驟,其中**BPE(Byte Pair Encoding,字節對編碼)和PE(Positional Encoding,位置編碼)**是兩種重要的編碼方式,它們…

Confluence-測試用例設計指導方法

測試經驗知識庫 典型的測試場景驗證點各個項目有價值的經驗和測試點 測試經驗知識庫 - 草稿測試用例執行量化指導建議 何時需要進行全量測試和如何定義和執行測試用例量的一些建議和標準 端對端(E2E)測試用例設計指導方案 在測試行業中,端到端…

淺析JVM

一、JVM運行流程 如圖: JVM由四個部分構成: 1.類加載器 加載類文件到內存2.運行時數據區 寫的程序需要加載到這里才能運行3.執行引擎 負責解釋命令,提交操作系統執行4.本地接口 融合不同編程語言為java所用,如Java程序驅動打印…

多個 Job 并發運行時共享配置文件導致上下文污染,固化 Jenkins Job 上下文

基于 context.py 固化 Jenkins Job 上下文的完整方案,適用于你當前的工作流(Python Jenkins Pipeline),解決: 多個 Job 并發運行時共享配置文件導致上下文污染;讀取環境變量或 JSON 文件時被其他 Job 修改…

簡木易支付系統 功能齊全,對接接口超多

簡木易支付系統,作為一款引領行業潮流的卓越支付解決方案,依托先進的 PHP MySQL 技術架構精心打造。在開發過程中,它巧妙運用了功能強大的 ThinkPHP8 框架,完美融合前端主流技術 Vue、Element 以及 Layuiadmin,共同鑄…

【軟考高項論文】信息系統項目的人力資源管理

摘要 本文圍繞信息系統項目的人力資源管理展開論述。以我在2024年參與的為大型國有企業構建供應鏈管理系統項目為例,闡述了項目人力資源管理的主要流程,包括規劃、組建、建設和管理團隊四個過程,以及所運用的工具和理論。同時,分…

【EI會議征稿】東北大學主辦第三屆機器視覺、圖像處理與影像技術國際會議(MVIPIT 2025)

一、會議信息 大會官網:www.mvipit.org 官方郵箱:mvipit163.com 會議地點:遼寧沈陽 主辦單位:東北大學 會議時間:2025 年 9 月 27 日-9 月 29 日 二、征稿主題 集中但不限于“機器視覺、圖像處理與影像技術”等其…

從零開始的云計算生活——第二十三天,稍作休息,Tomcat

目錄 一.故事背景 二.Tomcat概述 1、Tomcat介紹 2、Tomcat歷史 二、Tomcat原理分析 1、Http工作原理 2、Tomcat整體架構 3、Coyote連接器架構 4、Catalina容器架構 5、Jasper處理流程 6、JSP編譯過程 7、Tomcat啟動流程 8、Tomcat請求處理流程 三、Tomcat安裝與配…

幾種基于Doherty結構的GAN氮化鎵功放設計方法介紹

功率放大器是現代無線通信系統中最重要的組件之一。理想情況下,它們能夠以高線性度和高效率提供高輸出功率。但通常在這三個關鍵的功率放大器性能參數之間需要進行權衡取舍,而且具有最高輸出功率和線性度的放大器往往會犧牲效率。 在支持寬帶寬和高數據…