发布于2019-08-22 15:36 阅读(2261) 评论(0) 点赞(3) 收藏(1)
(1)在数据集中找到丢失/损坏的数据,然后删除这些行或列
(2)在数据集中用另一个值替换它们,连续值(取平均值、中位数),离散值(取类别最多的一类)*
为了消除数据特征之间的量纲影响,需要对特征进行归一化处理,使得不同指标之间具有可比性,对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。数据归一化使得所有特征的权重相等。
(1)线性函数归一化(Min-Max Scaling)
(2)零均值归一化(Z-Score Normalization)
(3)L1/L2 范数归一化
(4)中心化:x-mean代替原特征
例如,假设有两种数值型特征,x1 的取值范围为 [0, 10],x2 的取值范围为[0, 3],在学习速率相同的情况下,x1 的更新速度会大于x2 ,需要较多的迭代才能找到最优解,如果将x1 和x2 归一化到相同的数值区间后,x1 和x2 的更新速度变得更为一致,容易更快地通过梯度下降找到最优解。
(1)使用正确的度量方法来评估
精确度/特异性:正样本的预测准确率。
召回率/敏感性:所有预测为正样本的数据的准确率。
F1得分:精确率和召回率的调和平均
MCC:真阳率(TPR)和假阳率(FPR)的关系。
(2)采样法
有两个方法来得到平衡的数据集,一个是欠采样,一个是过采样
a. 欠采样(类别样本数多的样本做子采样):
欠采样通过减小多数类别的样本数量来得到平衡的数据集。保留所有的少数类别的样本,随机的抽取同样数量的多数类别样本,可以得到一个均衡的新的数据集,用来建模。
b. 过采样(类别样本数少的样本做过采样):
过采样用在数据集不够的情况下。通过增加少数类的样本数量来得到平衡的数据集。通过重复自助抽样或者SMOTE (合成少数类过采样)来生成少数类的数据。
(3)正确使用K折交叉验证
当使用过采样来解决不均衡数据集的问题的时候,需要适当的使用交叉验证。
(4)集成不同的重新采样的数据集
一个简单的最佳实践是使用所有的少数类和n个不同的多数类组成n个不同的数据集,构建模型。比如你要集成10个模型,你保留1000个少数类的样本,随机选取10000个多数类的样本,然后将这10000个多数类的样本分成10份,组成10个数据集,训练10个模型。
(5) 使用不同的比例进行重新采样
不要使用同样的比例训练模型来集成,可以试试集成不同的比例。所以,如果训练了10个模型,那么使用模型具有1:1,1:2,甚至2:1,取决于用的模型,这个可以影响到一个类别得到的权值。
(6) 对多数类进行聚类
将多数类聚类成r个组,这个r是样本的数量。对于每一个组,样本中心保留下来,然后使用少数类和样本中心进行模型的训练。
(1)专家咨询法
(2)过滤法:统计学方法(方差法、相关性检验、假设性检验、互信息)
(3)包装法:递归消除特征
(4)嵌入法:L1/L2正则化
为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征
序号编码(Ordinal Encoding)
独热编码(One-hot Encoding)
二进制编码(Binary Encoding)
*************************************************************************************************************
准确率是指分类正确的样本占总样本个数的比例。
准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷。比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率。所以,当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。为了解决这个问题,可以使用更为有效的平均准确率(每个类别下的样本准确率的算术平均)作为模型评估的指标。
精确率: 是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。
召回率: 是指分类正确的正样本个数占真正的正样本个数的比例。
Precision值和Recall值是既矛盾又统一的两个指标,为提高Precision值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时会因为过于保守而漏掉很多“没有把握”的正样本,导致Recall值降低。
在排序问题中,通常没有一个确定的阈值把得到的结果直接判定为正样本或负样本,而是采用Top N返回结果的Precision值和Recall值来衡量排序模型的性能,显然,问题出在召回率上。如果相关结果有100个,即使Precision@5达到了100%,Recall@5也仅仅是5%。为了综合评估一个排序模型的好坏,不仅要看模型在不同Top N下的Precision@N和Recall@N,而且最好绘制出模型的P-R(Precision-Recall)曲线。P-R曲线的横轴是召回率,纵轴是精确率。
一般情况下,RMSE能够很好地反映回归模型预测值与真实值的偏离程度。但在实际问题中,如果存在个别偏离程度非常大的离群点(Outlier)时,即使离群点数量非常少,也会让RMSE指标变得很差。
(1)离线评估无法完全消除模型过拟合的影响。
(2)离线评估无法完全还原线上的工程环境。离线评估往往不会考虑线上环境的延迟、数据丢失、标签数据缺失等情况。因此,离线评估的结果是理想工程环境下的结果。
(3)线上系统的某些商业指标在离线评估中无法计算。离线评估一般是针对模型本身进行评估,而与模型相关的其他指标,特别是商业指标,往往无法直接获得。比如,上线了新的推荐算法,离线评估往往关注的是ROC曲线、P-R曲线等的改进,而线上评估可以全面了解该推荐算法带来的用户点击率、留存时长、PV访问量等的变化。这些都要由A/B测试来进行全面的评估。
进行A/B测试的主要手段是进行用户分桶,即将用户分成实验组和对照组,对实验组的用户施以新模型,对对照组的用户施以旧模型。在分桶的过程中,要注意样本的独立性和采样方式的无偏性,确保同一个用户每次只能分到同一个桶中。
(1) Holdout检验
(2)交叉检验
(3)自助法
为了进行超参数调优,我们一般会采用网格搜索、随机搜索、贝叶斯优化等算法。
超参数搜索算法一般包括哪几个要素:
一是目标函数,即算法需要最大化/最小化的目标;
二是搜索范围,一般通过上限和下限来确定;
三是算法的其他参数,如搜索步长。
过拟合是指模型对于训练数据拟合呈过当的情况,反映到评估指标上,就是模型在训练集上的表现很好,但在测试集和新数据上的表现较差。模型过于复杂,把噪声数据的特征也学习到模型中,导致模型泛化能力下降,在后期应用过程中很容易输出错误的预测结果。
欠拟合指的是模型在训练和预测时表现都不好的情况。没有很好地捕捉到数据的特征,不能够很好地拟合数据。
(1)降低“过拟合”风险的方法
(2)降低“欠拟合”风险的方法
测试集的泛化性能是衡量学习模型优劣的金标准,但是当训练集给定的情况下,不同的测试集得到的测试精度不同,不同的训练集构建的最优模型也不同。那么,仅仅通过测试误差来评价模型的泛化性能是存在偏差的。已知训练数据集D和测试数据集T的概率分布,用测试数据集的期望泛化误差来评价模型的泛化性能模型是最佳评价方案。测试数据集期望泛化误差包括偏差,方差和噪声。
偏差表示学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。训练模型越复杂,则偏差越小。
方差表示同样大小的训练数据集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。如果我们使用不同的数据去训练同一个模型,那么最后我们得到的目标函数估计也是会改变的。
噪声表示任何学习模型所能达到期望泛化误差的下界,即刻画了学习问题本身的难度。若噪声比较大,即使是最优模型,泛化误差也比较大。
当学习模型的训练程度低时,学习器的拟合能力不强,模型处于高偏差状态,训练数据集的扰动不足以使学习器发生显著变化,模型具有低方差属性;
当模型训练程度高时,模型复杂度高,处于低偏差状态,训练数据集的扰动使学习器发生了显著变化,模型具有高方差属性。
参数或者线性的机器学习算法一般都会有一个很高的偏差和一个很低的方差。
非参数或者非线性的机器学习算法一般都有一个很低的偏差和一个很高的方差。
*************************************************************************************************************
作者:8778787
链接:https://www.pythonheidong.com/blog/article/52487/f560642d489678be826c/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!