在这个系列里,我们的目的就是从零开始,完整的创建一个基于真实数据的机器学习项目,并通过这个实践,对使用机器学习技术解决问题的方式,有一个更为具体的了解。
而万里长征的第一步,当然就是找到可以用来学习的数据。
使用来自现实生活的真实数据
为了尽可能让我们的项目贴近实际的情况,我们最好选择来自实际生活中的数据进行学习,而不是实验室中哪些已经为我们准备好的测试和验证数据集。因为,认识客观数据、组织原始数据记录,去除数据记录中的噪音,同样是机器学习项目中,非常重要的一个环节。
那么,究竟上哪去找现实世界中的数据呢?靠自己收集显然是不现实的。不过好在,有很多网站为我们提供了这样的开放数据库,例如:
其中,在之前的例子里,我们也提到过UCI,我们从中下载了北京PM 2.5的模型数据。这次,我们要使用一个更“有名”的数据集,之所以更有名,是因为很多机器学习的教程,都采用了这个数据。他就是从1990年开始统计的美国加州的不同地区的房价。
认真思考要解决的问题究竟是什么
了解数据集
拿到数据后的第一件事,当然就是了解其中包含的内容。我们下载下来的应该是一个叫做california-housing-prices.zip的文件,解压缩之后,是一个叫做housing.csv的文件,其中包含了下面这些字段(当然,你也可以在Kaggle的预览页面看到这些内容):
YourFirstMLProj
其中:
- longitude / latitude:表示房屋位置的经纬度;
- housing_median_age:表示该地区的平均房龄;
- total_rooms:表示该地区的总房间数;
- total_bedrooms:表示该地区的总卧室数;
- population:表示该地区的总人数;
- households:表示该地区的总住户数;
- median_income:表示该地区人口的平均收入;
- median_house_value:表示平均房价;
- ocean_proximity:表示该区域是否临海;
以上这些字段,之所以会统计成平均值,是因为每一条记录,表示的都是美国人口调查局最小地理统计单位内的数值,其中,每个统计单位内大约有600 - 3000人口不等。这和把北京分为东城区、朝阳区、海淀区等等的含义类似。
认清建模的目的
了解完数据集之后,接下来,我们要搞清楚建模的目标。也就是说,我们要用这些数据集做什么事情呢?当然,一个最直接的想法就是用这个模型预测房价,以找到最具投资价值的地区。
于是,在我们得到的这份数据里,median_house_value就是数据集中的Label
,而其它列则是Features。
在泊学的Machine Learning 101中提到过,Features是指要进行预测而提供的已知条件,而Label则是和Features对应的结果,每一组Features对应着它自己的结果,这是在机器学习领域特有的表达方式。在整个系列中,我们都将使用这样的表述,请大家记住。
但通常,在一个大型系统里,机器学习的过程并不是孤立的,而是一连串学习系统的集合。我们管这样的集合,叫做Pipeline。
YourFirstMLProj
就像图中这样,插红旗的,表示我们的目标,评估特定地区房屋的市场价值。此时的输入,就是采集到的各种和房屋有关的数据,输出的,则是房价。
但得到房价后,这个值还可以继续做为输入。例如,把它和一些经济因素的数据放在一起,来进一步评估地区的投资价值。
而由这样的关系形成的数据计算流程,就叫做Pipeline,在整个流水线上,我们评估房价的模型,叫做Upstream,而评估投资价值的模型,叫做Downstream。
这样做的一个好处就是,面对非常广泛的数据集合,不同研究领域的团队,可以根据自己的实际需要对样本进行取舍,并且,一旦其中某个环节的计算节点发生了故障,整个系统在一个相对的时间段里,仍旧是可用的,因为之前计算形成的结果还在。








网友评论