机器学习之实践
一、数据集划分
训练集(Training Set):帮助我们训练模型,简单的说就是通过训练集的数据让我们确定拟合曲线的参数。
验证集(Validation Set):也叫做开发集( Dev Set ),用来做模型选择(model selection),即做模型的最终优化及确定的,用来辅助我们的模型的构建,即训练超参数,可选;
测试集(Test Set): 为了测试已经训练好的模型的精确度。
三者划分:训练集、验证集、测试集
机器学习:60%,20%,20%;70%,10%,20%
深度学习:98%,1%,1% (假设百万条数据)
1.1 交叉验证
- 使用训练集训练出k个模型
- 用k个模型分别对交叉验证集计算得出交叉验证误差(代价函数的值)
- 选取代价函数值最小的模型
- 用步骤3中选出的模型对测试集计算得出推广误差(代价函数的值)
1.2 不平衡数据的处理
数据不平衡是指数据集中各类样本数量不均衡的情况。常用不平衡处理方法有采样和代价敏感学习。
采样:欠采样、过采样和综合采样的方法。
代价敏感学习:代价敏感学习是指为不同类别的样本提供不同的权重,从而让机器学习模型进行学习的一种方法。比如风控或者入侵检测,这两类任务都具有严重的数据不平衡问题,可以在算法学习的时候,为少类样本设置更高的学习权重,从而让算法更加专注于少类样本的分类情况,提高对少类样本分类的查全率,但是也会将很多多类样本分类为少类样本,降低少类样本分类的查准率。
二、评价指标
正确肯定(True Positive,TP): 预测为真,实际为真。
正确否定(True Negative,TN):预测为假,实际为假
错误肯定(False Positive,FP): 预测为真,实际为假
错误否定(False Negative,FN):预测为假,实际为真
有100张照片,其中,猫的照片有60张,狗的照片是40张。输入这100张照片进行二分类识别,找出这100张照片中的所有的猫。
正确率(Accuracy)=(TP+ TN)/S,TP+ TN =70,S= 100,则正确率为:Accuracy =70/100=0.7
精度(Precision)=TP/(TP+ FP),TP=40,TP+ FP=50,Precision =40/50=0.8
召回率(Recall)=TP/(TP+ FN),TP=40,TP+FN =60。则召回率为:Recall =40/60=0.67
ROC和PR曲线:
三、正则化、偏差和方差
3.1 为什么要标准化/归一化?
提升模型精度:不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。
加速模型收敛:最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。
数据归一化的目的是使得各特征对目标变量的影响一致,会将特征数
据进行伸缩变化,所以数据归一化是会改变特征数据分布的。
数据标准化为了不同特征之间具备可比性,经过标准化变换之后的特
征数据分布没有发生改变。
当数据特征取值范围或单位差异较大时,最好是做一下标准化处理。
需要做数据归一化/标准化:线性模型,如基于距离度量的模型包括KNN(K近邻)、K-means聚类、感知机和SVM。另外,线性回归类的几个模型一般情况下也是需要做数据归一化/标准化处理的。
不需要做数据归一化/标准化:决策树、基于决策树的Boosting和Bagging等集成学习模型对于特征取值大小并不敏感,如随机森林、XGBoost、LightGBM等树模型,以及朴素贝叶斯,以上这些模型一般不需要做数据归一化/标准化处理。
3.2 过拟合和欠拟合
3.3 过拟合的处理
- 获得更多的训练数据:使用更多的训练数据是解决过拟合问题最有效的手段,因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。
- 降维:即丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如PCA)。
- 正则化:正则化(regularization)的技术,保留所有的特征,但是减少参数的大小(magnitude),它可以改善或者减少过拟合问题。
- 集成学习方法:集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险。
3.4 欠拟合的处理
- 添加新特征:当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。通过挖掘组合特征等新的特征,往往能够取得更好的效果。
- 增加模型复杂度:简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。
- 减小正则化系数:正则化是用来防止过拟合的,但当模型出现欠拟合现象时,则需要有针对性地减小正则化系数。
3.5 正则化
\(L_1\)正则化可以产生稀疏模型:\(L_1\)正则化是指在损失函数中加入权值向量w的绝对值之和,\(L_1\)的功能是使权重稀疏。
\(L_2\)正则化可以防止过拟合:\(L_2\)正则化在损失函数中加入权值向量w的平方和,\(L_2\)的功能是使权重平滑。
图上面中的蓝色轮廓线是没有正则化损失函数的等高线,中心的蓝色点为最优解,上图、下图分别为𝑳1、𝑳𝟐正则化给出的限制。
可以看到在正则化的限制之下,\(L_2\)正则化给出的最优解w是使解更加靠近原点,也就是说\(L_2\)正则化能降低参数范数的总和。\(L_1\)正则化给出的最优解w是使解更加靠近某些轴,而其它的轴则为0,所以\(L_1\)正则化能使得到的参数稀疏化。
3.5.1 Dropout正则化:
Dropout的功能类似于𝐿2正则化,与𝐿2正则化不同的是,被应用的方式不同,dropout也会有所不同,甚至更适用于不同的输入范围。
keep-prob=1(没有dropout), keep-prob=0.5(常用取值,保留一半神经元)。在训练阶段使用,在测试阶段不使用!
3.5.2 Early stopping
Early stopping代表提早停止训练神经网络。优点是只运行一次梯度下降,就可以找出𝑤的较小值,中间值和较大值,而无需尝试𝐿2正则化超级参数𝜆的很多值。
3.5.3 数据增强
随意翻转和裁剪、扭曲变形图片:
四、偏差和方差
方差Variance:描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散。
偏差Bias:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据。
训练集误差和交叉验证集误差近似时:偏差/欠拟合。
交叉验证集误差远大于训练集误差时:方差/过拟合。
- 获得更多的训练实例——解决高方差
- 尝试减少特征的数量——解决高方差
- 尝试获得更多的特征——解决高偏差
- 尝试增加多项式特征——解决高偏差
- 尝试减少正则化程度λ——解决高偏差
- 尝试增加正则化程度λ——解决高方差
五、参考资料
- Prof. Andrew Ng. Machine Learning. Stanford University
- 《统计学习方法》,清华大学出版社,李航著,2019年出版
- 《机器学习》,清华大学出版社,周志华著,2016年出版
- Christopher M. Bishop, Pattern Recognition and Machine Learning, Springer-Verlag, 2006
- Stephen Boyd, Lieven Vandenberghe, Convex Optimization, Cambridge University Press, 2004
- https://www.icourse163.org/course/WZU-1464096179