第一章 机器学习项目流程。
1.1 如何利用机器学习
机器学习常见用途:针对于未知数据,根据以往经验,由计算机系统完成某些预测。
对未知数据进行预测,通常使用监督学习。
监督学习就是根据已知数据(训练数据)和某种算法,确定输入数据和输出数据之间的相关性(即模型),再根据建立得到的这个模型去预测未知数据的一个软件程序。
模型,就是将输入数据和输出数据之间不明显的相关性,用公式或者规则等简单结构形式近似表达得到的结果。
监督学习包括两个阶段:获得已知数据的输入和输出的相关性的学习阶段和根据位置数据通过模型获得预测输出的预测阶段
1.2 机器学习项目的流程
实施项目前需要遵循的推进流程
1.2.1明确定义的问题
明确定义需要解决的问题,明确目的以及明确针对解决问题所设立的假设和解决思路。确定项目的KPI。
1.2.2考虑机器学习以外的方法
需要实现大批量三个月后月的自动处理
适合机器学习方法的问题符合以下条件
条件 | |
1 | 针对大量数据,能够高效稳定地做出判断 |
2 | 允许预测结果中存在一定数量的错误。 |
一般需要先开发一个最简可行产品(MVP)
1.2.3 进行系统的设计
设计系统的要点:
1.如何利用预测结果
2.在哪里尼姆预测错误。
机器学习系统设计需要考虑的问题
问题 | |
1 | 系统整体如何弥补错误 |
2 | 是否需要人工确认或修正 |
3 | 必要的话在哪里弥补预测错误 |
4 | 控制系统整体风险:增加人工确认预测结果的环节,预测结果不会产生重大恶果的地方利用应用程序。 |
1.2.4选择算法
不了解数据的特性,采用聚类等非监督学习或者散布图,矩阵等方法。
根据设想的数据量判断采用在线学习还是批量学习。
1.2.5确定特征、训练数据和日志
确定好特征,将特征表示成数值向量。
获取高质量的正解标签
做好日志设计
1.2.6执行前处理
前处理依赖于任务的性质内容。前处理是将数据(通过剔除无关信息)整理成机器学习所利用形式的数据的重要过程。
解决问题的重要环节
1.2.7学习与参数调整
1.2.8系统实现
1.3 实际机器学习问题的处理方法
问题 | |
1 | 存在概率性处理,所以难以进行自动化测试 |
2 | 长期运行以后,由于存在趋势变化而导致输入出现倾向性变化 |
3 | 处理管道复杂化 |
4 | 数据依赖关系复杂化 |
5 | 实验代码或者参数残留 |
6 | 开发和实际的语言/框架变得智力破碎 |
设计 | |
1 | 人工准备标准组对,用来监控预测性能(1,2,4) |
2 | 预测模型块化,以便能够进行算法的A/B测试(2) |
3 | 模型版本管理,随时可以回溯(4,5) |
4 | 保存每个数据处理管道(3,5) |
5 | 统一开发/实际环境的语言/框架(6) |
1.3.1人工准备标准组对,用来监控预测性能
针对方案 |
实现准备好的数据和正确解答测定预测性能(1) |
仪表板监控预测性能,超过设定阈值发出劲爆,感知长期运行时的倾向性变化(2) |
可能会出现只更新了预测模型而忘了更新词典(4) |
1.3.2预测模块箱模块化,以便能够进行算法的A/B测试
同时采用多个预测模型,对其进行模块化以便于形成多种互换组合,从而实现A/B测试(对照实验或者随机实验)。
1.3.3模型版本管理
进行模型源代码处理
文档形式记录那些数据生成模型,能够缓解4所指的数据依赖问题。
实验代码和算法参数散落在代码里的问题,借助模型的版本管理和文档化,也可以解决。
1.3.4保存每个数据处理管道
保存特定的最优化参数
1.3.5统一开发/实际环境的语言/框架
1.4机器学习系统的成功要素
需要四种类型的人
1.产品系统相关专业知识的人
2.熟悉统计学或者机器学习的人
3.具有数据分析基础平台开发能力的人
4.负责任