第一章、绪论
什么是机器学习
用P来评估程序在任务T的性能,如果该程序通过经验E使得T的性能P改善,则称过于T和P,该程序对E进行了学习
监督学习和无监督学习的区别
- 监督学习训练集有标签,通过训练让机器自己找到特征和标签之间的联系,之后面对没有标签的数据时可以自己判断出标签
- 无监督学习训练集只有特征没有标签,由于训练数据中只有特征没有标签,所以就需要机器自己对数据进行聚类分析。
-
监督学习的例子有:分类,回归,决策树
-
无监督学习的例子有:聚类
分类和回归
- 回归与分类的本质联系都是要建立映射关系,都属于监督学习(同)
- 分类算法可以预测离散值,比如图像识别任务,判断一张图片是“猫”“狗”还是“其他动物”,这些类别标签是离散的。
- 回归算法可以预测连续值,比如根据房屋的面积、房间数量、所在位置等因素预测房屋的价格,价格是一个连续的数值。
在训练的时候输入的标签中,分类的标签就是离散的,回归的标签是连续的,才可以保证之后的预测
假设空间和版本空间
假设空间:样本属性可能产生的所有假设的集合
版本空间:与训练集一致的假设的集合
一些数据有标记,一些数据没标记,设计一种方法尽可能充分利用这些数据
- 先用没标记的数据进行无监督学习,将其预测值作为伪标签
- 再将伪标签的数据和有标记的数据一起进行监督学习即可
第二章、模型评估与选择
过拟合和欠拟合
- 过拟合:机器学习能力太强,模型将训练样本自身的特点当作所有样本的一般性质
- 欠拟合:机器学习能力不足,模型尚未学习好训练样本的一般性质
缓解策略
过拟合的缓解策略:
- 降低模型复杂度
- 早停
欠拟合的缓解策略:
- 增加模型复杂度
- 延长训练时间,增加训练轮数
留出法、k折交叉验证法、自助法
留出法:
将数据集分为两个互斥集合,训练集(70%)和测试集(30%)
然后进行模型训练,一般要重复实验,通过结合策略选出最佳结果
k折交叉验证法:
进行k次训练和测试,将数据集分为k个互斥子集,每次选取1个作为测试集,其余k-1个作为训练集,最后对k次测试结果进行汇总处理后得到最终结果
自助法:
对数据集进行重复多次自助抽样来生成多个数据子集,用这些数据子集训练多个模型,最后评估这些模型的性能,得出更稳定的性能估计
训练集、测试集和验证集
来源都是从数据集中取出来的
区别在于用法不同:
- 训练集在于训练模型,使模型学习数据的特征和标签,从而能够对未知数据做出准确的预测
- 验证集可以在训练过程中调整参数
- 测试集用于评估模型的最终性能
训练误差,测试误差,泛化误差
训练误差:模型在训练集上产生的误差,反应模型自身的拟合能力
测试误差:模型在测试集上产生的误差,反应模型对新数据的预测能力
泛化误差:泛化误差是指模型在未知数据上的平均误差,反应模型的泛化能力。它是模型泛化能力的量化指标。泛化误差通常通过理论分析或期望值来定义,表示模型在所有可能的测试数据上的平均误差。在实践中,我们无法直接计算泛化误差,因为它涉及到对所有可能数据的期望。
训练误差小,测试误差不一定小,因为模型可能发生过拟合。
OVO
OVO(One-vs-One)策略是一种在多分类问题中使用的策略
举例说明:
假设有一个数据集包含3个类别(A、B、C)这意味着需要构建3(k(k-1)/2)个分类器,分别是:
- 分类器1:比较类别A和类别B
- 分类器2:比较类别A和类别C
- 分类器3:比较类别B和类别C
每个分类器都专注于区分两个类别,最终的分类结果可以通过投票或其他策略来决定。
类型不平衡的解决办法
类型不平衡指在分类任务中,不同类别样本数量分布不均(多数类和少数类)
例如电诈(绝大部分不是电诈),这样可能把所有全归为非电诈
解决方案:
- 改变错误成本,为不同类比错误分配不同成本,例如少数类分配更大权重,使模型在训练时更加关注少数类的错误
- 选择合使的评估指标(例如查全率和查准率)
第四章、决策树
决策树算法
-
ID3算法(信息增益)
-
C4.5算法(信息增益率)
-
CART (基尼系数)
信息增益怎么算?(案例)
年龄 | 是否购买 |
---|---|
20 | 是 |
25 | 是 |
30 | 否 |
35 | 否 |
40 | 是 |
信息增益公式
信息增益=原始数据的熵-条件熵
会算熵就会算信息增益率
熵的计算公式
$H(x)=−\sum_{i=1}^{n}p_ilog_2p_i$ ( $p_i$指的是不同结果的概率)
-
原始熵:$H(D)=−(\frac{3}{5}log_2\frac{3}{5}+\frac{2}{5}log_2\frac{2}{5})≈0.971$
-
30作为分割点的条件熵:
-
D1:年龄 < 30,包含2个“是”和0个“否” $H(D_1)=−(\frac{2}{2}log_2\frac{2}{2}+\frac{0}{2}log_2\frac{0}{2})=0$
-
D2:年龄 ≥ 30,包含1个“是”和2个“否” $H(D_2)=−(\frac{1}{3}log_2\frac{1}{3}+\frac{2}{3}log_2\frac{2}{3})=0.918$
-
条件熵 $H(D∣f)=\frac{2}{5}H(D_1)+\frac{3}{5}H(D_2)≈0.551$
-
结果
$I(D,f)=H(D)−H(D∣f)=0.971−0.551=0.420$
把所有分割点的信息增益给算出来,选取最大的那个作为划分依据即可
决策树连续值怎么处理
将连续属性从小到大排序,取相邻属性的平均值作为分割点,之后按ID3算法来处理即可
预剪枝和后减枝的优缺点
预剪枝
优点:
- 降低过拟合风险
- 减少训练和测试的开销
缺点:
- 带来了欠拟合风险
后减枝
优点:
- 降低欠拟合风险
缺点:
- 训练开销大
- 带来了过拟合风险
回归树和决策树的特点和区别
特点:都是基于树的结果进行数据划分,叶子节点表示预测结果,非叶子节点表示判断条件
区别:
- 决策树是用于将数据划分为不同类别
- 回归树是用于预测连续的数值
- 决策树的分类标准有(ID3,C4.5,CART)
- 回归树的分类标准有均方差
第五章、神经网络
早停
指在验证集的性能不再有明显提升时停止训练,防止过拟合
第六章、支持向量机
支持向量机的原理
在样本空间中寻找一个超平面,将正负样例分开,并且使正负样例到该超平面的距离最大
核函数原理
在许多问题中,数据往往是线性不可分的,核函数通过将数据映射到高维空间,使得数据线性可分,并且避免显示计算高维空间中的坐标,大大提高计算效率。
向量机改进
如果超平面无法在训练集样本中进行划分,还可以用向量机基本型嘛?如果不可以,改进方法有什么?改进的基本原理是什么?
- 不可以
- 使用核函数映射到一个更高维的特征空间,使其线性可分
- 如果一个训练集是有限维,那末一定存在一个更高维空间使其线性可分
- 使用软间隔,允许一些样本划分错误
- 最小化误差的同时最大化间隔
第七章、贝叶斯分类器
关键假设前提:各属性间互不干扰
主要解决了在有限的训练集上估计p(x,c)的联合概率分布计算p(x|c)的障碍(数据稀疏性,属性组合爆炸等)
数据稀疏性指样本数量太少,根本没有(x,c)这个组合出现
生成式算法:贝叶斯算法之所以是生成式算法,是因为它基于贝叶斯定理,通过已知的先验概率和条件概率来计算后验概率,从而模拟数据的生成过程。
第八章、集成学习
bagging和boosting
bagging通过自助法,生成多个数据集,训练多个集学习器,然后通过投票法或回归法来预测结果。
boosting通过逐步训练多个基学习器,每个基学习器都试图纠正前一个基学习器的错误。
bagging主要是通过降低模型方差,提高模型的稳定性
boosting主要是通过降低模型的偏差,提高模型的拟合能力
随机森林的原理
随机森林的在bagging的基础上,先自助采样得到多个数据集,以然后通过这些数据集以决策树作为基学习器,最后通过结合策略(分类用投票法,回归用平均法)集成最终的学习器
随机森林的随机性体现在哪里
- 自助法的采样随机性
- 样本属性选择的随机性
集成学习的性能
集成学习的性能一定会提升嘛,影响集成学习的关键因素是什么?举一种提高集成学习性能的方法?
- 不一定
- 关键因素:
- 个体学习器的准确性,个体学习器的准确率越高,集成学习的性能越好
- 个体学习器的多样性,个体学习器的多样性越好,集成学习的性能越好
- 提升性能的方法:
- 增加多样性:如利用bagging自助采样
计算
k均值(K-means)算法
初始选择1(1,1)和3(1,2)作为初始点
计算其他点到出生点的距离
序号 | 属性一(x) | 属性二(y) |
---|---|---|
1 | 1 | 1 |
2 | 2 | 1 |
3 | 1 | 2 |
4 | 2 | 2 |
5 | 4 | 3 |
6 | 5 | 3 |
7 | 4 | 4 |
8 | 5 | 4 |
第一轮:
序列 | 距离1 | 距离3 | 分类 |
---|---|---|---|
1 | 0 | 1 | 1 |
2 | 1 | $\sqrt{2}$ | 1 |
3 | 1 | 0 | 3 |
4 | $\sqrt{2}$ | 1 | 3 |
5 | $\sqrt{13}$ | $\sqrt{10}$ | 3 |
6 | $2\sqrt{5}$ | $\sqrt{17}$ | 3 |
7 | $3\sqrt{2}$ | $\sqrt{13}$ | 3 |
8 | 5 | $2\sqrt{5}$ | 3 |
-
{1,2},簇为(1.5,1)
-
{3,4,5,6,7,8},簇为(3.5,3)
第二轮:
序列 | 距离簇1 | 距离簇2 | 分类 |
---|---|---|---|
1 | 0.5 | $\sqrt{10.25}$ | 簇1 |
…… | …… | …… |
- {1,2,3,4}
- {5,6,7,8}
第3轮:
- {1,2,3,4}
- {5,6,7,8}
和第二轮一样,说明收敛,不用往下了,这就是最后结果
贝叶斯
(朴素贝叶斯)试由下表的训练数据学习一个朴素贝叶斯分类器并确定 x =(2, S, T)的类判别结果y。表中X^(1)^, X^(2)^, X^(3)^为特征,Y 为类标记。
样本编号 | $X^{(1)}$ | $X^{(2)}$ | $X^{(3)}$ | $Y$ |
---|---|---|---|---|
1 | 1 | S | T | -1 |
2 | 1 | M | T | -1 |
3 | 1 | M | F | 1 |
4 | 2 | S | F | 1 |
5 | 2 | S | F | -1 |
6 | 1 | L | T | -1 |
7 | 2 | M | F | -1 |
8 | 2 | M | T | 1 |
9 | 3 | L | T | 1 |
10 | 3 | S | F | 1 |
令X = X^(1)^X^(2)^X^(3)^
因为贝叶斯的前提是所有情况相互独立,互不干扰,所以分子可拆,分母就不行了,但分母是一样的,根本就不用算
则P(Y|X) = $\frac{P(X|Y)P(Y)}{P(X)}$=$\frac{P(X^{(1)}|Y)P(X^{(2)}|Y)P(X^{(3)}|Y)P(Y)}{P(X)}$
- Y=1, x =(2, S, T)时
- $P(X^{(1)}|Y)$=$\frac{2}{5}$
- $P(X^{(2)}|Y)$=$\frac{2}{5}$
- $P(X^{(3)}|Y)$=$\frac{2}{5}$
- $P(Y)$=$\frac{1}{2}$
- 分子为$\frac{4}{125}$
- Y=-1时
- $P(X^{(1)}|Y)$=$\frac{2}{5}$
- $P(X^{(2)}|Y)$=$\frac{2}{5}$
- $P(X^{(3)}|Y)$=$\frac{3}{5}$
- $P(Y)$=$\frac{1}{2}$
- 分子为$\frac{6}{125}$
所以朴素贝叶斯预测器应该预测为-1
查全率和查准率
-
查全率指在所有小偷中,抓住了几个
-
查准率指抓住的人中,有几个是小偷
计算两个保安抓小偷的查准率和查全率,并讨论在要求尽可能抓到所有小偷的情况下,谁的表现更好?
A保安 | 实际上是小偷 | 实际上是好人 | 合计 |
---|---|---|---|
抓住的小偷 | 5 | 1 | 6 |
放走的好人 | 15 | 79 | 94 |
合计 | 20 | 80 | 100 |
B保安 | 实际上是小偷 | 实际上是好人 | 合计 |
---|---|---|---|
抓住的小偷 | 10 | 20 | 30 |
放走的好人 | 10 | 60 | 70 |
合计 | 20 | 80 | 100 |
A保安:
- 查准率=5/6
- 查全率=5/20=1/4
B保安:
- 查准率=10/30=1/3
- 查全率=10/20=1/2
"尽可能抓到小偷的情况下"指查全率