【机器学习】分类
文章目录
- 1. 能否用回归解决分类问题
- 2. 生成模型(概率生成)
- 3. 判别模型(逻辑回归)
- 4. 多分类问题
1. 能否用回归解决分类问题
二元分类
- 数据分布不规律,回归函数会尽量减少误差,导致不合理的偏移
- 离分界较远的点会影响划分
- 决策边界偏移:难以找到回归函数,使大部分样本点集中在离散点附近
多元分类
- 使用数值描述类别时,存在问题:相近的数值之间可能有联系,但实际分类之间没有隐含关系
2. 生成模型(概率生成)
确定模型
- 贝叶斯公式:根据先验概率求后验概率
P ( C 1 ∣ x ) = P ( C 1 ) P ( x ∣ C 1 ) P ( C 1 ) P ( x ∣ C 1 ) + P ( C 2 ) P ( x ∣ C 2 ) P(C_1|x) = \frac{P(C_1)P(x|C_1)}{P(C_1)P(x|C_1) + P(C_2)P(x|C_2)} P(C1∣x)=P(C1)P(x∣C1)+P(C2)P(x∣C2)P(C1)P(x∣C1)
-
对于二分类问题,只需判断是否属于分类 1,分类 2 即确定
-
目标是找到拟合分布 P ( x ∣ C 1 ) P(x|C_1) P(x∣C1)和 P ( x ∣ C 2 ) P(x|C_2) P(x∣C2)
评估函数
- 高斯分布:寻找 μ \mu μ 和 Σ \Sigma Σ,使得高斯分布与 x 在 C 中的分布最大匹配
- 分别寻找两个分布 C 1 C1 C1, C 2 C2 C2
找到最优的函数
- 极大似然估计法
- 通过代入所有的 x x x 到高斯分布,计算概率的连乘结果,最大化此结果,确定最优的 μ \mu μ 和 Σ \Sigma Σ。
如何实现分类
- 找到高斯分布后,代入问题模型中,确定后验概率函数,输入 x x x 就能得到分类结果。
优化
- 共用协方差 Σ \Sigma Σ:减少参数,防止过拟合。
- 这时找到的函数将会是一条直线。
3. 判别模型(逻辑回归)
说明
- 当共用协方差时,可以得到如下公式:
P ( C 1 ∣ x ) = σ ( w x + b ) P(C_1|x) = \sigma(wx + b) P(C1∣x)=σ(wx+b)
-
其中, σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1 为 Sigmoid 函数。
-
直接训练 w w w 和 b b b,无需假设高斯分布。
做法
-
确定模型:
f ( x ) = P ( C 1 ∣ x ) = σ ( w x + b ) f(x) = P(C_1|x) = \sigma(wx + b) f(x)=P(C1∣x)=σ(wx+b)
目标是直接找 w w w 和 b b b 来确定后验概率。
-
评估函数:
L ( w , b ) = f w , b ( x 1 ) f w , b ( x 2 ) ( 1 − f w , b ( x 3 ) ) . . . L(w,b)=f_{w,b}(x^1)f_{w,b}(x^2)(1-f_{w,b}(x^3))... L(w,b)=fw,b(x1)fw,b(x2)(1−fw,b(x3))...
此时目标是最大化评估函数。引入交叉熵(Cross-Entropy):
H ( p , q ) = − ∑ p ( x ) ln ( q ( x ) ) H(p,q) = - \sum p(x) \ln(q(x)) H(p,q)=−∑p(x)ln(q(x))- 交叉熵越小,表示两个分布越接近。
进一步损失函数:
− ln L ( w , b ) = − ∑ [ y n ln f w , b ( x n ) + ( 1 − y n ) ln ( 1 − f w , b ( x n ) ) ] -\ln L(w,b) = - \sum \left[ y^n \ln f_{w,b}(x^n) + (1 - y^n) \ln(1 - f_{w,b}(x^n)) \right] −lnL(w,b)=−∑[ynlnfw,b(xn)+(1−yn)ln(1−fw,b(xn))]
- 目标是最小化损失函数。
-
寻找最优函数
- 使用梯度下降法更新参数:
w t + 1 = w t − η ∑ n [ − ( y n − f w , b ( x n ) ) x n ] w_{t+1} = w_t - \eta \sum_n \left[ -(y^n - f_{w,b}(x^n)) x^n \right] wt+1=wt−ηn∑[−(yn−fw,b(xn))xn]
与线性回归比较
- 逻辑回归中引入了 Sigmoid 函数,输出值范围为 0 到 1。
- 线性回归输出可能是任意实数。
- 逻辑回归的损失函数是交叉熵,而线性回归使用平方误差。
与生成模型比较
- 生成模型假设数据分布符合某个高斯分布。
- 判别模型不做假设,直接学习分类边界(求 w w w 和 b b b)。
- 判别模型通常比生成模型表现好,但在数据不足的情况下,生成模型更为实用。
逻辑回归缺陷
- 逻辑回归无法解决线性不可分问题,需要通过特征转换来处理,这通常是深度学习的核心。
为什么不用平方误差?
-
若用平方误差,损失函数为:
L ( w , b ) = 1 2 ∑ ( y n − f w , b ( x n ) ) 2 L(w,b) = \frac{1}{2} \sum (y^n - f_{w,b}(x^n))^2 L(w,b)=21∑(yn−fw,b(xn))2
梯度为:
d L d w = 2 ( y n − f w , b ( x n ) ) f w , b ( x n ) ( 1 − f w , b ( x n ) ) x n \frac{dL}{dw} = 2(y^n - f_{w,b}(x^n)) f_{w,b}(x^n) (1 - f_{w,b}(x^n)) x^n dwdL=2(yn−fw,b(xn))fw,b(xn)(1−fw,b(xn))xn
-
当 y n = 1 y^n = 1 yn=1 且 f ( x n ) = 1 f(x^n) = 1 f(xn)=1 时,梯度为 0(正常)。
-
当 y n = 1 y^n = 1 yn=1 且 f ( x n ) = 0 f(x^n) = 0 f(xn)=0 时,梯度也为 0(不正常,训练非常缓慢)。
-
结论:使用平方误差损失函数,梯度会在边界附近为零,导致训练速度非常慢。交叉熵的损失函数更适合分类问题。
4. 多分类问题
- 使用 逻辑回归 计算每个类别的概率值,然后通过 Softmax 函数选择最大概率的类别。
- Softmax ( x i ) = e x i ∑ j e x j \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}} Softmax(xi)=∑jexjexi