機器學習概述與 KNN 算法詳解

機器學習概述與 KNN 算法詳解

引言

在當今數字化時代,機器學習作為人工智能的核心技術,正深刻改變著我們的生活與工作方式。從日常的智能推薦到復雜的醫療診斷,機器學習技術的應用無處不在。本文將從機器學習的基本概念出發,闡述其核心目標,進而聚焦經典算法 ——KNN 算法,深入解析其原理及常用的距離計算方法。

一、機器學習是什么

機器學習是一門讓計算機能夠從數據中自動學習規律,并利用這些規律對未知數據進行預測或決策的學科。它不同于傳統的編程方式(通過人工編寫固定規則完成任務),而是通過算法從大量數據中 “自主學習”,不斷優化模型,提升處理任務的能力。

例如,在垃圾郵件識別中,機器學習模型會分析大量已標記的郵件數據(包含垃圾郵件和正常郵件),學習垃圾郵件的特征(如特定關鍵詞、發送頻率等),之后便能自動判斷新郵件是否為垃圾郵件。(利用數學中的公式,總結出數據中的規律)

二、機器學習要干什么

機器學習的核心目標是通過對數據的分析與學習,構建能夠解決實際問題的模型,主要實現以下幾類任務:

  • 預測任務:基于歷史數據預測未來趨勢,如股票價格預測、天氣預報等。
  • 分類任務:將數據劃分到已知的類別中,如疾病診斷(判斷患者是否患病)、圖像識別(識別圖片中的物體類別)。
  • 聚類任務:將未知類別的數據按相似度分組,如用戶分群(找出具有相似消費習慣的用戶群體)。
  • 關聯分析:發現數據中隱藏的關聯關系,如 “購買面包的用戶通常會購買牛奶” 這類購物籃分析。(收集數據——建立數學模型訓練——預測)

三、機器學習算法簡介

機器學習算法是實現上述目標的工具,根據學習方式的不同,可大致分為以下幾類:

  • 監督學習:利用帶有標簽的訓練數據(即已知輸入和對應輸出)進行學習,如分類、回歸問題。
  • 無監督學習:處理無標簽數據,通過挖掘數據本身的結構或規律完成任務,如聚類、降維。
  • 半監督學習:結合少量標簽數據和大量無標簽數據進行學習,適用于標簽獲取成本較高的場景。
  • 強化學習:通過與環境的交互,基于 “獎勵” 或 “懲罰” 信號不斷調整行為策略,以實現長期收益最大化,如游戲 AI、機器人控制。

四、KNN 算法詳解

4.1 KNN 算法是什么

KNN(K-Nearest Neighbors,K 近鄰算法)是一種簡單直觀的監督學習算法,其核心思想是 “近朱者赤,近墨者黑”—— 對于一個未知類別的新樣本,通過計算它與訓練集中所有樣本的距離,找出距離最近的 K 個樣本(即 “K 個近鄰”),然后根據這 K 個近鄰的類別,通過多數投票法(分類任務)或平均值法(回歸任務)確定新樣本的類別或數值。

KNN 算法的關鍵要素

  • K 值的選擇:K 值過小,模型易受噪聲影響,泛化能力差;K 值過大,計算成本增加,可能忽略局部特征。
  • 距離度量:不同的距離計算方式會影響 “近鄰” 的判斷,需根據數據特點選擇。

KNN 算法的優缺點

  • 優點:原理簡單,易于實現,對異常值不敏感(當 K 較大時)。
  • 缺點:計算復雜度高(需與所有樣本計算距離),對高維數據不友好(“維度災難”)。

KNN

研究方向——1.回歸 2.分類

示意圖:假設有兩類數據(紅色三角形、藍色圓形),對于新樣本(綠色正方形),當 K=3 時,最近的 3 個樣本中有 2 個藍色圓形,因此新樣本被判定為藍色圓形類別。

五、兩點之間的 9 種距離計算方法

設兩個 n 維樣本點分別為\(A(x_1,x_2,...,x_n)\)和\(B(y_1,y_2,...,y_n)\),以下為 9 種常用距離的計算方式:

距離名稱定義計算公式適用場景
1. 歐氏距離(Euclidean Distance)最常用的距離度量,衡量兩點在 n 維空間中的直線距離\(d(A,B)=\sqrt{\sum_{i=1}^{n}(x_i-y_i)^2}\)適用于連續型數據,且各維度單位一致的場景(如身高、體重等)
2. 曼哈頓距離(Manhattan Distance)衡量兩點在坐標軸上的絕對距離之和,類似城市中沿街道行走的距離\(d(A,B)=\sum_{i=1}^{n}|x_i-y_i|\)適用于高維數據或關注坐標軸方向差異的場景(如路徑規劃)
3. 切比雪夫距離(Chebyshev Distance)衡量兩點在各維度上坐標差值的最大值\(d(A,B)=\max(|x_i-y_i|)\)適用于需關注最大差異維度的場景(如棋盤上的步數計算)
4. 閔可夫斯基距離(Minkowski Distance)歐氏距離和曼哈頓距離的推廣,通過參數 p 控制距離形式\(d(A,B)=(\sum_{i=1}^{n}|x_i-y_i|^p)^{\frac{1}{p}}\)當 p=1 時為曼哈頓距離,p=2 時為歐氏距離,靈活性高
5. 標準化歐氏距離(Standardized Euclidean Distance)對數據標準化后計算的歐氏距離,消除維度單位差異影響\(d(A,B)=\sqrt{\sum_{i=1}^{n}(\frac{x_i-y_i}{s_i})^2}\),其中\(s_i\)為第 i 維數據的標準差適用于各維度單位不同或方差差異大的數據(如身高 cm 與體重 kg)
6. 馬氏距離(Mahalanobis Distance)考慮數據分布的距離,消除維度相關性和單位影響\(d(A,B)=\sqrt{(A-B)^T\Sigma^{-1}(A-B)}\),其中\(\Sigma\)為樣本協方差矩陣適用于存在多重共線性的數據(如不同特征間有相關性的場景)
7. 余弦距離(Cosine Distance)衡量兩向量的夾角余弦值,側重方向而非長度\(d(A,B)=1-\frac{\sum_{i=1}^{n}x_iy_i}{\sqrt{\sum_{i=1}^{n}x_i^2}\sqrt{\sum_{i=1}^{n}y_i^2}}\)適用于文本分類、圖像檢索等關注特征方向的高維數據
8. 漢明距離(Hamming Distance)衡量兩個等長字符串中對應位置字符不同的數量(離散特征)若為二進制數據,\(d(A,B)=\sum_{i=1}^{n}|x_i-y_i|\)(\(x_i,y_i\)為 0 或 1)適用于字符串匹配、二進制數據分類(如 DNA 序列比對)
9. 杰卡德距離(Jaccard Distance)基于杰卡德相似系數的距離,衡量兩個集合的差異程度\(d(A,B)=1-\frac{|A\cap B|}{|A\cup B|}\),其中\(|A\cap B|\)為交集元素數,\(|A\cup B|\)為并集元素數適用于集合型數據(如用戶興趣標簽、物品特征集合)

總結

機器學習通過數據驅動的方式實現了計算機的 “自主學習”,而 KNN 算法作為經典的機器學習算法,憑借其簡單直觀的原理在分類、回歸任務中得到廣泛應用。理解 KNN 算法的核心 —— 距離度量,對于正確應用該算法至關重要。在實際場景中,需根據數據特點選擇合適的距離計算方法,以提升模型性能。隨著技術的發展,機器學習算法將持續優化,為更多領域提供智能化解決方案。

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

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

相關文章

Java EE前端技術編程腳本語言JavaScript

-CoderOilStation(程序員編程助手科技股份責任有限公司)Java EE前端技術編程腳本語言JavaScript低代碼編程技術編寫少量的代碼規則。JavaScript腳本編程語言具體細節配置方式編程。前端技術過渡web3.0企業數字化。Java Service Page (JSP) JavaEE jdk6.5 發布企業應用版本Java研…

Docker+Kubernetes 實戰:數據模型的彈性伸縮與高可用部署方案

在生產環境中,數據模型的部署面臨雙重挑戰:一方面要應對流量波動(如電商大促期間預測接口調用量激增 10 倍),另一方面需保證服務零中斷(金融風控模型 downtime 每增加 1 分鐘可能導致數十萬元損失)。 本文基于實際項目經驗,詳細講解如何通過 Docker 容器化與 Kubernet…

vue3【組件封裝】頭像裁剪 S-avatar.vue

最終效果 技術要點 圖片裁剪 安裝依賴 vue-cropper npm install vue-croppernext專用于vue3 項目的圖片裁剪&#xff0c;詳細使用參考官方文檔 頁面使用 import "vue-cropper/dist/index.css"; import { VueCropper } from "vue-cropper";<vue-crop…

銅金礦數據分組優化系統設計與實現

銅金礦數據分組優化系統設計與實現 1. 項目概述 本項目旨在開發一個Python程序,用于根據給定的四組分組規則,優化包含金噸、干噸和銅單價等信息的Excel數據分組,以最大化總金額。系統需要處理的核心計算是每條數據的銅貨值,其公式為:結算銅金噸 銅單價 (價格系數 + 獎…

Python動態規劃:從基礎到高階優化的全面指南(3)

七、動態規劃性能優化實戰7.1 矩陣快速冪優化def matrix_mult(A, B):"""矩陣乘法"""n len(A)m len(B[0])p len(B)C [[0]*m for _ in range(n)]for i in range(n):for k in range(p):if A[i][k]:for j in range(m):C[i][j] A[i][k] * B[k][j…

海外紅人營銷的下一站:APP出海如何布局虛擬網紅與UGC生態?

在全球移動互聯網競爭日益激烈的今天&#xff0c;APP出海推廣的重心正從傳統流量采買和真人KOL合作&#xff0c;逐步向更具未來感的方向演進。虛擬網紅、AI生成內容以及用戶生成內容的融合&#xff0c;正為海外紅人營銷注入全新活力。這不僅是技術革新&#xff0c;更是用戶行為…

CentOS網卡未被托管解決記錄

VMWare掛起關機&#xff0c;又重啟后&#xff0c;出現一些很奇怪的問題。 我的幾臺CentOS的網卡都不見了&#xff0c;顯示網卡未被托管 [rootlocalhost ~]# nmcli device status DEVICE TYPE STATE CONNECTION virbr0 bridge 未托管 -- ens33 …

Node.js 中的內置模板path

1. path的作用&#xff1a;path 是 Node.js 中的一個內置模塊&#xff0c;用于處理文件和目錄路徑。它提供了一些工具來處理路徑字符串&#xff0c;確保路徑操作跨平臺兼容&#xff08;Windows 和 Unix 風格的路徑分隔符&#xff09;2.path的常用方法path.join()和數組的join方…

重生之我在暑假學習微服務第三天《Docker-上篇》

個人主頁&#xff1a;VON文章所屬專欄&#xff1a;微服務系列文章鏈接&#xff1a;重生之我在暑假學習微服務第一天《MybatisPlus-上篇》-CSDN博客重生之我在暑假學習微服務第二天《MybatisPlus-下篇》-CSDN博客時間&#xff1a;每天12點前準時更新 特別聲明&#xff1a;本篇文…

【硬件】LT3763中文手冊

目錄 1.簡介 1.1 特點 1.2 簡述 1.3 典型原理圖 1.4 絕對最大額定值 2.電氣特性 3.引腳功能 4.框圖 4.1 設計電感電流 4.2 電感選擇 4.3 開關MOSFET選擇 4.4 輸入電容選擇 4.5 輸出電容選擇 4.6 CBOOST電容選擇 4.7 INTVCC電容器選擇 4.8 Soft-Start 4.9 輸出電流…

【計算機科學與應用】基于多域變換的視頻水印嵌入算法研究

導讀&#xff1a; 為提升視頻水印在版權保護中的實際應用效果&#xff0c;本文提出一種基于多域變換的視頻水印嵌入算法。該算法結合離散小波變換(Discrete Wavelet Transform, DWT)與離散余弦變換(Discrete Cosine Transformation, DCT)&#xff0c;利用其在時頻域分析與能量…

Axios基本使用

介紹 Axios 是一個基于promise網絡請求庫&#xff0c;作用于node.js和瀏覽器中 特性 從瀏覽器創建 XMLHttpRequests從 node.js 創建 http 請求支持 Promise API攔截請求和響應轉換請求和響應數據取消請求自動轉換JSON數據客戶端支持防御XSRF 安裝 項目中 npm install axi…

【大模型LLM】梯度累積(Gradient Accumulation)原理詳解

梯度累積&#xff08;Gradient Accumulation&#xff09;原理詳解 梯度累積是一種在深度學習訓練中常用的技術&#xff0c;特別適用于顯存有限但希望使用較大批量大小&#xff08;batch size&#xff09;的情況。通過梯度累積&#xff0c;可以在不增加單個批次大小的情況下模擬…

阿里云Ubuntu 22.04 ssh隔一段時間自動斷開的解決方法

在使用ssh連接阿里云ubuntu22.04隔一段時間之后就自動斷開&#xff0c;很影響體驗&#xff0c;按照如下配置就可以解決vim /etc/ssh/sshd_config

R中匹配函數

在 R 中&#xff0c;字符串匹配是一個常見的任務&#xff0c;可以使用正則表達式或非正則表達式的方法來完成。以下是對這些方法的總結&#xff0c;包括在向量和數據框中的應用。 正則表達式匹配 常用函數grepl&#xff1a; 功能&#xff1a;檢查向量中的每個元素是否匹配某個正…

Ubuntu服務器上JSP運行緩慢怎么辦?全面排查與優化方案

隨著企業系統越來越多地部署在Linux平臺上&#xff0c;Ubuntu成為JSP Web系統常見的部署環境。但不少開發者會遇到一個共同的問題&#xff1a;在Ubuntu服務器上運行的JSP項目訪問緩慢、頁面加載時間長&#xff0c;甚至出現卡頓現象。這類問題如果不及時解決&#xff0c;容易導致…

web刷題

[極客大挑戰 2019]RCE ME 打開環境&#xff0c;代碼邏輯還是很簡單的 思路是傳參code參數&#xff0c;一般傳參shell然后用蟻劍連接看flag&#xff0c;但是這題做了之后就會發現思路是沒錯但是這題多了一些驗證&#xff0c;這題就是無字符rce&#xff0c;可以考慮用取反&…

FFmpeg+javacpp中FFmpegFrameGrabber

FFmpegjavacpp中FFmpegFrameGrabber1、FFmpegFrameGrabber1.1 Demo使用1.2 音頻相關1.3 視頻相關2、Frame屬性2.1 視頻幀屬性2.2 音頻幀屬性2.3 音頻視頻區分JavaCV 1.5.12 API JavaCPP Presets for FFmpeg 7.1.1-1.5.12 API1、FFmpegFrameGrabber org\bytedeco\javacv\FFmpeg…

1-FPGA的LUT理解

FPGA的LUT理解 FPGA的4輸入LUT中&#xff0c;SRAM存儲的16位二進制數&#xff08;如 0110100110010110&#xff09;直接對應真值表的輸出值。下面通過具體例子詳細解釋其含義&#xff1a; 1. 4輸入LUT 4輸入LUT的本質是一個161的SRAM&#xff0c;它通過存儲真值表的方式實現任意…

Vue2文件上傳相關

導入彈窗<template><el-dialog:title"title":visible.sync"fileUploadVisible"append-to-bodyclose-on-click-modalclose-on-press-escapewidth"420px"><div v-if"showDatePicker">選擇時間&#xff1a;<el-date…