作者:Seth DeLand

翻译:王威力

校对:万文菁

本文约1800字,建议阅读8分钟。

本文是一个循序渐进的指南,包括如何预处理数据和从中生成特征。并且还包含其他示例资源的链接,以帮助您探索有关机器学习的方法和其他示例。

机器学习的实现路线充满了反复试验。在这个领域,新手工程师和科学家将不断调整他们的算法和模型。此过程中会出现挑战,尤其是在数据处理和确定最优模型的时候。

在建立机器学习模型时,重要的是知道现实世界的数据并不完美,因此不同类型的数据需要不同的处理方法和工具,并且在确定最优模型的时候不可避免会有取舍。

下面的系统流程将描述如何开发一个训练好的模型用于手机健康监测app,该app跟踪用户整天的活动。输入包括手机端记录的感知器数据。输出将是用户的活动:行走,站立,坐下,跑步,或跳舞。由于这是一个分类问题,这个例子将应用有监督学习。

访问和加载数据


用户将拿着手机坐下来,记录传感器数据,并将其存储在标记为“坐下”的文本文件中。之后,用户拿着手机站起来,记录传感器数据,并将其存储在标记为“站立”的文本文件中。用同样的方法来记录跑步、行走、跳舞的数据。

数据预处理


由于机器学习算法无法区分数据中的噪声和有价值的部分,所以需要在训练模型前清洗数据。数据预处理可以用数据分析工具来实现,比如MATLAB。为了清理数据,用户可以导入并绘制数据,去除异常值。在这个例子中,离群值可能是由于在记录数据时无意中移动了手机造成。用户还需要检查缺失值,缺失值可用其他样本的近似值或参照数据代替。

图 1 数据预处理之去除离群值,即位于数据主要部分之外的数据点。

数据清洗之后,将数据集分为两个部分,一部分作为训练集,另一部分将是用于测试和交叉验证的“保留”数据。

使用预处理后的数据生成特征


原始数据必须转化成机器学习算法可以使用的信息。要实现这一点,用户必须生成能够区分手机端数据的特征。

在这个例子中,工程师和科学家必须划分好特征以帮助算法区分步行(低频)和跑步(高频)。

数据类型

特征选择目标

技巧

传感器数据

从原始传感器数据中提取信号特性以创建更高级别的信息

峰值分析——应用傅里叶变化,识别主频

脉冲和转移矩阵——得到信号特征如上升时间、下降时间、趋稳时间

频谱测量——画出信号功率、带宽、均值频率、中值频率

图像和视频数据

提取特征,例如边缘位置、分辨率、颜色

视觉词袋——生成图像特征直方图,例如边缘、角点、连通区域

方向梯度直方图——生成梯度方向直方图

最小特征值算法——监测图像角点

边缘探测——探测图像亮度变化最快的像素点位置

交易数据

计算提炼数据中信息的派生值

时间标记分解——把时间标记分解成到天或者月

计算集成值——生成更高级别的特征,比如某一特殊时间出现的总次数

表 1 依据数据类型导出特征,可以把原始数据转化成机器学习模型可以使用的高级别信息


建立并训练模型


从一个简单的决策树开始:

图 2 基于特征建立的决策树分类模型

绘制混淆矩阵以观察模型效果。

图 3 矩阵显示该模型在区分跳舞和跑步时存在问题

基于上面的混淆矩阵,这表示决策树不适合这种类型的数据,或者应该使用不同的算法。

K近邻算法(KNN)存储所有训练数据,将新数据点与训练数据进行比较,得到K个最相似样本,并返回这些相似样本的最频繁类。这个算法展示出更高的准确度。

图 4 改用KNN算法提高了准确度——尽管还有提高的可能性

另一个选择是多分类支持向量机(SVM):

图 5 SVM的准确率在每个分类标签上都接近99%

这个过程证明了通过反复试验可以更好实现目标。

改进模型


如果模型无法可靠地区分跳舞和跑步,就需要改进模型。改进模型可以通过使其复杂化以更好地拟合数据,或者使其简单化以降低过拟合的可能性。

为了简化模型,可以通过以下方法减少特征数量:

  • 相关矩阵,去除相关性弱的特征;

  • PCA降维,消除冗余;

  • 有序地缩减特征,直到模型效果不再提高。

为了使模型更加复杂,工程师和科学家可以通过集合多个简单模型得到一个更大的模型或者增加更多数据源。

完成训练和调整之后,模型可以应用在测试集(数据预处理时保留的一部分数据)。如果模型可以可靠地对活动分类,那么它就可以应用在手机应用程序。

工程师和科学家第一次训练机器学习模型的时候将会遇到挑战,但应该意识到反复试验是过程的一部分。

上述的工作流程提供了构建机器学习模型的路线图,并且可以应用到其他不同的问题上,比如预测维护、自然语言处理和自动驾驶。

探索这些资源以了解更多机器学习方法和例子:

  • Supervised Learning Workflow and Algorithms:Learn the workflow and steps in the supervised learning process

    https://www.mathworks.com/help/stats/supervised-learning-machine-learning-workflow-and-algorithms.html?s_tid=srchtitle&s_eid=PEP_19715.html

  • MATLAB Machine Learning Examples:Get started with machine learning by exploring examples, articles, and tutorials

    https://www.mathworks.com/solutions/machine-learning/getting-started.html&s_eid=PEP_19715.html

  • Machine Learning with MATLAB:Download this ebook for a step-by-step guide providing machine learning basics along with advanced techniques and algorithms

    https://www.mathworks.com/campaigns/offers/machine-learning-with-matlab.html?s_iid=nd_bb15&s_eid=PEP_19715.html

原文标题:

Building a Machine Learning Model through Trial and Error

原文链接:

https://www.kdnuggets.com/2018/09/mathworks-building-machine-learning-model-through-trial-error.html

译者简介

王威力,求职狗,在香港科技大学学习大数据科技。感觉数据科学很有难度,也很有意思,还在学(tu)习(tou)中。一个人肝不动的文献,来数据派follow大佬一起肝。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:datapi),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”拥抱组织

独家 | 手把手教你在试验中修正机器学习模型(附学习资源)相关推荐

  1. 独家 | 手把手教你处理数据中的缺失值

    作者:Leopold d'Avezac 翻译:廖倩颖 校对:杨毅远 本文长度为1900字,建议阅读8分钟 本文为大家介绍了数据缺失的原因以及缺失值的类型,最后列举了每一种缺失值类型的处理方法以及优缺点 ...

  2. 手把手教你使用Flask轻松部署机器学习模型(附代码链接) | CSDN博文精选

    作者 | Abhinav Sagar 翻译 | 申利彬 校对 | 吴金笛 来源 | 数据派THU(ID:DatapiTHU) 本文旨在让您把训练好的机器学习模型通过Flask API 投入到生产环境  ...

  3. 独家 | 一文解析统计学在机器学习中的重要性(附学习资源)

    作者:Jason Brownlee 翻译:陈之炎 校对:万文青 本文共2400字,建议阅读10分钟. 本文介绍为什么统计对于通用应用和机器学习如此重要,并大致了解各种可用的方法. 统计是一组工具,您可 ...

  4. 独家 | 手把手教你组织数据科学项目!(附代码)

    作者:kdnuggets 翻译:和中华 校对:丁楠雅 本文约4200字,建议阅读10分钟. 本文介绍了一个工具可以帮助迅速构建一个标准但灵活的数据科学项目结构,便于实施和分享数据科学工作. 由Driv ...

  5. 独家 | 手把手教TensorFlow(附代码)

    上一期我们发布了"一文读懂TensorFlow(附代码.学习资料)",带领大家对TensorFlow进行了全面了解,并分享了入门所需的网站.图书.视频等资料,本期文章就来带你一步步 ...

  6. python正确的输入语句_手把手教你在python中如何使用while True语句

    在学习过程中,经常能遇到采用while True的用法.下面以一个例子进行说明: 建立一个用户登录系统,用户输入用户名和密码,如果正确就可以进入系统. 1.我自己最开始的写法:d = {} #数据库字 ...

  7. 脸部匹配测试软件,手把手教你在浏览器中使用脸部识别软件包

    原标题:手把手教你在浏览器中使用脸部识别软件包 雷锋网按:本文为雷锋字幕组编译的技术博客,原标题 face-api.js - Java API for Face Recognition in the ...

  8. 【小白目标检测】手把手教你做视频中的实时目标检测(基于Pelee算法)

    手把手教你做视频中的实时目标检测(基于Pelee算法) 0. 先看效果: 1. 算法详解: 2. 下载源码: 3. 运行检测: 有需求的大佬欢迎加入我的接单群,需求详情请群里戳群主 获取源码或数据集: ...

  9. 手把手教你在VSCode中使用Git

    我本身也多次看到他们用vscode查看修改prometheus代码 摘自:https://mp.weixin.qq.com/s/De7BFnT6cSL6ajvYoiNYkQ 手把手教你在VSCode中 ...

最新文章

  1. VS+MFC+Opencv显示视频和图像。
  2. Log4J配置方式Java工程测试
  3. C++实现遍历链表一次求出中间的节点
  4. Redis操作hash类型
  5. static 与 extern 关键字描述说明
  6. Jupyter Notebook的15个技巧和窍门,可简化您的编码体验
  7. 树上倍增求LCA详解
  8. JWT.NET的使用
  9. Spring Boot源码:SpringBootExceptionReporter
  10. html播放器加选集,推荐:非常详细的网页播放器之代码篇(精选集一)
  11. leetcode 65. Valid Number
  12. 最新的win10精简版V2004
  13. 阿里云产品有哪些?各种产品都是干什么的?
  14. 禁止迅雷极速版强制升级方法
  15. 从PC到Mac —— 写给Mac新新手的入门教程
  16. git中reset与revert的使用
  17. IPv6下DHCPv6协议(RFC3315)详细介绍
  18. 意想不到!这个神奇的bug让我加班到深夜
  19. esp32-cam刷固件后显示Device is busy or does not respond. Your options:解决方法
  20. 苹果更新一半能取消吗_苹果股价最新行情-iPhone12一半用户选蓝色 苹果股价还会继续涨吗?...

热门文章

  1. 顶尖创新型人才:10种与众不同的行为方式
  2. AE实现不同图层的合并C#代码
  3. 预写式日志(Write-Ahead Logging (WAL))
  4. StyleSheet文件中路径处理
  5. JQuery.JCShare 0.2 发布(加入弹窗功能)
  6. 敏捷软件开发之何为敏捷开发
  7. 计算机组成原理小论文参考文献,急!···跪求.《计算机组成原理》--论文--一篇...
  8. android 动态添加元素,动态添加项目到Android中的NavigationView
  9. 插入排序算法(基于Java实现)
  10. xml命名空间只是标记区分不同的空间的作用,一般与上网无关,虽然通常都写的是URL网址