数据STUDIO

提高机器学习模型准确性的 8 种方法

Image

Image

提升机器学习模型的性能有时会充满挑战。即使尝试了所有学习过的策略和算法,你仍然往往无法提高模型的准确性。你会感到无助和停滞不前。90% 的数据科学家正是因为这一点而放弃。剩下的 10% 正是大师级数据科学家和普通数据科学家之间的区别所在。本文介绍了 8 种行之有效的重构模型方法,旨在提升机器学习模型的准确性。

预测模型的构建方法有很多种,没有“必须遵循”的规则。但是,如果你遵循我的方法(如下所示),你的模型一定能获得很高的准确率(前提是提供的数据足以进行预测)。我通过实践学习了这些方法。我一直更倾向于从实践中学习这些学习技巧,而不是钻研理论。在本文中,我分享了一些创建强大的 Python 机器学习模型的最佳方法。我希望我的知识能够帮助人们在职业生涯中取得更大的成就。在本文中,你将主要了解如何提高机器学习的准确性。

学习目标

  • 本文旨在提供 8 种经过验证的方法,以实现 Python ML 模型的高精度。
  • 它强调了实践学习和结构化思维对于提高数据科学家的表现的重要性。
  • 它涵盖了假设生成、处理缺失值和异常值、特征工程、模型选择、超参数调整和集成技术等主题,以便你可以提高模型的性能。

机器学习中的模型准确度是什么?

模型准确率是衡量机器学习模型性能的指标。它量化了模型正确分类的百分比。通常用 0 到 1(或 0% 到 100%)之间的值表示。

计算模型准确率

准确率的计算方法是将正确预测的数量除以所有类别的预测总数。在二分类中,它可以表示为:

在哪里:

  • TP:真阳性(正确预测的正例)
  • TN:真阴性(正确预测的负例)
  • FP:假阳性(将假实例预测为真)
  • FN:假阴性(将真实例预测为假)

准确度尺度

准确度通常表示为 0 到 1 之间的值,其中 0 表示模型总是预测错误的标签,而 1(或 100%)表示它总是预测正确的标签。

与混淆矩阵的关系

准确度指标与混淆矩阵密切相关,混淆矩阵以表格形式汇总了模型的预测结果。混淆矩阵包含真阳性、真阴性、假阳性和假阴性的计数,用于计算准确度。

统计显著性

评估模型准确率时,务必基于具有统计显著性的预测数量。这可以确保准确率得分能够反映模型的真实性能,并且不会受到小数据集中随机变量的影响。

为什么模型准确性很重要?

  • 简单易懂:准确率是一个简单易懂的指标。它表示模型正确预测的百分比。这种简单性使得技术和非技术利益相关者都能理解,从而能够清晰地传达模型的性能。
  • 误差补数:准确率可以看作是错误率的补数。换句话说,准确率等于 1 减去错误率。这种二元性使其成为评估模型预测误差表现的便捷指标。
  • 效率与有效性:准确率是一项计算效率指标,使其成为评估模型性能的实用选择,尤其是在处理大型数据集时。它能够快速概览模型的运行情况。
  • 常见的研究指标:准确度在机器学习研究中被广泛使用,尤其是在数据集干净且平衡的情况下。准确度在研究中的普遍性使得我们可以轻松地对不同的算法和方法进行基准测试,从而有助于推动该领域的发展。
  • 实际应用:在实际应用中,如果存在与研究中特征相似的数据集,那么准确率可能是一个有价值的指标。清晰的解读使其易于与各种业务目标和指标(例如收入和成本)保持一致。这种一致性有助于向利益相关者报告模型的价值,这对于机器学习项目的成功至关重要。

提高机器学习模型准确率的 8 种方法

模型开发周期包含多个阶段,从数据收集到模型构建。但是,在探索数据以了解变量间关系之前,始终建议进行假设生成。这一步骤在预测建模中经常被低估,但对于有效地指导你的分析至关重要。通过假设潜在的关系和模式,你可以为更有针对性的探索奠定基础。要了解更多关于如何通过有效的假设生成来提高机器学习模型准确性的信息,请参阅此链接。这是一个关键方面,可以显著影响你的预测建模工作的成功。

花时间思考给定的问题并积累领域知识非常重要。那么,这有什么用呢?这种做法通常有助于后续构建更好的特征,这些特征不会受到数据集中可用数据的影响。这是提高模型准确率的关键一步。

在这个阶段,你需要对问题进行结构化思考,即考虑到特定问题的所有可能方面的思考过程。

现在让我们深入挖掘一下。现在我们来看看如何提高机器学习模型的准确性:

  1. 添加更多数据
  2. 处理缺失值和异常值
  3. 特征工程
  4. 特征选择
  5. 多种算法
  6. 算法调优
  7. 集成方法
  8. 交叉验证

添加更多数据

拥有更多数据总是好的。它能让“数据自己说话”,而不是依赖于假设和弱相关性。更多数据的存在可以带来更好、更准确的机器学习模型。

我理解我们没有添加更多数据的选项。例如,在数据科学竞赛中,我们无法选择增加训练数据的大小。但在实际的公司项目中,我建议你尽可能地请求更多数据。这将减少在有限数据集上工作的痛苦。

处理缺失值和异常值

机器学习训练数据中不必要的缺失值和异常值通常会降低训练模型的准确性,或导致模型出现偏差,从而导致预测不准确。这是因为我们没有正确分析其行为及其与其他变量的关系。因此,妥善处理缺失值和异常值对于建立更可靠、更自然的机器学习模型至关重要。

仔细查看下面的测试数据快照。它表明,在存在缺失值的情况下,女性打板球的概率与男性相似。但是,如果你查看第二张表(根据称呼“小姐”处理缺失值后),我们可以看到女性打板球的概率高于男性。

处理缺失值以提高机器学习模型的准确性
处理缺失值以提高机器学习模型的准确性

上面我们看到了缺失值对训练模型准确率的不利影响。值得庆幸的是,我们有多种方法来处理缺失值和异常值:

  • 缺失值: 对于连续变量,你可以使用平均值、中位数或众数来填补缺失值。对于分类变量,你可以将变量视为单独的类。你还可以在训练数据集上构建模型来预测缺失值。KNN 插补是处理缺失值的绝佳选择。要了解有关这些方法的更多信息,请参阅文章“缺失值处理,你真的会了吗?”。
  • 异常值: 你可以删除观测值并执行变换、分箱或插补(与缺失值相同)。或者,你也可以单独处理异常值。你可以参考文章“超全面! 14 种数据异常值检验方法”,了解更多关于这些方法的信息。

特征工程

此步骤有助于从现有数据中提取更多信息。新信息以新特征的形式提取出来。这些特征可能更能解释训练数据中的方差,从而提高模型的准确性。

特征工程在很大程度上受到假设生成的影响。好的假设能够产生好的特征。这就是为什么我总是建议在假设生成上投入大量时间。特征工程过程可以分为两个步骤:

特征转换

有多种场景需要进行特征转换:

将变量的标度从原始标度更改为介于 0 和 1 之间的标度是机器学习中的常见做法,称为数据归一化。例如,假设一个数据集包含以不同单位(例如米、厘米和公里)测量的变量。在应用任何机器学习算法之前,必须在同一标度上对这些变量进行归一化,以确保公平准确的比较。机器学习中的归一化有助于提高模型性能,并在不同变量之间获得无偏差的结果。

有些算法适用于正态分布的数据。因此,我们必须消除变量的偏度。有一些方法可以消除偏度,例如对数值取对数、平方根或倒数。

有时,创建数值数据的分箱效果很好,因为它也能处理异常值。通过将数值分组到分箱中,可以使数值数据离散化。这称为数据离散化。

特征变换有助于提高机器学习模型的准确性
特征变换有助于提高机器学习模型的准确性

特征创建

从现有变量中导出新变量称为特征创建。它有助于揭示数据集中隐藏的关系。假设我们想根据交易日期预测商店的交易数量。在这里,交易日期可能与交易数量没有直接关联,但如果我们关注星期几,则相关性可能更高。

在这种情况下,关于星期几的信息被隐藏了。我们需要提取这些信息来提高模型的准确率。需要注意的是,每次创建新特征时,情况可能并非如此。这也可能导致已训练模型的准确率或性能下降。因此,每次创建新特征时,都必须检查特征重要性,以了解该特征将如何影响训练过程。

特征选择

特征选择是找出能够更好地解释独立变量与目标变量关系的最佳属性子集的过程。

你可以根据各种指标选择有用的功能,例如:

  • 领域知识: 根据领域经验,我们选择可能对目标变量产生更大影响的特征。
  • 可视化:顾名思义,它有助于可视化变量之间的关系,从而使你的变量选择过程更容易。
箱线图 | 机器学习模型准确率
箱线图 | 机器学习模型准确率
  • 统计参数:我们还考虑 p 值、信息值和其他统计指标来选择正确的特征。
  • 主成分分析 (PCA):它有助于将训练数据表示到较低维空间,但仍能表征数据中的固有关系。它是一种降维技术。降低训练数据维度(特征)的方法有很多,包括因子分析、低方差、高相关性、后向/前向特征选择等等。Python 离群点检测算法 -- PCAPCA, LCA,SVD 降维技术详细对比

多种算法

机器学习中有很多不同的算法,但找到正确的机器学习算法是提高机器学习模型准确率的理想方法。然而,说起来容易做起来难。

这种直觉源于经验和不断的实践。有些算法比其他算法更适合特定类型的数据集。因此,我们应该应用所有相关模型并检查其性能。

如何提高机器学习模型的准确性
如何提高机器学习模型的准确性

算法调优

我们知道,机器学习算法是由超参数驱动的。这些超参数主要影响学习过程的结果。

超参数调优的目标是找到每个超参数的最优值,从而提高机器学习模型的准确率。要调优这些超参数,你必须充分理解这些参数的含义以及它们对模型的影响。你可以对多个性能良好的模型重复此过程。

例如:在随机森林中,我们有各种超参数,例如max_features、number_trees、random_state、oob_score等等。直观地优化这些参数值将获得更好、更准确的模型。

你可以参考文章“集成算法 | 随机森林分类模型集成算法 | 随机森林回归模型”,详细了解超参数调整的影响。以下是一个随机森林 scikit 学习算法,其中包含所有参数的列表:

RandomForestClassifier(n_estimators=10, criterion='gini',
max_depth=None,min_samples_split=2, min_samples_leaf=1, 
min_weight_fraction_leaf=0.0, max_features='auto', 
max_leaf_nodes=None,bootstrap=True, oob_score=False, n_jobs=1, 
random_state=None, verbose=0, warm_start=False,class_weight=None)

集成方法

这是数据科学竞赛获胜方案中最常见的方法。该技术简单地组合了多个弱模型的结果,从而产生了更好的结果。你可以通过以下方式实现:

  • Bagging
  • Boosting

要了解有关这些方法的更多信息,可以参考文章“总结了九种机器学习集成分类算法(原理+代码)机器学习 | 集成算法”。

实施集成方法始终是提高模型准确性的最佳方法。这样做有两个很好的理由:

  • 它们通常比传统方法更复杂。
  • 传统方法为你提供了良好的基础,你可以在此基础上进行改进和借鉴,以创建自己的整体。

至此,我们已经了解了提高机器学习模型准确率的方法。但是,准确率更高的模型并不一定总是表现更好(对于未知数据点)。有时,模型准确率的提升也可能是由于过拟合。

交叉验证

为了找到这个问题的正确答案,我们必须使用交叉验证技术。交叉验证是数据建模中最重要的概念之一。它指的是在最终确定模型之前,尝试留下一个未用于训练模型的样本,并在此样本上测试模型。

Image

交叉验证

这种方法有助于我们实现更广义的关系。想要了解更多关于这种交叉验证方法的信息,请参阅文章“图解机器学习中的 12 种交叉验证技术”。

写在最后

预测建模的过程很繁琐。但是,如果你思维敏捷,就能轻松超越你的竞争对手。获得数据集后,遵循这些行之有效的方法来提高机器学习模型的准确性,你一定能获得一个强大的机器学习模型。但是,只有在你掌握了每个步骤之后,执行这 8 个步骤才能对你有所帮助。例如,你必须了解多种机器学习算法,才能构建一个集成算法。在本文中,云朵君分享了 8 种行之有效的方法来提高预测模型的准确性。

关键要点

  • 生成并测试假设以提高模型性能。
  • 清理和预处理数据以处理缺失值和异常值。
  • 使用特征工程技术从现有数据中创建新特征。
  • 尝试不同的模型选择技术来找到最适合你的数据的模型。
  • 执行超参数调整以优化模型性能。
  • 考虑使用集成技术来组合多个模型以获得更好的性能。
  • 专注于实践学习和结构化思维,不断提高你作为数据科学家的技能。

Q1. 如何提高回归模型的准确性?

A. 有几种方法可以提高回归模型的准确性,例如收集更多数据、相关特征选择、特征缩放、正则化、交叉验证、超参数调整、调整学习率以及 bagging、boosting 和 stacking 等集成方法。

Q2. 如何提高机器学习的精度?

A. 提高机器学习的精度:

  • 提高训练数据的质量。
  • 进行特征选择以减少噪音并聚焦重要信息。
  • 使用正则化或学习率等技术优化超参数。
  • 使用集成方法组合多个模型并提高精度。
  • 调整决策阈值以控制精度和召回率之间的权衡。
  • 使用不同的评估指标来更好地理解模型的性能。

Q3. 机器学习如何提高模型的准确性?

A. 机器学习可以通过发现数据中的模式、识别异常值和异常情况并做出更准确的预测来提高模型的准确性。此外,机器学习算法可以自动执行许多与模型创建相关的任务,从而提高准确性。

Q4.如何提高机器学习模型的准确性

  • 清理数据:填充缺失值、处理异常值并标准化数据。
  • 智能特征:创建有用的特征,对其进行缩放,并尽可能简化。
  • 尝试不同的模型:尝试各种算法以找到最佳拟合度。
  • 调整设置:微调模型设置以获得最佳性能。
  • 良好验证:交叉验证结果以获得可靠的性能指标。
🏴‍☠️宝藏级🏴‍☠️ 原创公众号『数据STUDIO』内容超级硬核。公众号以Python为核心语言,垂直于数据科学领域,包括可戳👉Python|MySQL|数据分析|数据可视化|机器学习与数据挖掘|爬虫等,从入门到进阶!

长按👇关注- 数据STUDIO -设为星标,干货速递ImageImage