赞
踩
摘要说明:
最近在学习“Hands-On Machine Learning with Scikit-Learn &TensorFlow”,其中一些机器学习的思考和处理方式很具有项目级开发的特点。我在原文提供的实例基础上,结合自己的分析,模拟了一个机器学习项目的分析和实现过程,包括项目分析,数据分析,模型分析,性能分析等,在原文的样本代码基础上,编写了完整的可全面自动化运行的代码,供大家一起参考。(文章后面将提供源码的 github 地址)
一. 项目的总体分析
内容 |
分析设计 |
项目名称 |
加利福尼亚房价预测 |
商业背景及价值 |
本公司是一家投资公司,现有一套综合投资分析系统,将汇总各类信息,对行政区进行全面分析后,决定是否值得进行投资。 本项目获得的各行政区的房价中值预测值,将提供给公司的综合投资分析系统,作为其中的一项分析指标,帮助公司进行决策。 目前房价中值的计算,完全依靠业务专家,通过复杂的人工推导分析后获得,费时费力,不及时,不准确。 本项目将实现房价中值的自动化预测计算和处理,其预测结果将影响公司投资决策的速度和准确性,从而直接影响公司的商业业绩。 |
业务需求 |
利用加利福尼亚房价数据库提供的统计数据,通过机器学习,从这些数据中构建模型,获得信息,用于预测加利福尼亚州不同行政区的房价中值 |
非功能性需求 |
目前采用人工分析的方法,全部计算一次所有行政区的房价中值,需要5 人天。 本项目完成后,正常情况下,要求在1小时内完成所有计算。 |
内容 |
分析设计 |
||||||||||||||
基本训练模型方案 |
1. 由于有明确的预测值要求,因此将使用有监督的模型(不是无监督模型); 2. 由于预测的是具体数值,不是标签,因此属于回归问题(不是分类问题,或聚类问题); 3. 根据跟专家的沟通,房价的预测将需要涉及数据集中提供的多个特征属性,属于多变量回归问题 4. 房价数据源信息不是实时连续变化的数据,数据量也不是特别大,完全可以装载到内存后进行处理,因此采用简单的单机批处理方式来完成。(不考虑大数据下的分布式处理及实时数据流的在线处理方式) 综上分析,本项目将采用的基本回归分析模型有:
|
||||||||||||||
模型效果的测量指标 |
回归分析模型的性能,可采用的测量指标有:
RMSE对异常数据比较敏感,若数据集的异常数据很少时(即数据分布比较集中,像一个钟型),用RMSE来衡量模型效果还是比较好的, 因此,本项目将采用 RMSE 指标进行模型性能的衡量比较,RMSE值越小,模型性能越好。 |
||||||||||||||
开发环境 |
Python的生态环境提供了我们完成该项目需要的机器学习函数库,开源,通用性好,运行性能可满足项目要求;如 numpy, pandas, scikit-Learn等,其中scikit-Learn模块中有一些流程化处理的函数,可以让自动化处理的实现更加简洁和优雅。 因此,本项目将采用 Python + Scikit-Learn 为主要开发平台 |
||||||||||||||
自动化及可重用性 |
这是一个需要可重复使用的生产系统,不是一次性工具,也不是单纯研究用的人机交互程序;需要尽量把处理代码自动化,以提高调试优化的效率,并在生产环境中部署后自动化运行,提供必要的运维日志信息 |
||||||||||||||
前提假设 |
1. 加利福尼亚房价数据库持续提供更新的房价数据 2. 公司综合投资分析系统的数据接口保持不变,需要本项目提供的是房价的具体数值,而不是“昂贵”,“中等”,“低廉”的分类标签。否则,本项目的学习模型将会更改为分类模型 |
||||||||||||||
术语说明 |
关于记录集变量的定义说明如下:(括号内为全名称)
|
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。