100多次竞赛后,他研发了一个几乎可以处理所无机器学习成绩的框架
作者头像
  • Rinawong
  • 2019-10-04 18:37:49 7

如何构建一个自动化的机器学习框架

Abhishek Thakur 是一位经验丰富的数据科学家,他在 LinkedIn 上发表了一篇名为《Approaching (Almost) Any Machine Learning Problem》的文章,介绍了一个能够处理几乎所有机器学习任务的自动化框架。这篇文章迅速在 Kaggle 社区引起关注,因为他曾经参与过100多个数据科学竞赛,积累了丰富的经验。尽管这篇文章引发了广泛的讨论,但仍然存在不少争议。

我最近也准备参加 Kaggle 竞赛,之前已经研究了一些案例,总结出一套自己的分析流程。阅读了这篇文章后,我发现其中介绍的一些高效方法非常实用,尤其是他制作的表格,详细列出了各种算法所需训练的参数。

在机器学习中,大部分时间都花费在参数调优和模型训练上。作为初学者,首要任务之一就是学会如何调整参数。虽然分析过程看似简单,只需几步即可完成,但仅仅调用算法并不能保证结果良好。在实际操作中,调用完算法后通常需要进一步分析哪些参数可以优化,哪些数据需要进一步处理,以及是否还有更适合的算法等。

自动化机器学习框架详解

数据科学家大约60-70%的时间用于数据清洗和模型应用,因此该框架主要针对模型应用部分。

Pipeline

什么是 Kaggle?

Kaggle 是一个数据科学竞赛平台,许多公司在此发布接近真实业务的问题,吸引数据科学爱好者共同解决。通过这些竞赛,参与者可以积累经验,提升机器学习技能。

在使用算法解决 Kaggle 问题时,一般需要经历以下步骤: 1. 识别问题:判断问题是分类还是回归。 2. 数据分离:将数据分为训练集和验证集。 3. 特征构造:将原始数据转换为模型所需格式。 4. 数据整合:将处理后的特征合并在一起。 5. 数据分解:利用降维技术优化数据。 6. 特征选择:剔除不相关或冗余的特征。 7. 算法选择与训练:选择合适的算法并进行训练。

第一步:识别问题

首先需要明确这是一个分类问题还是回归问题。通过查看数据及其标签即可确定。数据由特征(X)和标签(y)组成,标签可以是一列或多列,可以是二进制或实数。如果是二进制,则是分类问题;如果是实数,则是回归问题。

第二步:数据分离

为了防止过拟合,需要将数据分为训练集和验证集。训练集用于训练模型,验证集用于评估模型性能。scikit-learn 提供了工具帮助实现这一目标,分类问题使用 StratifiedKFold,回归问题使用 KFold。

第三步:特征构造

数据需要转换成模型所需的格式。数据可分为数字、类别和文本三种类型。类别数据需要转换成独热编码。例如,将“性别”字段从“女”、“男”转换为二进制表示: 女 男 1 0 1 0 0 1 sklearn 提供了 LabelEncoder 和 OneHotEncoder 工具来完成这一任务。

第四步:数据整合

处理完特征后,将它们合并在一起。如果是稠密数据,可以使用 numpy 的 hstack 函数;如果是稀疏数据,可以使用 scipy 的 hstack 函数。处理后的数据可以用于以下算法模型: - RandomForestClassifier - RandomForestRegressor - ExtraTreesClassifier - ExtraTreesRegressor - XGBClassifier - XGBRegressor

但是,线性模型需要先进行正则化处理。

第五步:数据分解

为了优化模型,可以采用以下方法: - PCA:主成分分析,用于降维并保留主要特征。 - SVD:奇异值分解,用于降维和去噪。

第六步:特征选择

特征数量过多会导致分析和训练时间增加,容易引发“维度灾难”,因此需要剔除不相关或冗余的特征。常用的方法有完全搜索、启发式搜索和随机算法。例如,可以使用 Random Forest 或 xgboost 进行特征选择,对于稀疏数据,可以使用 chi-2 方法。

第七步:算法选择与训练

在选择了最相关的参数后,可以使用以下算法: - 分类:Random Forest、GBM、Logistic Regression、Naive Bayes、Support Vector Machines、k-Nearest Neighbors - 回归:Random Forest、GBM、Linear Regression、Ridge、Lasso、SVR

scikit-learn 提供了各种分类和回归算法的实现,可以参考其文档了解算法原理和示例代码。

尽管有多种算法可供选择,但并不是所有算法都适合所有问题。例如,Random Forests 和 SVM 在许多情况下表现出色。通过对比不同算法的功能,可以找到最适合当前问题的解决方案。

参数调优

调参是提高模型精度的关键步骤。作者根据自己的经验,列出了各种模型所需调优的参数。这些信息可以帮助我们快速掌握调参技巧。然而,调参并非终点,还需要进一步分析导致精度低的原因,可能需要进一步挖掘数据的深层含义。

最后,作者还提到,将所有的转换器保存下来,方便在验证集上应用。这样可以确保每次处理数据时的一致性,提高模型的稳定性和准确性。

希望这些内容能对你有所帮助,享受用算法和代码探索数据的乐趣吧!

    本文来源:图灵汇
责任编辑: : Rinawong
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
赛后框架多次几乎研发机器成绩处理可以学习
    下一篇