机器学习概述与 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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…