端到端机器学习项目
对问题进行宏观的分析
欢迎来到机器学习房地产公司。你的第一个任务是基于加州人口普查的数据建立一个加州房价的模型。这些数据内容包含有加州每个街区的人口、收入中位数、房价中位数等等。要求你的模型能够学习这些数据并在给定其他数据内容的情况下,预测任何一个街区的房价中位数。
限定问题的边界
第一个要提出的问题就是这件事的最终目标是什么,显然单纯构建一个模型并不是最终的目标,公司准备如何使用模型,如何从中受益?这个问题很重要因为这决定了你将问题限定在什么样的范围内,选择什么样的算法,使用什么样的性能指标去评价模型以及将要花多少时间精力去调整模型。
老板回答你说该模型的输出将和其他参数一起作为另一个机器学习系统的输入,这个下游的机器学习系统将决定是否值得投资某个区域。
图2-2 房地产投资的机器学习流水线
一系列数据处理组件被称为数据流水线。在机器学习系统中,流水线非常普遍。流水线中的各个部分通常异步工作,每个部分都是自洽的,各个部分之间的接口就是数据集。这使得整个系统很容易掌握,各个团队能够专注于自己的部分。
接下来要问的问题就是针对需要我们解决的问题,当前正在使用的解决方案是怎样的(如果有的话)?这通常能够给你一些参考以及如何解决问题的见解。
获取了这些信息之后,你就要开始设计你的系统了。首先需要对问题进行限定:是有监督的还是无监督的,或者强化学习?是分类问题还是回归问题或者其他类型?是需要批量学习还是在线学习?
显然,该问题是个典型的有监督学习,因为每个样本都带了预期输出,即房价中位数。而且这是个典型的回归问题,因为要做的就是预测值,而且还是个多元回归(作为输入的参数有多个,如街区的人口数,收入的中位数等等)。最后,由于没有持续的数据输入到系统中,因此没有适应变化数据的需求,而且数据量不大,可以一次性加载,所以使用批量学习即可。
如果数据量巨大,无法一次加载,那么可以将批量学习系统分解到多个服务器上(MapReduce技术),或者使用在线学习。
选择一个性能指标
下一步就是要为模型选择一个性能指标。回归问题常用的指标是均方根误差(Root Mean Square Error ,RMSE)。它指的是系统预测误差的标准差,例如均方根误差为50000意味着68%的预测值落在与真实值误差50000的范围内,95%的预测值落在与真实值相差100000的范围内。RMSE的公式如公式2-1所示。
式2-1 RMSE
RMSE ( X , h ) = 1 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 \operatorname{RMSE}(\mathbf{X},h) = \sqrt{\frac1m\sum_{i=1}^{m}{(h(x^{(i)})-y^{(i)})^2}} RMSE(X,h)=m1∑i=1m(h(x(i))−y(i))2
式中用到了几种机器学习里的常见表示方法:
m m m代表使用RMSE进行度量的数据集中实例的个数
x ( i ) \mathbf{x}^{(i)} x(i)是数据集中第 i i i个实例的所有特征(不包括标签)组成的向量, y ( i ) y^{(i)} y(i)是其标签(即实际值)
例如,如果第一个街区位于经度-118.29°,维度33.91°,有1416位居民,收入中位数为38372,房价中位数为156400,那么
x ( 1 ) = ( − 118.29 33.91 1 , 416 38 , 372 ) \mathbf{x}^{(1)}=\left(\begin{array}{c}{-118.29} \\ {33.91} \\ {1,416} \\ {38,372}\end{array}\right) x(1)=⎝⎜⎜⎛−118.2933