【机器学习】非线性分类算法(上):KNN(基于距离相似度)与朴素(特征独立)贝叶斯(基于概率统计)

在现实世界中,数据的分布往往错综复杂,远非一条直线或一个平面可以划分清楚。例如,判断一封邮件是否为垃圾邮件,涉及到内容、时间、发件人等多种因素的复杂组合。线性分类算法就像用直尺切蛋糕,难以应对蛋糕上复杂的花纹。这时,非线性分类算法就像灵活的雕刻刀,能顺应数据的"纹理"进行精准切割。

本文将深入解析两种经典的非线性分类算法:K近邻算法(KNN)和朴素贝叶斯算法。这两种算法代表了不同的分类思路——基于距离的"邻居投票"和基于概率的"专家判断"。

 

一、K近邻算法(KNN):基于距离的"邻居投票"

1、核心思想:物以类聚

KNN的核心思想非常简单直观:相似的样本应该属于同一类别。就像我们判断一个人的性格时,会参考他周围朋友的特点一样,KNN通过观察新样本的"邻居"来决定它的类别。

数学公式
对于新样本 x x x,找到训练集中距离它最近的 K K K 个邻居,然后采用多数投票决定类别:

y ^ = arg ⁡ max ⁡ c ∑ i ∈ N K ( x ) I ( y i = c ) \hat{y} = \arg\max_{c} \sum_{i \in N_K(x)} \mathbb{I}(y_i = c) y^=argcmaxiNK(x)I(yi=c)

其中,

  • y ^ \hat{y} y^:预测的类别标签
  • arg ⁡ max ⁡ c \arg\max_{c} argmaxc:选择使后面表达式最大的类别 c c c
  • ∑ i ∈ N K ( x ) \sum_{i \in N_K(x)} iNK(x):对 x x x K K K最近邻居求和
  • I ( y i = c ) \mathbb{I}(y_i = c) I(yi=c):指示函数,判断邻居 i i i 是否属于类别 c c c

 

1. 指示函数是一个简单的判断函数:
I ( y i = c ) = { 1 如果  y i = c 0 如果  y i ≠ c \mathbb{I}(y_i = c) = \begin{cases} 1 & \text{如果 } y_i = c \\ 0 & \text{如果 } y_i \neq c \end{cases} I(yi=c)={ 10如果 yi=c如果 yi=c

假设我们有5个邻居,它们的类别分别是:[A, B, A, A, B]

  • 对于类别A: I ( y 1 = A ) = 1 \mathbb{I}(y_1 = A) = 1 I(y1=A)=1, I ( y 2 = A ) = 0 \mathbb{I}(y_2 = A) = 0 I(y2=A)=0, I ( y 3 = A ) = 1 \mathbb{I}(y_3 = A) = 1 I(y3=A)=1, I ( y 4 = A ) = 1 \mathbb{I}(y_4 = A) = 1 I(y4=A)=1, I ( y 5 = A ) = 0 \mathbb{I}(y_5 = A) = 0 I(y5
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值