5种有效方法:提高机器学习模型的准确性

5种有效方法:提高机器学习模型的准确性

建立机器学习模型是一个复杂的过程,即使是丰富经验的数据科学家也经常会犯错。

如果想让你的机器学习模型尽可能准确,你需要知道一些改进的方法。在这篇文章中,我们将讨论五种方法,它们可以提高你的机器学习模型的准确性。如果你想了解更多机器学习相关内容,可以阅读以下这些文章:
机器学习的一站式library清单
你知道吗?SQL也能做机器学习!
群体学习(Swarm Learning)的工作原理——结合区块链和机器学习的更优解决方案
5种机器学习的分类器算法

1. 处理丢失的值和异常值

要提高机器学习模型的准确性,最简单的方法之一就是处理缺失值和异常值。

如果你的数据缺少值或包含异常值,那么你的模型很可能不太准确。这是因为缺少值或包含异常值会导致模型对数据做出不正确的假设。

举个例子,假设你有一个数据集,其中包含所有年龄大致相同的人(成年人)的身高和体重测量值。如果其中一个人的体重测量不准确,而另一个人的体重值异常高或低,那么你的模型就会根据这两个人的身高对他们做出错误的假设。

同样重要的,你也要注意缺失的值和异常值可能会导致模型过拟合(overfit)或欠拟合(underfit)

有很多方法可以处理丢失的值和异常值。

你可以:

  • 从你的训练数据集中删除含有缺失值或异常值的数据点。
  • k近邻(k-nearst)线性回归(linear regression)等技术估算缺失值。
  • 使用bootstrapping等技术来消除异常数据的影响

2. 特征工程(Feature Engineering)

特征工程可以从现有功能中创建新的功能。

例如,你可以创建一个功能,它可以根据“家庭地址”和“工作地点”这两个功能来表示某人住的地方离他们的工作地点的距离。

特征工程可以让机器学习模型做出更准确的预测,从而提高机器学习模型的准确性。

创建新功能的最常见方法之一,是将多个现有的功能组合成一个或多个新功能。

例如,你可以将“年龄”与“体重”和“身高”结合起来,创建一个名为身体质量指数(BMI)的功能。这使得你的模型能够做出更好的预测,因为在你的模型中会有更少的特征数量和垃圾信息。

目前有很多不同的方法来设计特征,最好的方法通常取决于你所用的是什么数据集。

以下是一些有用的建议:

  • 试着找出不同特征之间的相关性,并创造出能够捕捉这些关系的新特征。
  • 使用转换,如对数转换或标准化,让你的特性更具可比性,更容易使用。
  • 利用像特征提取和特征选择这样的数据预处理技术,来帮助你找到数据集中最重要的特征。

3.特征选择

特征选择是一个帮助你识别数据集中最有用的特征的过程。

它的目标是通过去除冗余信息(即仅包含一个特征的数据点)来降低或消除噪声,提高机器学习模型的准确性。

选择特征有很多不同的方法,但它们都涉及用某种形式的统计分析或过滤掉重要性分数较低的特征(也就是那些对模型的准确性没有多大影响的特征)

一些常见的特征选择技术包括:

  • 根据特征和数据集中其他变量的相关性对其进行排序,然后删除那些相关性较低的特征。例如,你可以用Pearson相关系数来度量两个变量之间的关系强度。
  • 根据它们的重要性分数过滤特征,一般用梯度下降或随机森林等技术来计算。
  • 选择和目标变量具有高相关性,但自身相关性较低的特征子集(即,它们彼此不相关或独立)

4. 尝试多种算法

一个常见的错误,是在训练模型时只尝试一种算法。如果你有很多的数据,这可能行得通,而且算法也很容易学习,但大多数现实世界的数据集要比这复杂得多。

在你的数据集中,可能会有一些特性对你的模型的准确性影响不大,但直接删除它们只会更麻烦。

这就是使用多种算法会有帮助的地方。

通过尝试不同的算法,你可以确定哪些算法最适合你的数据,然后使用这些信息来提高模型的准确性。

有很多不同类型的机器学习算法,所以很难知道哪些算法适合你的数据。你可以对同一数据集上的多个算法进行交叉验证,然后比较它们之间的准确性得分。

如果你在用Python进行机器学习,scikit-learn 有一个很好的常用机器学习模型列表,你可以在数据上尝试这些模型,包括:

  • 线性回归Linear Regression
  • 支持向量机Support Vector Machines
  • 决策树Decision Trees
  • 随机森林Random Forests
  • 神经网络Neural Networks

集成模型

另一种方法是使用集成,它可以把两个或多个算法组合成一个模型。集成算法通常比单个算法更准确,因为它们利用了每个算法的优点,并弥补了它们的缺点。

换句话说,如果你把多个表现不佳的机器学习学习者(自身表现不佳的模型)组合成一个整体,你就能得到一个表现较强的学习者(即作为个体表现良好的模型)

5. 调整超参数(Hyperparameters)

在机器学习模型中,超参数决定了它们工作方式。

这些参数可以包括深度神经网络的层数,或者在一个集成模型中应该有多少棵树。

你通常需要自己调整这些超级参数,因为它们不会在你训练模型时自动设置。

这就是交叉验证(cross-validation)起作用的地方。通过将数据分解为训练集和测试集,你可以在训练集上尝试不同的超级参数组合,然后看看它们在测试集上的表现如何,这有助于为模型找到超级参数的最佳组合。

另一种方法是使用网格搜索(grid search),这是一种为数据找到超级参数的最佳组合的方法。

网格搜索通过尝试每一个可能的参数组合,直到找到一个可以为你的指标提供最佳性能的组合(例如准确性),然后你可以用超级参数的组合来训练你的模型。

你可以通过Python中的scikit-learn库使用网格搜索。

结论

有很多方法可以提高我们机器学习模型的准确性。通过使用特征工程、调整超级参数和尝试多种算法等,你可以为自己创造一个真正准确的模型。

最重要的是,要不断尝试并从错误中学习,对你的数据和你使用的算法了解的越多,你的模型性能就越好。

希望你喜欢这篇文章,感谢你的阅读!你还可以订阅我们的YouTube频道,观看大量数据科学相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Chris Zita
翻译作者:过儿
美工编辑:过儿
校对审稿:Jiawei Tong
原文链接:https://towardsdatascience.com/5-effective-ways-to-improve-the-accuracy-of-your-machine-learning-models-f1ea1f2b5d65