发布于: Aug 11, 2022

毋庸置疑,人工智能商业机器人,在商业中有着广泛的应用场景,但是通常来讲我们却只能看到只有一些高级玩家、大公司才能在他们的业务场景中真正的使用机器学习(Machine Learning,后面用 ML 简写)来解决业务问题。这背后是有各种各样的原因的,其中最主要的两个原因:一个在于,相比传统的业务系统,机器学习的硬件价格高,一块 v100 的显卡价格昂贵,中小公司难以负担;另外一个难点在于,相比传统的业务系统,机器学习对于工程师的要求不同,专注于机器学习的数据科学家需要掌握特殊的技能,相关人才在市场上炙手可热,而且对于企业来说,即便找到了数据科学家,搭建和维护用于机器学习的相关系统也并非易事。Amazon Web Services 作为云计算的领导者,通过在 ML 方面的巨大投入,大大降低了 ML 的门槛。客户可以在 Amazon Web Services 上通过 EC2 的 P3 实例非常方便的使用到最尖端的显卡,并且是按照实际使用量(小时数)来计费,无需一次性的巨大投入;一方面,Amazon SageMaker 可以通过内置算法、自动调参等功能赋能我们的普通工程师,让他们更容易的来学习和使用 ML;另一方面,Amazon SageMaker 内置了模型的 A/B test,并且可以把训练得到的模型实现高可用部署 ,这些功能只需要通过点击鼠标就可以实现,从而极大的简化了数据科学家把模型应用到生产环境的门槛。此外,Amazon SageMaker 还提供了一系列的其他功能来进一步降低企业开展ML相关的费用,比如通过 Managed Spot Training 节省多达 90% 的成本。

在本篇 blog 中,我们会使用 XGBoost 算法为例,完整的展示 Amazon SageMaker 中一个 ML 工作流的全生命周期。使用到的数据是个公开的房价预测的数据集

XGBoost 是什么?

如果说把机器学习问题分成,常规机器学习(conventional machine learning)和深度学习(deep learning)的话,那么 XGBoost 就是在常规ML竞赛获奖最多的算法。XGBoost 的全称是 Extreme Gradient Boosting,是 gradient boosting 的一种开源实现。gradient boosting 把若干弱模型通过决策树的方式聚合(ensemble)在一起, 形成一个最终的模型,这个过程是一个持续的、不断迭代优化过程,每次迭代优化的方向通过计算 loss function 的梯度来实现,然后采取梯度下降的方式不断的降低 loss function,从而得到一个最终的模型。

XGBoost 最常用来解决常规ML中的分类(regression)和回归(classification)问题。回归问题,举例来说:根据一个人的年龄、职业、居住环境等个人信息推算出这个人的收入,这种推理的结果是一个连续的值(收入)的情况就是一个回归问题;分类问题,比如在欺诈检测中,根据有关交易的信息,来判断交易是不是欺诈,这里的判断是或者否就是一个二分类问题。通常这两类问题都是给出一个表格类型数据,表格中的每列数据都是跟推理的目标(属于某个分类或者推理值)有着潜在关系的数据,XGBoost 特别擅长处理这类的表格数据(tabular data),并据此作出推断。对于表格数据,无非由行、列来组成,在 ML 中对于表格数据中的行和列,我们有很多约定俗称的称谓,在各种关于 ML 的文章中这些称谓会经常出现,为了便于大家理解,在这里对这些叫法做一个梳理:

  • 行(row),叫做一个观察(observation),或者一个样(sample)
  • 列(column)也叫字段(field),属性(attribute),或者特征(feature)

相关文章