数据科学工作通常需要大幅度提高工作量才能提高所开发模型的准确性。这五个建议将有助于改善您的机器学习模型,并帮助您的项目达到其目标。
您可以做以下五件事来改善您的机器学习模型!
1.处理缺失值
我看到的最大错误之一是人们如何处理缺失的价值观,这不一定是他们的错。网络上有很多资料说,您通常通过均值插补来处理缺失值 , 将空值替换为给定特征的均值,这通常不是最佳方法。
例如,假设我们有一个显示年龄和健身得分的表,并且假设一个八十岁的孩子缺少健身得分。如果我们将平均健身得分从15到80岁的年龄范围内进行计算,那么八十岁的孩子似乎将获得比他们实际应该更高的健身得分。
因此,您要问自己的第一个问题是 为什么 数据一开始会丢失。
接下来,考虑除均值/中位数插补外的其他处理丢失数据的方法:
- 特征预测建模:回到我关于年龄和健身得分的示例,我们可以对年龄和健身得分之间的关系进行建模,然后使用该模型查找给定年龄的预期健身得分。这可以通过多种技术来完成,包括回归,ANOVA等。
- K最近邻插补:使用KNN插补,缺失数据中填充了另一个相似样本中的值,对于不知道的数据,KNN中的相似性使用距离函数(即欧几里德距离)确定。
- 删除行:最后,您可以删除该行。通常不建议这样做,但是当您有大量数据开始时,它是可以接受的 。
2.特征工程
可以显着改善机器学习模型的第二种方法是通过特征工程。特征工程是将原始数据转换为更好地表示人们正在试图解决的潜在问题的特征的过程。没有具体的方法可以执行此步骤,这就是使数据科学与科学一样多的艺术。话虽如此,以下是您可以考虑的一些事项:
- 转换DateTime变量以仅提取一周中的一天,一年中的月份等。
- 为变量创建箱或桶。(例如,对于高度变量,可以为100–149厘米,150–199厘米,200–249厘米等)
- 组合多个功能和/或值以创建一个新功能。例如,针对泰坦尼克号挑战的最准确模型之一设计了一个新变量“ Is_women_or_child”,如果该人是女人还是孩子,则为True,否则为false。
3.特征选择
可以大大提高模型准确性的第三个领域是特征选择,即选择数据集中最相关/最有价值的特征。特征太多会导致算法过拟合,而特征太少会导致算法不足。
我喜欢使用两种主要方法来帮助您选择功能:
- 功能重要性:某些算法(例如随机森林或XGBoost)可让您确定哪些功能在预测目标变量的值时最“重要”。通过快速创建这些模型之一并进行功能重要性,您将了解哪些变量比其他变量更有用。
- 降维:主成分分析(PCA)是最常见的降维技术之一,它具有大量特征,并使用线性代数将其简化为更少的特征。
4.集成学习算法
改善机器学习模型的最简单方法之一就是简单地选择更好的机器学习算法。如果您还不知道什么是集成学习算法,那么现在该学习它了!
集合学习 是一种结合使用多种学习算法的方法。这样做的目的是,与单独使用单个算法相比,它可以实现更高的预测性能。
流行的整体学习算法包括随机森林,XGBoost,梯度提升和AdaBoost。为了解释为什么集成学习算法如此强大,我将以随机森林为例:
随机森林涉及使用原始数据的自举数据集创建多个决策树。然后,模型选择每个决策树的所有预测的模式(多数)。这有什么意义?通过依靠“多数胜利”模型,它降低了单个树出错的风险。
例如,如果我们创建一个决策树,第三个决策树,它将预测0。但是,如果我们依靠所有4个决策树的模式,则预测值为1。这就是集成学习的力量!
5.调整超参数
最后,调整模型的超参数并不经常被谈论,但仍然非常重要。在这里,必须清楚地了解正在使用的ML模型。否则,可能很难理解每个超参数。
看一下随机森林的所有超参数:
class sklearn.ensemble.RandomForestClassifier(n_estimators=100, *, 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, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, class_weight=None, ccp_alpha=0.0, max_samples=None)