1.2 - 特征归一化、梯度下降、模型评估、过拟合与欠拟合
1.数据特征的归一化
1.1 问题产生
当样本不同特征数据的数值范围相差过大,目标函数会变得很扁,在梯度下降的时候,梯度方向会在一定程度上偏离极值点方向,降低了训练效率,增大了训练时间。有些训练数据的值很大,很容易超出数值范围,不利于运算。
1.2 归一化方法
通过归一化来解决上述问题,即:去量纲化,将数据的每个特征都放缩到相同的量级。
常见的归一化方法:
MinMaxScaler,等比缩放到 [0, 1] 范围。
z-scoreScaler,缩放到 均值为0,方差为1 的分布上。
归一化方法是指 一种将数据放缩的思想,可以MinMax放缩到 [0, 1] 范围,也可以放缩到 [-1, 1] 范围,也可以自定义归一化方法将数据特征放缩到其它的自定义范围 [m, n],只要放缩之后对模型的训练和数据处理有帮助,都可以按心意来做。
多项式扩展中,可以先将特征缩放之后再扩展;也可以特征扩展之后再缩放;可以只扩展X,也可以连Y一起扩展。模型就是那些模型,本身已经发展差不多了,如何处理数据来更简洁更节省资源更高效的训练出模型才是更加要考虑的问题。
1.3 归一化的作用
1)能够使模型更快的收敛到损失函数梯度为0的点;2)将数据特征缩放到一个较小的范围,降低出现 Nan 值的情况;3)所有特征都缩放到相同大小的范围,避免遗漏掉 特征数值小范围小但是却很重要的特征。
2. fit 和 transform
fit 表示计算参数,根据现有的数据来计算完成处理过程需要计算的参数,不会对数据进行修改。如:MinMax处理中,fit 过程只是会计算训练集中 Min和Max值。
transform 表示根据计算得到的参数来对数据进行处理。这一步才是开始对数据进行处理。
只用 训练集 数据进行 fit 计算,然后共用 fit 计算的参数对 训练集和测试集 进行 transform。
3.梯度下降
3.1 梯度下降个人理解
损失函数,一般是和模型参数相关的 类似最小二乘法的方程式。其含义是:当前所有样本数据对应的损失最小,损失的大小与模型参数相关,当模型最契合样本数据特征的时候,模型参数对应的损失函数值也最小。所以梯度下降的过程就是:求解合适的模型参数,使得模型最契合样本规律 损失最小的过程。
梯度下降求解要求目标函数是 凸函数,目标函数取得极值的位置 导数为0或不存在,梯度也为0。
梯度下降的模型参数更新公式:θnew = θold - α.▽。(▽ 为梯度)
3.2 梯度下降方法的分类
根据每次训练使用的数据量,梯度下降分为:
BGD:批量梯度下降,使用所有样本的梯度平均值作为模型参数θ的更新,一次更新就是一个epoch。
SGD:随机梯度下降,使用随机单个样本的梯度作为模型参数θ的更新;
MBGD:小批量梯度下降,取 batch_size 个样本的梯度平均值作为模型参数θ的更新。注:每次取batch_size个数据计算来更新模型参数,当所有的样本数据都被取完一遍之后,称为:完成了一个epoch。
不同梯度下降方式比较:
BGD要求每次计算全部样本梯度才完成一次模型参数更新,SGD完成一个样本的梯度计算就可以进行一次模型参数更新。所以:SGD的收敛速度会更快,但是可能在最终收敛的位置存在波动;BGD虽然收敛速度较慢但是最终一定会达到一个局部最优的解,而SGD由于随机性的原因,最终效果可能比BGD差。MBGD综合了二者的特点。
3.3 梯度下降的终止条件
训练开始前,设置较大的最终epoch值,当训练过程中出现:1)每次训练loss降低到某个阈值,2)前后两次epoch的loss只差极为相近低于某个阈值,此时可以停止模型训练。
4. 模型性能评估方法
在对比不同模型性能分数的时候,需要将不同模型放在同一个测试数据集上来跑分,否则没意义。因为可能训练得到模型的回归效果比较好,但是恰好在一个不怎么好的数据集上来测试(数据集中的异常点比较多),而效果不太好的模型在一些极其有规律性的数据集上跑分的结果反而会更高。
4.1 回归模型
mean_absolute_error:平均绝对误差,MAE = 1/m * Σ| y - yi |,( yi 表示实际标签值,y表示模型预测值 )
mean_squared_error:平均平方误差,MSE = 1/m * Σ( y - yi )2 ,( y表示模型预测值,yi 表示实际标签纸 )
r2_score:R2值,R2 = 1 - ( Σ( y - yi )2 ) / ( Σ( y均 - yi )2 ),范围:(-∞,1 ]。
对于 R2 分数,当回归模型全部预测正确的时候,R2分数获得最大值1,当回归模型全部预测为样本标签的均值时,R2分数为0,当R2分数为负数时,这个回归模型训练的很烂,设置都不如全部预测回归为 样本标签平均值 的效果好!
4.2 分类模型
4.2.1 二分类
1) accuracy : 预测对的数量 / 总预测数量
2)混淆矩阵
3)precision:TP / (TP + FP) ;recall:TP / (TP + FN)
4)Fscore
5)PR曲线 - AP值;ROC曲线 - AUC值(ROC曲线适用于正负样本不平衡的场景)
4.2.2 多分类
1)混淆矩阵
2)Macro - average (小比例种类影响较大)
3)weight - average (大比例种类影响较大)
4)Micro - average
多分类参考:https://zhuanlan.zhihu.com/p/147663370
5. 模型过拟合与欠拟合
在用数据训练模型的时候,由于选择的模型过于复杂导致考虑了很多数据中的无效特征,称为:过拟合;由于选择的模型过于简单而忽略了很多有用的特征,称为:欠拟合。当遇到欠拟合问题的时候,考虑采用更加复杂的模型去拟合数据即可,当遇到过拟合问题,不同的模型有不同的防止过拟合策略,如:线性回归采用正则化技术,决策树采用剪枝,神经网络采用dropout技术等,这些不同的方法都能够起到降低模型复杂度的效果。
再次总结:
整个机器学习过程:
模型空间假设 =》 损失函数确定 =》优化方法求解最佳模型参数
模型空间假设:当我们面对要解决的问题的时候,最开始能拿到的只有一堆 有标签或没有标签的数据,我们想要确定其中的规律,首先假设这些数据更可能适合用哪些模型(方法)求解,如:线性回归模型,SVM模型,决策树模型,随机森林模型,k近邻模型,集成学习模型等。
损失函数确定:我们现在手头有了一堆可供选择的模型,每一个模型都有各自的参数,参数不同模型对数据的拟合程度也不同。那么在使用某一个模型的时候,如何量化衡量当前的模型参数对现有的这个数据集的匹配程度呢?
优化方法:当确定了如何量化衡量当前模型参数对现有数据集的拟合效果时,如何才能得到最佳的模型参数呢?这些问题用数学方法求解,就是优化方法。
( 或者这样说,所谓的SVM模型,决策树模型,k近邻模型,并不是真的模型,而是一种方法,一种能够获得模型的方法。因为 只要最原始的数据集是线性规律的,不管用什么模型来匹配这些数据,最终得到的结果一定都是线性或近似线性的,不会因为采用的是SVM还是线性回归而有所不同。从这点也可以看出,不同的 模型只是提供了一个接近正确解的方法或流程,在这个流程中采用不同的参数会产生不同的效果,流程+参数即:模型+参数 才是我们最终所说的 能够解决我们问题的真正模型。 )
6. 模型超参数确认和交叉验证
6.1 模型超参数
机器学习中,超参数是【事先给定的,用来控制学习过程】的。而其它的参数(如:节点权重)是在模型训练过程中计算得到的。超参数大致分为模型超参数和算法超参数。模型超参数用来模型选择,如:神经网络的深度结构,正则项的系数。算法超参数用来控制训练速度和质量,如:batch_size,迭代次数等。
6.2 交叉验证
交叉验证的目的:确认最佳模型超参数!!!
整个数据集划分为:训练集,验证集,测试集。验证集用来确认超参数;测试集用来测试最佳超参数下模型的性能分数。
1)Holdout交叉验证:将数据分为:训练集,验证集,测试集三组;适用于数据较多的情况。
2)K折交叉验证:分成K份,(K-1)份用来训练,剩余一份用来测试;每组超参数训练K次,得到K个测试结果,取平均值作为该组超参数的得分。(如果超参数组合有M中,那么一共要进行 M * K 次实验)
3)留一验证:只拿出一条数据来测试,其余数据都去训练。相当于K折中的K为数据样本数量;适用于样本数量极少的情况。