这节介绍一些机器学习中的基本概念,数据集(训练、测试、验证),方差-偏差,过拟合,正则化,降维。
目录
数据集(data set)
一般对于一个大数据集,我们会把它按照 6:2:2 分成训练集、验证集和测试集。简易的机器学习过程会省去验证集,即 8:2 分成训练集和测试集。
训练集(training set):用来训练模型的数据,机器学习中的学习就是指学习训练集从而形成一个与训练集对应的模型。
测试集(testing set):模型形成后,怎么知道它的好坏呢,是骡子是马拉出来遛遛,我们就用测试集来看看在真实情况下这个模型O不OK。
验证集(validation set):其实它是归属于训练集的,同样参与模型的学习过程。在模型初步形成后,就用验证集初步评估一下这个模型,如果不太理想,就继续迭代训练。
其中有交叉验证(cross validation)这个概念,交叉是指验证集和训练集交叉,即不断改变这俩的比例,对模型进行综合的训练评估,主要应用是模型选择,特征选择,估计正则参数等
有留一验证(LOOCV):n个点只留一点当验证点,其他n-1个点当训练点;
有K-fold交叉验证:每次迭代把k组当验证集,其余组当训练集;
关于交叉验证详细可参考 极速理解ML交叉验证。
方差-偏差(variance-bias)
模型的误差error通常由三部分组成:方差 var,偏差 bias,噪声 noise。
越是简单的模型bias越大而var越小;越是复杂的模型bias越小而var越大。所以这俩形成tradeoff。噪声noise包括随机噪声(stochastic error,就是很随机,我们无法建模和估计)和确定噪声(也叫model error,与模型有关!)
这里再引入两个概念:
E
i
n
E_{in}
Ein,
E
o
u
t
E_{out}
Eout
E
i
n
E_{in}
Ein: 训练集内的误差,我们训练的结果就是让它越来越小嘛;
E
o
u
t
E_{out}
Eout:训练集外的误差,就是训练完的模型在测试集中验验货,看真实情况下模型的误差。
从下面图我们可以发现,对于简单的模型,不需要太多数据就能训练至理想误差,而复杂的模型如果训练数据不足,则
E
o
u
t
E_{out}
Eout会非常大,就是完全不实用,所以模型越复杂(特征越多,即维度越多),我们所需数据就越多(要指数级地增加才能保证收敛性),这就是维度诅咒(Curse of Dimension)。
过拟合(overfitting)
这是个非常重要的评估模型的概念!通俗理解,如果把熊猫在森林的照片数据库送去训练一个识别熊猫的模型,发现训练得非常可以,这时突然拿一张熊猫在动物园的照片去识别,识别不出来,因为模型的关注点在熊猫旁边有没有树,即这个模型不仅学了熊猫的特征还学了环境的特征,过于刁钻,像阿岳一样严格,我们就称这个模型过拟合了。
其实可以一句话说明白,训练集里猛如虎,测试集里很离谱。即随着模型的学习,
E
i
n
E_{in}
Ein越来越小,而
E
o
u
t
E_{out}
Eout越来越大。
过度地增加数据的维度而不相应增加数据的量会导致过拟合,模型开始学习特定于训练数据的期望,当遇到新数据时不能很好地泛化。就如上面所提到的复杂模型数据不足时。
相应的如果在训练集里都不太如意,
E
i
n
E_{in}
Ein挺高,则为欠拟合,模型连基本要学的特征都没掌握。
正则化(regularization)
为了防止模型过拟合,最经典方法就是正则化。
一般的机器学习过程是最小化损失函数从而得到模型参数
w
w
w,但是很有可能损失函数降到最低了,但是
w
w
w很大,模型很复杂,容易过拟合。
现在我们在损失函数后面加入参数
w
w
w,加上了
w
w
w 的考量后,当模型在损失函数很小的时候参数
w
w
w很大,这时我们就知道模型还不合格,得让损失函数和参数
w
w
w 整体降到最小才最理想。我们再引入正则变量
λ
\lambda
λ,机器学习目标就可以写成:
L
1
:
min
w
1
2
∣
∣
y
−
w
T
x
∣
∣
2
2
+
λ
∣
∣
w
∣
∣
1
L_1:\quad\quad\quad \min_{w}\frac{1}{2}||y-w^Tx||^2_2 + \lambda ||w||_1
L1:wmin21∣∣y−wTx∣∣22+λ∣∣w∣∣1
L
2
:
min
w
1
2
∣
∣
y
−
w
T
x
∣
∣
2
2
+
λ
∣
∣
w
∣
∣
2
2
L_2:\quad\quad\quad \min_{w}\frac{1}{2}||y-w^Tx||^2_2 + \lambda ||w||^2_2
L2:wmin21∣∣y−wTx∣∣22+λ∣∣w∣∣22 左边那坨就是原始的损失函数嘛,右边就是加入了正则项,正则项使用L1范数就称L1正则化,使用L2范数就称L2正则化. 各有特点。
上图形象地说明了正则的过程与L1和L2正则的区别,就是损失函数和正则项都希望最小,然后两者相交或相切的那个点(粉色点)就是理论的最佳点,此时模型拟合度高且不会太复杂,有效防止了过拟合。
L1正则更易导致稀疏性,从图可以看出损失函数与L1正则的交点很容易落在坐标轴上,此时就肯定有一个参数为0嘛,参数决定了模型复杂度,所以有参数为0会使模型变得稀疏。稀疏性是我们所希望的,模型的可解释性也会提高。
L2正则因为带了平方,所以对outlier(异常值)会更加敏感。
降维(Dimension Reduction)
如前面提到的维度诅咒,数据特征太多不见得是一件好事,模型太复杂不仅可能导致大量算力浪费,还可能导致过拟合,准确率下降。
意义
- 可视化:把高维数据投影到二维平面或三维空间。
- 数据压缩:高效的数据存储和提取。
- 除噪声:高效且准确地搜索。
应用
- 脸部识别
- 手写识别
- 文本挖掘
- 图像恢复
- 微阵列数据分析
- 蛋白质分类…
方法
1、PCA(主成分分析):把数据集都投影到低纬度空间形成一个新的数据集,要求这个新的数据集中所有数据的方差最大。
1、LDA(线性判别分析):针对带标签的数据集,把数据集都投影到低纬度空间形成一个新的数据集,要求这个新的数据集中所有数据的类别尽量分开,类里面方差最小,类之间方差最大。所以LDA也可以用来分类。
对于左边的高维数据集,投影到红线上形成了新的低维数据集,这个数据集里面数据间方差最大,所以红线就是PCA方向;按照概念,蓝线就是LDA方向。
附上其他笔记的链接:
《无废话的机器学习笔记(一)》
《无废话的机器学习笔记(二)(线性回归)》
《无废话的机器学习笔记(三)(梯度下降)》
《无废话的机器学习笔记(四)(感知机、逻辑回归、贝叶斯)》
《无废话的机器学习笔记(五)(SVM)》
《无废话的机器学习笔记(六)(决策树,KNN)》
《无废话的机器学习笔记(七)(聚类: kmeans、GMM、谱聚类)》