机器学习的核心是利用数据输入进行“学习”(即提高效率和输出)的算法,通常需要基于“训练”数据集和期望输出值建立一个模型;然后程序会尽力达到该输出值,并根据反馈调整算法。
以下为新手在机器学习中常见的五大问题及应对方法:
1. 处理缺失值
在数据预处理中,关键步骤是处理缺失的数据,因为机器学习模型不会接受NaN值作为它们的输入。
很简单的一种方法是从机器学习数据集中删除所有缺失值,但在这之前,请先检查机器学习数据集中出现的NaN值的总体百分比。如果小于1%,我们可以删除所有缺失值,否则我们需要通过选择其他方法,如集中趋势测量、KNN Imputer等来估算数据。
我们也可以使用平均值、中位数或众数替换。当一组数据中的个别数据变动较大时,常用中位数来描述这组数据的集中趋势。如果机器学习数据集中存在偏态分布,往往使用中位数要比均值好。
还可以使用随机样本估算。在这种技术中,我们用dataframe中的随机样本替换所有nan值。它被用来输入数值数据。我们使用sample()对数据进行采样。在这里,我们首先取一个数据样本来填充NaN值。然后更改索引,并将其替换为与NaN值相同的索引,最后将所有NaN值替换为一个随机样本(来源:csdn)。
2. 异常值/离群值
异常值是与其他观测值有显著差异的数据点。有时,这些异常值也可能很敏感。在处理异常值之前,建议先检查机器学习数据集。
例如:
● 基于观测降雨量的深度值预测中离群值具有重要意义。
● 房价预测中的异常值则没有任何意义。
3. 数据泄露
这里的Data Leakage 跟其他场合说的数据泄漏完全不一样,简单来说,数据泄漏会导致模型看起来很精确,当你开始使用模型在真实的世界中做决策的时候,模型变得非常不准确。当我们用于训练模机器学习型的数据包含机器学习模型试图预测的信息时,就会发生数据泄漏。这会导致模型部署后的预测结果不可靠。个问题可能是由于数据标准化或归一化方法造成的。因为我们大多数人在将数据分割成训练集和测试集之前会继续使用这些方法。
数据中存在倒“因”为“果”的feature的现象,叫数据竞赛中的Data Leakage。
没有标准的解决方案可以普遍地防止漏泄预测,它需要对数据进行充分的分析,深入了解探索你的数据。
一般来说,数据漏泄预测因子(特征属性)往往与目标具有很高的相关性。在实际机器学习建模时候,有几点可以关注下:
● 为了查找可能的Data Leakage,要统计分析与目标target相关的列;
● 如果你建立一个模型并发现它非常精确,可能有一个数据泄漏问题;
● 在交叉验证折叠中使用原始没进过预处理的数据;
● 使用Pipelines。比如: scikit-learn Pipelines;
● 使用Holdout Dataset。在使用模型之前,保留一个未使用过的的验证数据集作为对模型的最终健全性检查。
4. 选择合适的机器学习模型
不必要地转向一些复杂的模型可能会对面向业务的人产生一些可解释性问题。例如,线性回归将比神经网络算法更容易解释。
主要根据数据集的大小和复杂性来选择对应的机器学习模型,如果我们处理复杂的问题,我们可以使用一些高效的机器学习模型,如SVN、KNN、随机森林等。
大多数时候,数据探索阶段会有助于我们选择对应的机器学习模型。如果在可视化中数据是线性可分离的,那么我们可以使用线性回归。如果我们对数据不了解,支持向量机和KNN将会很有用。
另外还存在一个模型可解释问题,例如,线性回归比神经网络算法更容易解释。
5. 验证指标
指标是模型预测器和实际数据的定量度量。如果问题是回归方面的,则关键指标是准确性(R2评分),MAE(平均绝对误差)和RMSE(均方根误差)。如果是分类方面的问题,关键指标则是精确,召回,F1score和混淆矩阵。
希望以上分享可以帮助到大家!