笔记内容包含常见的经典机器学习中遇到的一些概念,每个章节的内容都可独立观看,目标是对每个机器学习概念给出严谨的推导或适当的例子进行说明
极大似然估计
似然函数是用真实数据来拟合理论模型,首先要假设数据服从某一分布 ,对于真实数据 ,要满足 最大,即让真实数据在理论模型的分布下构成的概率尽可能大
举一个扔硬币的例子,在这个例子中,左侧是理论分布,右侧是实验的真实数据,根据实验结果不能反推出理论模型;根据理论模型也不能够说明实验结果就和模型中的概率分布一样,但是我可以找到一个理论分布的参数,让真实数据的分布概率尽可能和理论分布一致,这个过程就是找似然函数的过程,求得理论分布参数的过程就是求极大似然估计的过程
Example
- 以 logistic 回归为例:
- 目标是最大化似然函数:
- 是一个从一个概率分布得到的概率, 是输入的真实数据, 代表整个神经网络的权重参数, 表示神经网络输出的概率
- 类比上述抛硬币过程,由 的标签可知, 的分布符合伯努利分布 ,因此最后的 可以被转换为 ,通过取对数 就可以求得最后要优化的损失函数为:
KL 散度
KL散度(Kullback-Leibler divergence),可以以称作相对熵(relative entropy)或信息散度(information divergence)。
KL散度的理论意义在于度量两个概率分布之间的差异程度,当KL散度越大的时候,说明两者的差异程度越大;而当KL散度小的时候,则说明两者的差异程度小。如果两者相同的话,则该KL散度应该为0。
现有两个连续随机变量 和 ,它们对于的概率密度函数分别为 和 ,如果我们用 去近似 ,则 KL 散度可以表示为:
- KL 散度的性质:
- 非负性,即
- 非对称性,即 去近似 不等于 去近似
逆变换采样
如果我有一个服从均匀分布 的随机数,怎么把这个随机数扩展到任意分布 上,并保持随机特性呢?
- 使用逆变换采样,先找到分布 的逆概率分布函数,然后将服从 的随机数带入,即可得到对应的 分布上的随机数
Summary
证明: 设分布 的概率分布函数为 , 是一个分布的随机变量,满足 ,其对应的逆概率分布函数为 ,对其随机变量进行变换就是 ,现在要证明随机变量 服从均匀分布 等式两边就是 为均匀分布的定义,因此可以证明 为均匀分布,且逆概率分布函数就是其采样函数
朴素贝叶斯
- 参考资料:
- 《统计学习方法第 2 版》——李航
从统计角度分析,对于给定数据 和标签 预测任务相当于计算 ,将该概率公式用条件概率公式展开可得:
因此 的计算变成了估算 和 ,使用贝叶斯公式可得:
在计算分类时,所以的分类都包含 ,直接可以省略,只需计算
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 | 3 | |
S | M | M | S | S | S | M | M | L | L | L | M | M | L | L | |
-1 | -1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -1 |
Example
根据上表,计算下列概率
对于数据 可得出: 根据两个概率可以得出,应该预测分类为
决策树
- 参考资料:
- 《统计学习方法第 2 版》——李航
- 数据挖掘技术课程
决策树由节点和有向边组成,节点分为内部节点和叶子节点,内部节点表示划分属性,叶子节点是最后的分类结果
下图是决策树算法的主要内容:
信息增益
假设有一组数据,有 n 个不同的属性特征,对任意一个特征 有以下分析:
- 熵的概念 设 X 为一个取有限值的离散随机变量,对整个系统的熵为:,熵越大,随机变量的不确定性就越大,公式中的 表示取离散值 的概率
- 条件熵的概念 条件熵 表示在已知随机变量 的条件下,随机变量 的不确定性
信息增益表示得知特征 的信息而使类 的信息不确定性减少的程度
- 信息增益的定义: 特征 对训练数据集 的信息增益 ,定义为集合 的经验熵 与特征 给定条件下 的经验条件熵 之差,即
Note
上文的“经验”指的是通过统计结果计算熵和条件熵,其思想是极大似然估计
Example
- 计算标签类别的经验熵,熵越小表示数据越稳定:
- 设年龄、有工作、有自己的房子、信贷情况为特征 ,分别计算它们的经验条件熵和信息增益
- 从上面的计算来看,特征 最合适用来划分数据
信息增益比
信息增益偏向于生成分支较多的树,因为分支越多,它的条件熵就可能越低
为了修正这个问题,我们需要使用信息增益比:
,其中 表示特征 的经验熵(有点像对信息增益做了一次标准化),
基尼指数
适用于分类树的生成,能够决定改特征的最优二值切分点
分类问题中,假设有 个类,样本点属于第 类的概率为 ,则概率分布的基尼指数定义为
对于二分类问题,可简化为
基尼指数和熵的概念有异曲同工之妙,当划分的类概率为 时,与其不是 的概率 对系统的熵为 ,基尼指数的表示更加简单,但也反映了所包含的信息量
对于给定样本的集合 ,其基尼指数为
在特征 的条件下,集合 的基尼指数定义为
剪枝算法
剪枝算法=损失函数+正则化惩罚项
设树 T 的叶结点个数为 , 是树 的叶结点,该叶结点有 个样本点,其中 类的样本点有 个,, 为叶结点 上的经验熵, 为参数,则决策树学习的损失函数可以定义为:
其中经验熵为:
如果将第一项记为 ,则公式可以简化为:
Note
算法步骤:
- 计算每个节点的经验熵
- 递归地从叶节点向上回缩 比较回缩 与不回缩 的剪枝损失,然后进行比较 如果 ,则进行剪枝操作
- 重复步骤 2,直到不能继续为止
Attention
优点:可以从结构上简化决策树,提高泛化能力 缺点:简化决策树容易造成欠拟合,不能保证划分准确性的提升
在进行剪枝时,我们可以利用数据集的验证集,进行预剪枝/后剪枝
- 预剪枝:预剪枝就是在构造决策树的过程中,先对每个结点在划分前进行估计,若果当前结点的划分不能带来决策树模型泛化性能的提升,则不对当前结点进行划分并且将当前结点标记为叶结点
- 后剪枝:后剪枝就是先把整颗决策树构造完毕,然后自底向上的对非叶结点进行考察,若将该结点对应的子树换为叶结点能够带来泛化性能的提升,则把该子树替换为叶结点
最小二乘回归树
假设已将输入的特征空间划分为 个单元 ,并且在每个单元 上有一个固定的输出值 ,于是回归树模型可以表示为
其中 为指示函数,上面的式子表示输入 x 在回归树的划分 下最终有一个唯一的输出
我们使用平方误差 来表示回归树对于训练数据的预测误差,我们的目标是 ,并取
看电视时长 | 婚姻状况 | 职业 | 年龄 |
---|---|---|---|
3 | 未婚 | 学生 | 12 |
4 | 未婚 | 学生 | 18 |
2 | 已婚 | 老师 | 26 |
5 | 已婚 | 上班族 | 47 |
2.5 | 已婚 | 上班族 | 36 |
3.5 | 未婚 | 老师 | 29 |
4 | 已婚 | 学生 | 21 |
Example
下面我们将利用上面的数据对年龄进行预测 首先将 的属性选为职业,则有三种划分情况{“老师”,“学生”}、{“上班族”}以及{“老师”,“上班族”}、{“学生”},最后一种为{“学生”,“上班族”}、{“老师”}
- 第一种情况 R1={“学生”},R2={“老师”,“上班族”} 最小平方误差为:
- R1={“老师”},R2={“学生”,“上班族”} 最小平方误差为:
- 划分情况为 R1={“上班族”},R2={“学生”,“老师”} 最小平方误差为:
由上面的分析可知,应该选择第三种划分
CART
ID3 和 C4.5 都是基于信息增益的方法,适用于离散特征的分类,不再赘述
CART 生成算法和最小二乘法回归树方法差不多,分别计算出每个特征的最优切分点,然后找到最优特征的最优切分点作为划分的分支
在决策树的剪枝算法 中,我们需要考虑代价 和复杂度 两个因素,如果取 就是一棵完整的树,如果取 则是一个单结点树,因此 的取值十分重要,在 CART 中,考虑以下情况:
取 ,其中每一个 都是一个临界值,每个范围 都表示一个树
假如树 T 存在一个子树 ,则
![image.png](https://obsidian-pic-1258776558.cos.ap-nanjing.myqcloud.com/blog/20230605151055.png)
- 剪枝前损失函数为:
- 剪枝后损失函数为: (剪枝后只有一个叶子节点) 存在临界点使得 ,如果 再大一点,剪枝后损失函数的损失值就会小于剪枝前,偏向于进行剪枝,求出这个 临界值就是公式
Summary
从上面的剪枝过程可以看出, 是有嵌套关系的,后者是前者的子树,在搞清楚 的取值过程后,我们需要利用公式求得最优决策树
ensemble 算法
Kmeans、Kmedoid、DBSCAN、系统聚类、谱聚类、PCA 降维、EM 算法