机器学习笔记:分类问题与概率生成模型详解
ML-notes notes about machine learning 项目地址: https://gitcode.com/gh_mirrors/ml/ML-notes
一、分类问题概述
分类问题是机器学习中最基础也最重要的问题类型之一。它的目标是找到一个函数,能够将输入对象映射到预定义的类别中。以宝可梦属性分类为例,我们需要构建一个分类器,输入一只宝可梦的特征数据,输出它属于18种属性中的哪一种。
1.1 特征数值化
要将宝可梦作为分类器的输入,首先需要将其特征数值化。常用的宝可梦特征包括:
- 总强度(Total Strong)
- 生命值(HP)
- 攻击力(Attack)
- 防御力(Defense)
- 特殊攻击力(Special Attack)
- 特殊防御力(Special Defend)
- 速度(Speed)
这些特征组成一个向量,可以完整描述一只宝可梦的属性。例如皮卡丘可以用[35,55,40,50,50,90]这样的向量表示。
二、分类问题解决方案比较
2.1 回归方法用于分类的局限性
初学者可能会想到用回归方法解决分类问题,例如:
- 对于二分类,让class 1输出1,class 2输出-1
- 测试时,根据输出值接近1还是-1来判断类别
但这种方法存在明显问题:
-
当类别边界附近的点远离理想分界线时,回归模型会为了减小这些点的误差而调整分界线位置,导致分类效果变差。
-
对于多分类问题,简单地将类别编号为1,2,3...会导致模型错误地认为类别之间存在数值上的远近关系。
2.2 理想分类模型的特征
理想的分类模型应具备以下特点:
-
函数模型:包含一个判别函数g(x),当g(x)>0时输出class 1,g(x)<0时输出class 2。
-
损失函数:定义为分类错误的次数,即L(f)=∑δ(f(xⁿ)≠ŷⁿ)。但这种损失函数不可微分,无法直接使用梯度下降优化。
三、概率生成模型(Generative Model)
3.1 基本概念
概率生成模型通过计算样本属于各个类别的概率来进行分类。对于二分类问题,根据贝叶斯公式:
P(C₁|x) = P(C₁)P(x|C₁) / [P(C₁)P(x|C₁) + P(C₂)P(x|C₂)]
其中:
- P(C₁)和P(C₂)是先验概率(Prior)
- P(x|C₁)和P(x|C₂)是类别条件概率
3.2 高斯分布假设
通常假设每个类别的特征服从高斯分布。对于d维特征,高斯分布的概率密度函数为:
fₙ,Σ(x) = (1/(2π)^(d/2)) * (1/|Σ|^(1/2)) * exp[-1/2(x-μ)ᵀΣ⁻¹(x-μ)]
其中:
- μ是均值向量
- Σ是协方差矩阵
3.3 参数估计
使用极大似然估计法估计μ和Σ:
- 均值估计:μ* = (1/N)∑xⁿ
- 协方差估计:Σ* = (1/N)∑(xⁿ-μ*)(xⁿ-μ*)ᵀ
3.4 模型改进
-
共享协方差矩阵:让不同类别共享同一个Σ,可以减少参数数量,防止过拟合。此时决策边界会变成线性的。
-
特征独立性假设(朴素贝叶斯):假设各特征维度相互独立,协方差矩阵为对角矩阵。这进一步减少了参数,但可能增加偏差。
四、后验概率分析
通过数学推导可以发现,当两类共享协方差矩阵时,后验概率可以表示为:
P(C₁|x) = σ(w·x + b)
其中σ(z) = 1/(1+e⁻ᶻ)是sigmoid函数。这说明在这种情况下,决策边界实际上是线性的。
五、分类问题三步骤总结
- 确定模型:选择概率分布形式(如高斯分布)和模型结构
- 评估模型:定义损失函数(如极大似然函数)
- 优化模型:找到使损失函数最优的参数
六、实际应用建议
-
根据特征性质选择合适的概率分布:
- 连续特征:高斯分布
- 二元特征:伯努利分布
- 计数特征:泊松分布等
-
注意模型复杂度与数据量的平衡:
- 简单模型(参数少):偏差大,方差小
- 复杂模型(参数多):偏差小,方差大
-
当特征间相关性较强时,避免使用朴素贝叶斯假设。
概率生成模型为分类问题提供了一种直观的概率解释框架,通过合理选择概率分布和模型结构,可以构建出有效的分类器。理解这些基本原理对于掌握更复杂的分类方法至关重要。
ML-notes notes about machine learning 项目地址: https://gitcode.com/gh_mirrors/ml/ML-notes
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考