分类问题
分类是一种有监督的学习(有标签,有输入有输出的一种组合),输出可以是布尔值(二元分类0/1,好/坏,男/女)或整数(多类:01234,狮子猫狗…)
分类问题 = 函数 ,输入是它的属性(身高、体重、发色等),输出是分类的结果
学习(训练)的过程是有指导的,指导的就是数据的标签,形成一种更加抽象的表达模型,当再次遇到的时候可以进行判断。
贝叶斯定理 (Bayes’ Theorem)
贝叶斯定理是概率论中的一个重要定理,它描述了在已知一些条件下,某事件的概率。贝叶斯定理是理解条件概率和做出概率推断的基础。
公式
贝叶斯定理的数学表达式如下:
P ( A ∣ B ) = P ( B ∣ A ) ⋅ P ( A ) P ( B ) P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} P(A∣B)=P(B)P(B∣A)⋅P(A)
其中:
- P ( A ∣ B ) P(A|B) P(A∣B) 是在事件 B 发生的情况下事件 A 发生的条件概率。
- P ( B ∣ A ) P(B|A) P(B∣A) 是在事件 A 发生的情况下事件 B 发生的条件概率。
- P ( A ) P(A) P(A) 和 P ( B ) P(B) P(B) 分别是事件 A 和事件 B 的边缘概率。
应用
贝叶斯定理在多个领域都有应用,包括统计推断、机器学习、医疗诊断等。
朴素贝叶斯分类器 (Naive Bayes Classifier)
朴素贝叶斯分类器是一种基于贝叶斯定理的简单概率分类器,它假设特征之间相互独立。
基本原理
朴素贝叶斯分类器的目标是找到给定特征后某类别的最大概率,即:
P ( C k ∣ x 1 , . . . , x n ) P(C_k | x_1, ..., x_n) P(Ck∣x1,...,xn)
根据贝叶斯定理,这个条件概率可以表达为:
P ( C k ∣ x 1 , . . . , x n ) = P ( x 1 , . . . , x n ∣ C k ) ⋅ P ( C k ) P ( x 1 , . . . , x n ) P(C_k | x_1, ..., x_n) = \frac{P(x_1, ..., x_n | C_k) \cdot P(C_k)}{P(x_1, ..., x_n)} P(Ck∣x1,...,xn)=P(x1,...,xn)P(x1,...,xn∣Ck)⋅P(Ck)
由于朴素贝叶斯假设特征之间相互独立,因此可以简化为:
P ( C k ∣ x 1 , . . . , x n ) = P ( C k ) ⋅ ∏ i = 1 n P ( x i ∣ C k ) P ( x 1 , . . . , x n ) P(C_k | x_1, ..., x_n) = \frac{P(C_k) \cdot \prod_{i=1}^{n} P(x_i | C_k)}{P(x_1, ..., x_n)} P(Ck∣x1,...,xn)=P(x1,...,xn)P(Ck)⋅∏i=1nP(xi∣Ck)
应用
朴素贝叶斯分类器广泛应用于文本分类、垃圾邮件检测、情感分析等领域。
优点和缺点
-
优点:
- 简单且易于实现。
- 在大量特征下仍然有效。
- 即使特征依赖的假设不完全成立,也能表现良好。
-
缺点:
- 特征相互独立的假设在实际中往往不成立。
- 对于有输入变量为零的类别,概率估计可能会出问题(零频率问题)。
什么是独立
定义:两个随机变量 X 和 Y 是独立的,当且仅当对于所有的 x 和 y,它们的联合概率分布等于它们各自边缘概率分布的乘积
P(X=x,Y=y)=P(X=x)⋅P(Y=y)
例子
假设我们有两个骰子:一个红色的和一个绿色的。我们把红色骰子掷出的点数记作随机变量 X,绿色骰子掷出的点数记作随机变量 Y。在这个例子中,X 和 Y 是独立的,因为红色骰子掷出某个点数的概率不依赖于绿色骰子掷出的点数,反之亦然。
举例:假如调查出的比率直观上表明男性的肺癌的概率是大于女性的,你会认为得肺癌和性别是不独立的。但是假设无论男女只要吸烟就会得肺癌,并不是说男性有更大的几率得肺癌,而是男性中是吸烟者的概率要大于女性,所以在你一直这个条件下,得肺癌和吸烟是相关的,而和性别是独立的。
Independent ≠ Uncorrelated 独立 不等于 不相关
它们虽然在某些情况下可以相互联系,但在数学上并不等价。
不相关(Un-correlation)
两个随机变量不相关,是指它们之间没有线性关系。不相关的数学定义是指两个随机变量的协方差为零。
如果两个随机变量 X X X 和 Y Y Y 不相关,它们的协方差 C o v ( X , Y ) Cov(X, Y) Cov(X,Y) 为零:
C o v ( X , Y ) = E [ ( X − E [ X ] ) ( Y − E [ Y ] ) ] = 0 Cov(X, Y) = E[(X - E[X])(Y - E[Y])] = 0 Cov(X,Y)=E[(X−E[X])(Y−E[Y])]=0
这里, E [ X ] E[X] E[X] 和 E [ Y ] E[Y] E[Y] 分别是 X X X 和 Y Y Y 的期望值。
独立(Independence)
两个随机变量独立,是指一个随机变量的取值不影响另一个随机变量的概率分布。独立性的数学定义是指两个随机变量的联合概率分布等于它们各自概率分布的乘积。
如果两个随机变量 X X X 和 Y Y Y 独立,那么它们的联合概率分布函数 P ( X , Y ) P(X, Y) P(X,Y) 等于 P ( X ) P(X) P(X) 和 P ( Y ) P(Y) P(Y) 的乘积:
P ( X , Y ) = P ( X ) P ( Y ) P(X, Y) = P(X)P(Y) P(X,Y)=P(X)P(Y)
区别与联系
- 独立一定不相关:如果两个随机变量独立,那么它们一定不相关。因为独立意味着它们之间没有任何关系,包括线性关系。
- 不相关不一定独立:如果两个随机变量不相关,它们可能不独立。不相关仅仅意味着它们之间没有线性关系,但可能存在其他类型的关系。
示例
考虑两个随机变量 X X X 和 Y Y Y,其中 Y = X 2 Y = X^2 Y=X2。如果 X X X 是一个以零为中心的随机变量(比如标准正态分布),那么 C o v ( X , Y ) = 0 Cov(X, Y) = 0 Cov(X,Y)=0,即 X X X 和 Y Y Y 不相关。但 Y Y Y 的值显然依赖于 X X X 的值,因此 X X X 和 Y Y Y 不是独立的。
决策树
信息增益 (Information Gain)
信息增益是决策树算法中用于特征选择的一个重要指标,它基于信息论的概念。信息增益表示在知道特征 A 的信息后使得类 Y 的信息不确定性减少的程度。
基本概念
-
熵 (Entropy):熵可以被视为系统不确定性的度量。熵值高表示系统的不确定性高,信息内容丰富;熵值低则表示系统的不确定性低,信息内容较少。
H ( Y ) = − ∑ i = 1 n P ( y i ) log 2 P ( y i ) H(Y) = - \sum_{i=1}^{n} P(y_i) \log_2 P(y_i) H(Y)=−i=1∑nP(yi)log2P(yi)
其中, P ( y i ) P(y_i) P(yi) 是类别 y i y_i yi 在数据集中出现的概率, n n n 是类别的数量。
-
条件熵 (Conditional Entropy):在已知特征 A 的情况下,类 Y 的熵。
H ( Y ∣ A ) = − ∑ j = 1 m P ( a j ) ∑ i = 1 n P ( y i ∣ a j ) log 2 P ( y i ∣ a j ) H(Y|A) = - \sum_{j=1}^{m} P(a_j) \sum_{i=1}^{n} P(y_i|a_j) \log_2 P(y_i|a_j) H(Y∣A)=−j=1∑mP(aj)i=1∑nP(yi∣aj)log2P(yi∣aj)
其中, P ( a j ) P(a_j) P(aj) 是特征 A 的第 j j j 个值的概率, P ( y i ∣ a j ) P(y_i|a_j) P(yi∣aj) 是在特征 A 的第 j j j 个值下,类别 y i y_i yi 的条件概率, m m m 是特征 A 的不同值的数量。
信息增益计算
信息增益是通过比较数据集的原始熵和按特征 A 分割后的新熵之间的差来计算的。特征 A 对于数据集 D 的信息增益定义为:
I G ( D , A ) = H ( D ) − H ( D ∣ A ) IG(D, A) = H(D) - H(D|A) IG(D,A)=H(D)−H(D∣A)
其中, H ( D ) H(D) H(D) 是数据集 D 的熵, H ( D ∣ A ) H(D|A) H(D∣A) 是给定特征 A 后数据集 D 的条件熵。
信息增益(ID3)的缺点:
- 不适合解决带有id类似的稀疏的特征
- 进而提出信息增益率:解决ID3的问题
- 遇到连续值,进行离散化操作
决策树的构建过程:
决策树是一种常用的机器学习方法,用于分类和回归。它通过学习简单的决策规则从数据特征中进行推断。
-
选择最佳分割特征:
在每个节点,选择最佳分割特征。这通常基于某种准则,如信息增益(ID3算法)、信息增益率(C4.5算法)或基尼不纯度(CART算法)。
-
信息增益:选择使得信息增益最大的特征。信息增益定义为:
I G ( D , A ) = H ( D ) − ∑ v ∈ V a l u e s ( A ) ∣ D v ∣ ∣ D ∣ H ( D v ) IG(D, A) = H(D) - \sum_{v \in Values(A)} \frac{|D_v|}{|D|} H(D_v) IG(D,A)=H(D)−v∈Values(A)∑∣D∣∣Dv∣H(Dv)
其中, H ( D ) H(D) H(D) 是数据集 D D D 的信息熵, D v D_v Dv 是特征 A A A 的值为 v v v 的子集, V a l u e s ( A ) Values(A) Values(A) 是特征 A A A 的所有可能的值。
-
-
创建决策节点:
使用选定的特征创建决策节点。每个节点对应特征的一个可能的值。
-
递归构建子树:
对每个子集递归重复上述过程,直到满足停止条件(如所有样本属于同一类别、达到预设的深度限制等)。
以下是使用 Python 的 scikit-learn
库构建决策树分类器的示例代码:
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
# 载入鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# 创建决策树分类器实例
clf = DecisionTreeClassifier()
# 训练模型
clf.fit(X, y)
# 使用模型进行预测
predictions = clf.predict(X)
过拟合 (Overfitting)
原因
- 模型复杂度过高:如果模型太复杂,它可能会“学习”到训练数据中的噪声,而不是底层的数据模式。
- 训练数据量不足:如果训练数据不够多,模型可能无法泛化到新数据。
- 数据噪声过大:如果训练数据中的噪声太多,模型可能会学习到这些噪声而不是数据的真实模式。
检测过拟合
一种常见的方法是比较模型在训练数据集和验证数据集上的表现。如果模型在训练数据上表现得很好,但在验证数据上表现较差,则可能发生了过拟合。
解决方案
- 要控制树的规模(深度有范围控制)
- 剪枝(想让其自由生长,最后进行修剪),提高泛化能力
剪枝(其实是合并):
剪枝类型
- 预剪枝(Pre-Pruning):在决策树完全生成之前停止树的生长。可以通过限制树的最大深度、要求一个节点中的最小样本数或者设定一个信息增益的阈值来实现。
- 后剪枝(Post-Pruning):首先构建完整的决策树,然后自底向上评估是否有必要将子树替换为叶节点。
后剪枝(Post-Pruning)
公式
R α ( T ) = R ( T ) + α ∣ T l ∣ R_{\alpha}(T) = R(T) + \alpha |{T_l}| Rα(T)=R(T)+α∣Tl∣
其中,
- R ( T ) R(T) R(T) 是树 T T T 对训练数据的总误差(例如,分类错误的数量)。
- ∣ T l ∣ |{T_l}| ∣Tl∣ 是树 T T T 中的叶节点数量。
- α \alpha α 是控制剪枝程度的非负参数,较大的 α \alpha α 值会导致更多的剪枝。
剪枝过程
- 树的构建:首先构建决策树直到每个叶节点都是纯的(即,每个叶节点中的所有样本都属于同一类)。
- 计算每个节点的有效性:对于树中的每个内部节点,计算如果将该节点替换为叶节点,会带来多少增加的误差。
- 剪枝:自底向上地考虑每个内部节点,如果移除该节点(将其替换为叶节点)并将其子树合并为单个节点能够降低 R α ( T ) R_{\alpha}(T) Rα(T),则进行剪枝。