18 KiB
machine learning
来源:原 mongodb 集合
t_blog· 整理日期:2026-08-25 分类 ID:2022102117088800000000000001· 排序:10 · 文章数:16
目录
- 第二章 模型评估与选择
- 第一章 绪论
- 第三章 线性模型
- 第四章 决策树
- 第五章 神经网络
- 第七章 贝叶斯分类器
- 第六章 支持向量机
- 第八章 集成学习
- 第十章 降维与度量学习
- 第九章 聚类
- 第十三章 半监督学习
- 第十一章 特征选择与稀疏学习
- 第十二章 计算学习理论
- 第十四章 概率图模型
- 第十五章 规则学习
- 第十六章 强化学习
1. 第二章 模型评估与选择
bid: 2022102117084500000000000004
2.1 经验误差与过拟合
错误的样本数a占总样本数m的比例称为 错误率【error rate】E = a / m 精度【accuracy】 = 1 - 错误率
我们把实际预测输出与样本的真实输出之间的差异称为 误差【error】 在训练集上 的误差 称为训练误差【training error】 在新样本上的误差 称为 泛化误差 generalization error 过拟合【overfitting】,学习器把样本学的太好了,以至于把样本自身的一些特点当作所有潜在样本的都具有的一般性质,这样会导致generalization 泛化性能下降。 欠拟合【underfitting】
2.2 评估方法
留出法【hold-out】
直接将数据集D 划分为两个互斥的子集,S和T,其中S占大于2/3 - 4/5 左右,并且,尽量保证训练/测试的的数据划分在分布上是一致性的,避免在数据划分过程中引入额外的不必要的偏差,而对最终结果产生影响。 使用留出法通常采用果敢此随即划分,重复实验后去均值作为评估结果。
交叉验证法【cross validation】
将数据集划分为k个大小相似的互斥子集,每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后用k-1个子集做训练,余下的1个子集做测试集,这样就可以获得k组训练/测试集,然后对这k次结果做均值。 这种评估结果的稳定性和保真性极大程度上取决于k的取值。我们把这种交叉验证法称为k折交叉验证【k-fold cross validation】,k最常用的值为10,即10折交叉验证法。与hold-out method 相似,我们也是需要多次划分来取均值作为最后的评估结果。
自助法【bootstrap】
hold-out and cross validation method 使用的训练集比样本集少,必然引入了因为样本规模不同而导致的估计偏差,自助法bootstrap 是一个比较好的解决方案 给定一个m个样本的数据集D,我们对它采样产生数据集D' ,每次随机从D中抽取一个样本,将其拷贝到D',重复mci后,我们得到了一个m个样本的数据集D'。 样本在m次采样中始终不被采集到的概率为(1 - 1/m)m 取极限,可得 0.368 自助法在数据集较小时,很有用。
2.3 性能度量【performance measure】
预测任务中,给定样例集D,要评价学习器f的性能,就是要把学习器预测结果f(x)与真实标记【label】y进行比较 回归任务最常用的性能度量是 均方误差【mean squared error】
E(f;D) = 1/m ・
2. 第一章 绪论
bid: 2022102117089200000000000003
1.1 引言
学习算法,机械学习所要研究的主要内容,是关于计算机从数据中产生【模型model】的算法,模型 泛指 从数据中学得的结果。
1.2 基本术语
数据集【data set】 样本【sample】或者 实例【instance】 属性【attribute】 或者 特征【feature】 属性值【attribute value】 属性空间【attribute space】 样本空间【sample space】 学习【learning】从数据中学得模型的过程 为 学习【learning】或 训练【training】 训练数据【training data】训练过程中使用的数据 为 训练数据【training data】 训练样本【training sample】,训练数据中的每一个样本 成为 训练样本 【training sample】 训练集 【training set】训练样本 组成的集合 为 训练集 【training set】 假设【hypothesis】学得模型对应了关于数据的魔种潜在规律,即 假设【hypothesis】 真相【ground-truth】这种潜在规律自身,则称为 真相【ground-truth】,学习的过程就是为了找出或者逼近真相。 标记【label】,样本结果的信息,即标记【label】 样例【example】,拥有了标记的实例,即为 样例【example】
D = {x1, x2, ...,xn} 具有n个实例的数据集 (xi, yi)表示第i个样例。
- 如果我们的预测的是离散值,此类学习的任务成为 分类【classification】
- 如果我们的预测是连续值,此类的学习任务成为回归【regression】
- 对于只涉及的两个类别的二分类【binary classification】任务,通常一个成为正类【positive class】另一个类为反类【negative class】
- 涉及到多个类别时,则成为多分类【multi-class classification】任务
- 根据train set 中是否含有 label,学习任务分为 监督学习【supervised】 和 无监督学习【unsupervised learning】 分类和回归是 监督学习, 而聚类是后者的代表。
1.3 假设空间
归纳【induction】和演绎【deduction】是科学推理的两大手段。 归纳是从特殊到一般的泛化【generalization】的过程,即从具体的事实归结出一般性规律。 演绎是从一般到特殊的特化【specialization】的过程,从基础原理推演出具体情况。 版本空间【version space】,存在着一个与训练集一致的假设集合,我们称之为版本空间
1.4 归纳偏好
无论学习算法A多聪明,学习算法B多笨拙,他们的期望性能是相同的,这就是NFL定理,即没有免费的午餐定理 NFL定理最重要的寓意是,如果考虑所有的潜在的问题,所有的学习算法都一样好,而算法的优劣必须建在具体的学习问题上。
1.5
3. 第三章 线性模型
bid: 2022112915369100000000000001
3.1 基本模型(linear model)
给定由 d 个属性描述得实例 {\pmb{x}} $ = (x_{1}; x_{2};...; x_{d})$,其中x_i 是 {\pmb{x}} 在第 i 个属性山对的取值。
线性模型试图学得一个通过属性的 线性组合 来进行 预测的函数,即
f(x) = w_1x_1 + w_2x_2 + ... + w_3x_3 + b , \tag{3.1}
一般用向量表示,写成
f(x) = \pmb{w}^{\pmb{T}}\pmb{x} + b, \tag{3.2}
其中{\pmb{w}} $ = (w_{1}; w_{2};...; w_{d})$。${\pmb{w}}$和b学得之后,模型就得以确定。
※注意
行向量用 "," ,而列向量用 ";"
3.2 线性回归(linear regression)
给定数据集$D = { (x_1, y_1), (x_1, y_1), ... (x_m, y_m) }$,其中 $\pmb{x}i = (x{i1}; x_{i2};...; x_{id})$,$y_i \in R$。
线性回归 试图学习得一个线性模型,来尽可能准确的预测真实值输出标记label。
f(x_i) = \pmb{w}^{\pmb{T}}\pmb{x_i} + b, \text{ 使得} f(x_i) \simeq y_i
\tag{3.3}
如何确定 w 和 b 呢,通过2.3节的介绍过,均方误差(2.2)是回归任务中最常用的性能度量,因此我们试图让均方误差最小化。即,最小二乘法。
即
(w^*, b*) = arg\,min \sum_{i=1}^{m} (f(x_i) - y_i)^2
= arg\,min \sum_{i=1}^{m} (y_i - wx_i -b)^2
= arg\,min \sum_{i=1}^{m} [(y_i-b)^2 + w^2x_i^2 - 2wx_iy_i]
= arg\,min \sum_{i=1}^{m} [(y_i-b)^2 + w^2x_i^2 - 2wx_iy_i]
均方误差有非常好的几何意义,他应对了常用的欧几里得几何定理。
而对于多元线性回归,我们把 \pmb{w} 和 b 吸收入向量形式 $\hat{ \pmb{w} } = (\pmb{w};b)$, 即 $\hat{ \pmb{w} } = (w_1;w_2;...;w_d;b)$,即 d + 1 列。
对于数据集$D$,我们将它表示为一个 m \times (d + 1) 大小矩阵 $ X ,用以方便进行 \pmb{w}^{\pmb{T}}\pmb{x} + b$ 相乘。
\pmb{X}=\begin{pmatrix}
x_{11} & x_{12} & \cdots & x_{1d} & 1\\
x_{21} & x_{22} & \cdots & x_{2d} & 1\\
\vdots & \vdots & \ddots & \vdots & 1\\
x_{m1} & x_{m2} & \cdots & x_{md} & 1\\
\end{pmatrix} = \begin{pmatrix}
\pmb{x}_{1}^T & 1\\
\pmb{x}_{2}^T & 1\\
\vdots & 1\\
\pmb{x}_{m}^T & 1\\
\end{pmatrix}
注意,这里的 \pmb{x}_i 是列向量,转置后就是行向量了。
这样
\pmb{X}\hat{ \pmb{w} } = \begin{pmatrix}
x_{11} & x_{12} & \cdots & x_{1d} & 1\\
x_{21} & x_{22} & \cdots & x_{2d} & 1\\
\vdots & \vdots & \ddots & \vdots & 1\\
x_{m1} & x_{m2} & \cdots & x_{md} & 1\\
\end{pmatrix}\begin{pmatrix}
w_{1} \\
w_{2} \\
\vdots \\
w_{d} \\
b \\
\end{pmatrix} = \begin{pmatrix}
\pmb{x}_{1}^T & 1\\
\pmb{x}_{2}^T & 1\\
\vdots & 1\\
\pmb{x}_{m}^T & 1\\
\end{pmatrix}\begin{pmatrix}
\pmb{w} \\
b \\
\end{pmatrix}
再把标记也写成向量形式 y = (y_1;y_2;...;y_m), 有
\hat{\pmb{w}}^* = arg \, min (\pmb{y} - \pmb{X} \hat{\pmb{w}})^T(\pmb{y} - \pmb{X} \hat{\pmb{w}}) \tag{3.9}
令 E_{\hat{w}} = (\pmb{y} - \pmb{X} \hat{\pmb{w}})^T(\pmb{y} - \pmb{X} \hat{\pmb{w}}), 对 \hat{ \pmb{w} } 求导得到
\frac{\partial E_{\hat{w}}}{\partial \hat{\pmb{w}}} = 2 \, \pmb{X}^T(\pmb{X}\hat{\pmb{w}} -\pmb{y}) \tag{3.10}
令上式为0,可得 \hat{ \pmb{w} } 最优解的闭式解
※闭式解也被称为解析解,是通过严格的公式所求得的解,即包含分式、三角函数、指数、对数甚至无限级数等基本函数的解的形式。通过给出解的具体函数形式,从解的表达式中就可以算出任何对应值。
当 \pmb{X}^T \pmb{X} 为满秩矩阵,可以直接令(3.10)为零即可得,
\hat{\pmb{w}}^* = (\pmb{X}^T \pmb{X})^{-1}\pmb{X}\pmb{y}
其中,\pmb{X}^T \pmb{X})^{-1} 是矩阵 \pmb{X}^T \pmb{X} 的逆矩阵。令\hat{\pmb{x}}_i = (\pmb{x}_i; 1) 最终学得多元线性回归模型为
f(\hat{\pmb{x}}_i) = {\hat{\pmb{x}}_i}^T(\pmb{X}^T \pmb{X})^{-1}\pmb{X}\pmb{y}
然后现实任务中,\pmb{X}^T \pmb{X} 并不是满秩矩阵,例如在许多学习任务中我们会遇到大量的参数,其数量甚至超过样例数,导致 \pmb{X} 列数多于行数,此时 \pmb{X}^T \pmb{X} 显然不是满秩矩阵。
此时可解出 \hat{ \pmb{w} } , 他们都能是均方误差最小化,选择哪一个解作为输出将由学习算法的归纳偏好决定,常见的作法,就是引入正则化项(regularization)。
线性模型虽然简单,但是却有着丰富的变化,最简单就是将标记对数化,即将输出标记的对数作为线性模型逼近的目标
\ln y = \pmb{w}^T \pmb{x} + b \tag{3.14}
这就是 对数线性回归(log-linear regression),它实际上在试图让 $e^{\pmb{w}^T \pmb{x} + b}$逼近 $y$。(3.14) 在形式上仍是线性回归(linear regression), 但实质上是输入空间到输出空间的非线性的函数映射。
更一般的,考虑单调可微函数 g(\cdot) ,令
y = g^{-1}(\pmb{w}^T \pmb{x} + b) \tag{3.15}
这样就得到了 广义线性模型 (generalized linear model) ,其中函数 g(\cdot) 称为 联系函数 (link function)。
3.3 对数几率回归
在第一章介绍过,我们知道预测的结果为离散的,我们称为分类(classification)任务,预测的结果是连续的,我们成为回归(regression)任务。
上一节讨论了线性模型进行回归学习,但是若要做分类任务怎么办呢?答案蕴含在(3.15)的广义线性模型中:只需要找到一个单调可微函数将分类任务的真实标记 y 与线性回归模型的预测值联系起来。
我们先考虑二分类任务(binary classification),其输出标记 $y \in { 0, 1 },而线性回归模型产生的预测值是 z = \pmb{w}^T\pmb{x} + b$ 是实值,于是我们需要通过将 z 转换为 0/1 的值。
而最理想是 单位阶跃函数(unit-step function)
f(n)=
\begin{cases}
0, & \text {$z < 0$} \\
0.5, & \text {$z = 0$} \\
1, & \text{$z > 0$}
\end{cases} \tag{3.16}
单位阶跃函数不连续,不能作为 g(\cdot) 的 反函数使用。于是我们希望,找到一个在一定程度近似于单位阶跃函数的代替函数,并希望他单调可微。对数几率函数(logistic function)正是这样的一个常用的替代函数。
y = \frac{1}{1 + e^{-z}} \tag{3.17}
将 z = \pmb{w}^T\pmb{x} + b 带入3.17中得到
y = \frac{1}{1 + e^{-(\pmb{w}^T\pmb{x} + b)}} \tag{3.18}
类似于3.14,对上式取对数,可变化为
ln \frac{y}{1-y} = \pmb{w}^T\pmb{x} + b \tag{3.19}
若将 y 视为样本 x 为正例的可能性,那么 $1-y$则是反例可能性,两者的比值
\frac{y}{1-y} \tag{3.20}
称为 几率(odds),反映了 x 为了正例的相对可能性,对几率取对数则得到 对数几率(log odds,或者logit)
\ln\frac{y}{1-y} \tag{3.21}
可以看出(3.18)实际上在用线性回归模型的预测结果去逼近真是标记的对数几率,因此,此模型称为 对数几率模型 (logistic regression 或者 logit regression)
下面我们来看看如何确定式(3.18)中的 \pmb{w} 和 b.若将y视为后验概率估计 p(y=1|x),则式(3.19)可重写为
ln \frac{p(y=1|x)}{p(y=0|x)} = \pmb{w}^T\pmb{x} + b \tag{3.22}
显然有
p(y=1|x) = \frac{e^{\pmb{w}^T\pmb{x} + b}}{1 + e^{\pmb{w}^T\pmb{x} + b}} \tag{3.23}
p(y=0|x) = \frac{1}{1 + e^{\pmb{w}^T\pmb{x} + b}} \tag{3.24}
于是,我们通过极大似然估计来估计\pmb{w} 和 b.给定数据集\{ (x_i, y_i) \}_{i=1}^m,对数几率回归模型最大化"对数似然"
\ell(\pmb{w}, b) = \sum_{i=1}^{m} p(y_i| \pmb{x_i};\pmb{w},b) \tag{3.25}
3.4 线性判断分析
3.5 多分类学习
3.6 类别不平衡问题
4. 第四章 决策树
bid: 2023011713085500000000000001
4.1 basic flow
决策树 decision tree is a common machine learning method.
Generally, a decision tree contains a root node,several internal nodes and several leaf nodes。
a leaf node corresponds to decision result. the other nodes corresponds to a attribute test. The sample set contained in each node is divided into sub-nodes according to the result of attribute test. The root node contains the samples in the set.
Input :
learning set, the count of sample set is m
D = {(x_1, y_1), (x_2, y_2), ..., (x_m, y_m)}
attribute set, the count of attribute set is d
A = {a_1, a_2, ..., a_d}
Process: function treeGenerate(D, A)
- generate node;
- if the kinds(y) in the node are same, we mark this node leaf node and return
- if A is empty or the value of D is same in A. we mark this node leaf node and return
- to choose the best divided attribute
a_* - for the value of
a_*: - to generate a node
4.2 how to choose a divided method
4.2.1 information gain (信息增益)
信息熵 information entropy
Ent(D) = -\sum ^{|y|}_{k = 1} p_{k}log2p_{k}
means that
信息增益 imformation gain
4.2.2 gain ratio(增益率)
信息增益 对可选数值数目较多的属性有所偏好, to reduce the possible adverse effect of this preference, the famous dicision tree algorithm C4.5 does not use information gain directly, but use information gain ratio to select the optimal divided attributes.
represent it with:
Gain\_ratio(D, a) = \frac{Gain(D, a)}{IV(a)}
IV(a) = - \sum^{V}_{v = 1}\frac{D^v}{D}\log{2}\frac{D^v}{D}
需要注意的是增益率对可选择的属性值较少的具有偏好,所以C4.5并不是直接选择增益率最大的,而是先从划分属性中找到信息增益高出平均水平的,再从其中选择增益率最高的。
4.2.3 基尼指数
略
4.3 减枝处理
剪枝是决策树学习算法对付过耦合的主要手段。
决策树的基本剪枝策略有预剪枝和后剪枝。
预剪枝是指在决策树生成过程中,对每个节点划分前进行估计,若当前节点的划分不能带来决策树泛化性能提升,则停止划分并将当前节点标记为叶节点;
后剪枝则是先从训练集生成一颗完整的决策树,然后自下而上地对非叶子节点考察,若将该节点对应的子树替换为叶子节点能带来决策树泛化性能提升,则将该子树替换成叶节点。
4.3.1 预剪枝
work flow:
- caculate
4.3.2 后剪枝
4.4 连续与缺失值
4.5 多变量决策树
5. 第五章 神经网络
bid: 2023011719438400000000000002
该写点什么么...
6. 第七章 贝叶斯分类器
bid: 2023011719441200000000000004
该写点什么么...
7. 第六章 支持向量机
bid: 2023011719441300000000000003
该写点什么么...
8. 第八章 集成学习
bid: 2023011719447400000000000005
该写点什么么...
9. 第十章 降维与度量学习
bid: 2023011719451200000000000007
该写点什么么...
10. 第九章 聚类
bid: 2023011719454000000000000006
该写点什么么...
11. 第十三章 半监督学习
bid: 2023011719460100000000000010
该写点什么么...
12. 第十一章 特征选择与稀疏学习
bid: 2023011719464700000000000008
该写点什么么...
13. 第十二章 计算学习理论
bid: 2023011719468000000000000009
该写点什么么...
14. 第十四章 概率图模型
bid: 2023011719469800000000000011
该写点什么么...
15. 第十五章 规则学习
bid: 2023011719472500000000000012
该写点什么么...
16. 第十六章 强化学习
bid: 2023011719475600000000000013
该写点什么么...