端到端的机器学习项目

  • 主要步骤
    • 0、处理真实数据
    • 1、界定问题并从着眼于全局
    • 2、获取数据
    • 3、探索数据
    • 4、准备数据
    • 5、列出合适的候选模型
    • 6、微调系统
    • 7、展示你的解决方案
    • 8、启用你的项目

主要步骤

  • 界定问题并从着眼于全局
  • 获取数据
  • 通过发现并可视化数据来得到见解
  • 为机器学习算法准备数据
  • 选择多种候选模型并训练,进而选择表现最佳的系统
  • 优化模型
  • 展示结果
  • 启动、监控并维护学习系统

0、处理真实数据

以下是一些提供开放数据集的网站:

  • UC Irvine Machine Learning Repository
  • Kaggle datasets
  • Amazon’s AWS datasets
  • Data Portals
  • OpenDataMonitor
  • Quandl
  • Wikipedia’s list of Machine Learning datasets
  • The datasets subreddit
  • Quora.com

1、界定问题并从着眼于全局

  • 用商业术语定义目标
  • 您的解决方案将如何使用?
  • 目前的解决方案/变通方法
  • 如何界定问题?
  • 如何定量评估模型的表现:均方根差法(Root Mean Square Error (RMSE)),数学公式如下:
  • 其中 m 表示用于计算 RMSE 的数据集中的实例数;x(i) 表示数据集中第 i 个实例的全部特征值组成的向量,y(i) 表示第 i 个实例对应的标签(即想要的输出值);X 表示数据集中所有实例的所有特征值组成的矩阵,每一行都表示一个实例,第 i 行表示 x(i) 的转置,记作 (x(i))T ;h 表示系统的预测值,又叫做假设(hypothesis);RMSE(X, h) 表示在样例集上使用假设 h 的开销函数
  • 模型的性能是否与商业目标相一致?
  • 达到商业目标的最低性能要求是什么?
  • 可以进行类比的问题是什么?能否使用其经验或工具?
  • 人类的专业知识是否可用?
  • 您如何手动的解决这个问题?
  • 列出你或其他人迄今为止做出的假设?
  • 如果可能的话,对假设进行验证?

2、获取数据

  • 列出所需的数据及数据量
  • 寻找并记录您可以在哪里获取这些数据?
  • 检查它需要多少空间?
  • 检查法律义务,并在必要时获取授权
  • 获取访问授权
  • 创建工作区(具有足够的存储空间)
  • 获取数据
  • 将数据转换为易于处理的格式,但是不改变数据本身内容
  • 确保敏感性数据被删除或保护
  • 检查数据规模和类型
  • 从训练数据中采样一个测试集(通常是20%,如果数据量非常大,可以适当减小),把它放到一边,不要用它训练模型

问题:下载数据时报错:urlretrieve timeout[WinError 10060]
方案:下载数据之前先设置代理,如下:

# set proxy
proxy = urllib.request.ProxyHandler({"https":"http://your proxy IP:port"})
opener = urllib.request.build_opener(proxy)
urllib.request.install_opener(opener)urllib.request.retrieve(housing_url, tgz_path)

3、探索数据

  • 创建用于探索的数据副本(如有必要,将其降低到可管理的规模)
  • 创建Jupyter笔记,对数据探索进行记录
  • 研究每个属性及其特征:名称、类型、缺失值的比例、噪声和噪声类型(随机、异常值、舍入错误等)、对任务的有用性、分布类型(高斯分布、均匀分布、对数分布等)
  • 对于监督学习任务,识别任务属性
  • 可视化数据
  • 研究数据之间的相关性
  • 研究如何手动解决问题
  • 识别您可能想应用的有望实现或完成任务的转换
  • 识别可能有用的额外数据
  • 记录你所学到的东西

4、准备数据

注意事项:
1、只处理数据副本,保证原始数据不变
2、为使用的所有数据转换编写函数,有以下原因:① 下一次可以很容易地处理新的数据;② 在未来的项目中也可以使用这些转换函数;③ 清洗数据并准备测试集;④ 在解决方案启动后,清洗并准备新的数据实例;⑤ 使得选择超参数变得容易

  • 数据清洗:① 修复或删除异常值(可选); ② 填充缺失值或删除这些记录
  • 特征选择(可选):删除对于任务没有作用的属性
  • 特征工程(设计制造):① 离散连续属性; ② 分解属性; ③ 如果对任务有帮助,则进行属性转换; ④ 如果对任务有帮助,将多个属性聚合成一种新属性
  • 特征缩放:标准化(standardize)或规范化(normalize)特征

5、列出合适的候选模型

注意事项:
1、如果数据很庞大,你可能想要采样较小的训练集,这样你可以在相对合适的时间训练多个不同的模型(这种方法不适用于复杂的模型,比如大型神经网络、随机森林,因为它们需要大规模数据的训练才能保证良好的表现)
2、尽可能将这些步骤自动化

  • 使用标准参数对快速而粗糙的模型(如线性回归、简单贝叶斯、(支持向量机)SVM、随机森林、神经网络)进行训练
  • 测试并比较它们的性能:对于每一种模型,通过N层交叉验证并计算性能测试的平均值和标准分布
  • 对每一种算法,分析最重要的那些变量
  • 分析每个模型产生的错误的类型:人类会使用哪些数据来避免这些错误?
  • 快速进行一轮特征选择和工程(设计制造)
  • 对前面的5个步骤进行一次或2次快速迭代
  • 把性能最好的2-5个模型列入候选,优先选择产生不同错误类型的模型

6、微调系统

注意事项:
1、这一步你可能希望使用尽可能多的数据,尤其是快到微调步骤的尾声时
2、尽可能将这些步骤自动化
3、不要在测试完泛化误差后微调系统

  • 使用交叉验证微调超参数:① 把你的数据转换选择作为超参数,尤其是当你不确定时(比如是否用0或平均值代替缺失值,还是丢弃这些数据);② 除非可选的超参数值很少,否则更推荐随机搜索而不是网格搜索。如果训练时间很长,更推荐贝叶斯优化算法
  • 尝试整体方法。将表现最好的模型组合使用的效果会比单独使用单独运行它们更好
  • 当你对最终的模型很有信心时,在测试集上测试以估计该算法的泛化错误

7、展示你的解决方案

  • 记录你所做的一切
  • 创建一个好的展示方案:确保优先突出显示全局
  • 解释为什么你的解决方案实现了目标
  • 不要忘记展示你在这个过程中发现的有趣的地方:① 描述哪些方法奏效,哪些不奏效 ② 列出你的假设以及系统的局限性
  • 确保你的发现通过优美的可视化或容易记住的描述来展示:

8、启用你的项目

  • 让您的解决方案为实际应用做好准备
  • 编写监控代码,以检查你的系统在一定时间内的实时性能,当其下降时做出预警:① 小心缓慢的退化;② 测试性能可能需要人力资源; ③ 也要监控输入数据的质量,对于在线学习尤其重要
  • 根据新数据,定期重新训练您的模型

Hands-on ml2 - 第二章笔记相关推荐

  1. 《Spring Recipes》第二章笔记:Creating Beans by Invokin...

    2019独角兽企业重金招聘Python工程师标准>>> <Spring Recipes>第二章笔记:Creating Beans by Invoking an Insta ...

  2. 《Spring Recipes》第二章笔记:Customizing Bean Initiali...

    2019独角兽企业重金招聘Python工程师标准>>> <Spring Recipes>第二章笔记:Customizing Bean Initialization and ...

  3. 算法图解第二章笔记与习题(选择排序)

    算法图解第二章笔记与习题(选择排序) 文章目录 算法图解第二章笔记与习题(选择排序) 2.2 数组和链表 2.2.1 链表 2.2.2 数组 2.2.3 数组和链表的读取.插入和删除操作的时间复杂度 ...

  4. 计算机网络(中科大郑烇)第二章笔记

    文章目录 第二章 应用层 0.总结 1.应用层协议原理 2.Web and HTTP 2.1 Web与HTTP的一些术语 2.2 HTTP概述 2.3 HTTP连接 2.4 HTTP请求报文 2.5 ...

  5. Linux就该这么学第二章笔记~

    文章目录 linux就该这么学第2章笔记 二.常用命令 2.1命令格式 2.2常用系统工作命令 2.3系统状态检测命令 2.4查找定位文件命令 2.5文本文件编辑命令 2.6文件目录管理命令 linu ...

  6. 计算机组成原理|第二章(笔记)

    目录 第二章 计算机的发展及应用 2.1 计算机的发展史 2.1.1 计算机的生产和发展 2.1.2 微型计算机的出现和发展 2.1.3 软件技术的兴起与发展 2.2 计算机的应用 2.3 计算机的展 ...

  7. 《Head First设计模式》第二章笔记 观察者模式

    背景 客户有一个WeatherData对象,负责追踪温度.湿度和气压等数据.现在客户给我们提了个需求,让我们利用WeatherData对象取得数据,并更新三个布告板:目前状况.气象统计和天气预报. W ...

  8. 【离散数学】第二章 笔记(完)

    写在前面 是复习的笔记.截图是老师的课件. 2.1 谓词 谓词的概念与表示: 谓词:用来刻划一个个体的性质或多个个体之间关系的词,常用大写字母P, Q, R-来表示. 客体:可以独立存在的事物称为客体 ...

  9. TCP/IP第二章笔记链路层协议

    二.链路层 2.1 引言 链路层由三个目的: 主要为IP模块发送和接受IP数据包: 为ARP模块发送请求和接受ARP应答: 为RARP发送RARP请求和接收RARP应答: TCP/IP协议支持不同的链 ...

最新文章

  1. HP存储raid5两块硬盘离线lvm下vxfs文件系统恢复数据过程
  2. 如何规划令人流连忘返的网站?
  3. 数据结构与算法(C++)– 图(Graph)
  4. Maven项目依赖管理工具
  5. 【渝粤题库】陕西师范大学201491 法学导论作业
  6. mybatis3 添加ehcache支持
  7. .Net 转战 Android 4.4 日常笔记(1)--工具及环境搭建
  8. 番茄风控深度剖析风控岗位必备技能
  9. 阿里云、腾讯云、UCloud 、华为云云主机对比测试报告
  10. return可以返回多个值_JDK10的新特性:var泛型和多个接口实现
  11. 删除任务管理器中的启动项
  12. springboot毕设项目银行助学贷款管理系统0o571(java+VUE+Mybatis+Maven+Mysql)
  13. 威联通NAS TS-873A 实测
  14. java 对象转map,map转对象
  15. 产品数据管理(PDM)技术说明书
  16. 华硕(ASUS)路由器AP模式设置教程
  17. 我的前端成长之路-写给在迷茫路上的人
  18. 网络舆情相关书籍推荐
  19. Java中关于队列与栈的区别
  20. 小时候的感觉——小米蓝牙手柄评测

热门文章

  1. 小学计算机教师述职总结,小学信息技术教师工作总结范文
  2. 日本通信一哥雄风不再 DoCoMo频出手苦寻自救
  3. 开启推广商业活动之前,先确定目标。——Google Adwords
  4. 怎样提高百度关键词排名,关键词排名优化方法
  5. BEM战略解码的核心是打赢必赢之战
  6. 「网络流 24 题」5.圆桌聚餐
  7. 基于ssm保险理财系统
  8. 几张图让你搞懂波分复用 (WDM)
  9. 以科技赋能,跨越速运助推企业升级发展
  10. C#实现贪吃蛇小游戏