机器学习项目模板:ML项目的6个基本步骤


来源 | DeepHub IMBAphp

每一个机器学习项目都有本身独特的形式。对于每一个项目,均可以遵循一组预约义的步骤。尽管没有严格的流程,可是能够提出一个通用模板。html

准备问题

不只是机器学习,任何项目的第一步都是简单地定义当前的问题。您首先须要了解背景和须要解决的问题。而后设计机器学习算法来有效地解决这一问题。一旦清楚地了解了问题,就能够解决它。python

  • 加载库

我将继续使用Python。第一步是加载或导入所需的全部库和包。一些很是基本且几乎必要的机器学习软件包是-NumPy,Pandas,Matplotlib和Scikit-Learn。程序员

  • 加载数据集

加载库后,您须要加载数据。Pandas具备执行此任务的很是简单的功能-pandas.read_csv。read.csv函数不只限于csv文件,并且还能够读取其余基于文本的文件。其余格式也可使用pandas读取功能(例如html,json,pickled文件等)读取。须要牢记的一件事是,您的数据须要与当前工做目录位于同一工做目录中,不然您将须要在函数中提供以“ /”为前缀的完整路径。算法

汇总数据

如今数据已加载并准备好进行操做。可是,您须要先检查数据的外观以及内容。首先,您须要查看数据具备多少行和列,以及每一列的数据类型都是什么(pandas认为它们是什么类型)。json

快速查看数据类型和形状的方法是— pandas.DataFrame.info。这将告诉您数据框具备多少行和列以及它们包含哪些数据类型和值。数组

  • 描述性统计

顾名思义,描述性统计数据以统计数据的形式描述数据-均值,标准差,四分位数等。得到完整描述的最简单方法是pandas.DataFrame.describe。您能够轻松肯定数据是否须要缩放或须要添加缺失值,等等。(稍后会对此进行更多介绍)。框架

  • 数据可视化

数据可视化很是重要,由于它们是了解数据和规律(即便它们不存在)的最快方法。您的数据可能具备数千个样本,甚至更多。没法直接分析全部数值数据。若是须要可视化,可使用Matplotlib和Seaborn这样强大的可视化程序包。机器学习

使用Seaborn的Matplotlib进行可视化可用于检查特征内的相关性以及与目标的关系,可使用散点图,直方图和箱形图来检查分布和偏度等。甚至pandas都有本身的内置可视化库-pandas.DataFrame.plot,其中包含条形图,散点图,直方图等。ide

Seaborn本质上是通过改造的matplotlib,由于它创建在matplotlib的基础上,使绘图更加美观,而且绘图速度更快。热图和对图(pairplot)是Seaborn快速绘制整个数据的可视化以检查多重共线性,缺失值等特征的示例。

一种获取大多数上述数据描述性和推断性信息的统计数据的很是有效的方法是Pandas Profiling。它会生成数据的精美报告,其中包含上述全部详细信息,使您可以一次分析全部数据。

准备数据

知道了数据的内容和规律,就须要对其进行转换,以使其适合算法来更有效地工做,以便提供更准确,更精确的结果。这就是数据预处理,这是任何ML项目中最重要,最耗时的阶段。

  • 数据清洗

现实生活中的数据不能很好地安排在没有异常的数据框中并呈现给您。数据一般具备不少所谓的异常,例如缺失值,许多格式不正确的特征,不一样比例的特征等。全部这些都须要手动处理,这须要大量时间和编码技巧(主要是python和pandas:D )!

Pandas具备各类功能来检查异常,例如pandas.DataFrame.isna以检查NaN等值。您可能还须要转换数据格式以摆脱无用的信息,例如删除“ Mr.”和“ Mrs” ”(若是存在单独的性别特征)。您可能须要使用pandas.DataFrame.replace函数以整个数据框的标准格式获取它,或使用pandas.DataFrame.drop删除不相关的特征。

  • 特征选择

特征选择是选择必定数量的最有用特征的过程,这些特征将用于训练模型。这样作是为了在大多数特征对总体差别的贡献不足时缩小尺寸。若是您的数据中有300个特征,而前120个特征能够解释97%的方差,那么用这么多无用的特征来充实您的算法是没有意义的。减小特征不只能够节省时间,还能够节省成本。

一些流行的特征选择技术包括SelectKBest,特征消除方法(例如RFE(递归特征消除))和嵌入式方法(例如LassoCV)。

  • 特征工程

全部功能可能都不处于最佳状态。特征工程的意思是经过使用一组函数能够将它们转换为不一样的相关的数据。这是为了增长与目标的相关性,从而增长准确性/分数。其中一些转换与缩放有关,例如StandardScaler,Normalizer,MinMaxScaler等。甚至能够经过将一些特征进行线性/二次组合来增长特征,以提升性能。对数转换,交互做用和Box-Cox转换是数字数据的一些有用转换。

对于分类数据,有必要将类别编码为数字,以便算法能够从中识别出来。一些最有用的编码技术是– LabelEncoder,OneHotEncoder和Binarizer。

评估算法

数据准备就绪后,请继续检查各类回归/分类算法的性能(基于问题的类型)。您能够首先建立一个基本模型来设置要进行比较的基准。

  • 拆分验证数据集

训练完模型后,还须要对其进行验证,以查看它是否真的对数据进行了归纳或拟合过分/不足。手中的数据能够预先分为训练集和验证集。这种拆分具备多种技术-训练测试拆分,随机排序等。您还能够对整个数据集运行交叉验证,以进行更可靠的验证。KFold交叉验证,Leave-One-Out-CV是最流行的方法。

  • 测试选项和评估指标

基于一组须要定义的评估指标来评估模型。对于回归算法,一些经常使用指标是MSE和R Square。

与分类有关的评估指标要多样化得多-混淆矩阵,F1得分,AUC / ROC曲线等。对每种算法的这些得分进行比较,以检查哪些算法的性能优于其他算法。

  • 抽查算法

拆分数据并定义评估指标后,您须要在for循环中运行一组算法,以检查哪一个算法表现最佳。简短的算法列表能够很好地解决您的问题,这是一个反复的尝试,这样您即可以加速研究并进一步调优它们。

能够制做流水线,并能够混合使用线性和非线性算法来检查性能。

  • 比较算法

现场运行测试工具后,您能够轻松查看哪些工具最适合您的数据。始终得到高分的算法应该是您的目标。而后,您能够选择最好的,并对其进行进一步调整以提升其性能。

提升准确性

拥有性能最佳的算法以后,能够调整它们的参数和超参数以提供最好的结果。也能够链接多种算法。

  • 算法调整

维基百科指出“超参数调整是为机器学习算法选择一组最佳超参数”。超参数是没法学习的参数,必须在运行算法以前进行设置。超参数的一些例子包括逻辑回归的损失,随机梯度降低的损失以及SVM的核。

这些参数能够在数组中传递,而且算法能够递归运行,直到找到完美的超参数。这能够经过诸如网格搜索和随机搜索之类的方法来实现。

  • 组合

能够将多种机器学习算法组合在一块儿,以造成一个更健壮和更优化的模型,该模型相比于单个算法能够提供更好的预测。这被称为合奏。

有2种类型常见的合奏-套袋(Bootstrap-Aggregating)和Boosting。例如,“随机森林”是一种Bagging集成体,它组合了多个决策树并获取输出的总和。

另外一方面,Boosting经过适应性学习的方式组合了一组弱学习方式:集合中的每一个模型都获得了拟合,从而更加剧视数据集中实例中序列中先前模型存在较大错误的实例。XGBoost,AdaBoost,CatBoost是一些例子。

完成模型

  • 验证数据集的预测

当您得到具备最佳超参数和合奏的最佳性能模型时,能够在未知的测试数据集上对其进行验证。

在训练集上建立独立模型

验证后,对整个数据集运行一次模型,以确保在训练/测试时不会遗漏任何数据点。如今,您的模型处于最佳状态。

  • 保存模型以备后用

有了准确的模型后,您仍然须要保存并加载它,以备未来须要时使用。完成此操做的最经常使用方法是Pickle。

以上就是本文的内容。固然,在机器学习方面,这还不是所有。但这能够用做良好的路线图。对于不一样类型的数据/问题,须要本身发挥。在下面评论您的想法,或说一说您是否了解更好和更关键的技术。

欢迎全部开发者扫描下方二维码填写《开发者与AI大调研》,只需2分钟,即可收获价值299元的「AI开发者万人大会」在线直播门票!

推荐阅读半小时训练亿级规模知识图谱,亚马逊AI开源知识图谱嵌入表示框架DGL-KE
中国顶尖的技术社区们在一个群里,会聊什么…京东智能内容创做算法的演进与实践:基于关键词自动生成摘要马化腾、马云并列成为中国首富;百度回应“将上线电商直播”;.NET 5 Preview 2 发布 | 极客头条程序员职场背锅甩锅指南
警戒!新骗术出现:这些虚假二维码生成器已成功盗取 4.6 万美圆!“出道” 5 年采用率达 78%,Kubernetes 的成功秘诀是什么?

    你点的每一个“在看”,我都认真当成了AI