文章目录
在现实世界中,数据的分布往往错综复杂,远非一条直线或一个平面可以划分清楚。例如,判断一封邮件是否为垃圾邮件,涉及到内容、时间、发件人等多种因素的复杂组合。线性分类算法就像用直尺切蛋糕,难以应对蛋糕上复杂的花纹。这时,非线性分类算法就像灵活的雕刻刀,能顺应数据的"纹理"进行精准切割。
本文将深入解析两种经典的非线性分类算法: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^=argcmaxi∈NK(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)} ∑i∈NK(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

最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



