开发者成功使用机器学习的十大诀窍

发表于6小时前| 330次阅读| 来源InfoWorld| 0 条评论| 作者Alexander Gray

机器学习开发者人工智能计算机视觉
width="22" height="16" src="http://hits.sinajs.cn/A1/weiboshare.html?url=http%3A%2F%2Fwww.csdn.net%2Farticle%2F2015-07-13%2F2825187&type=3&count=&appkey=&title=%E5%AF%B9%E4%BA%8E%E5%BC%80%E5%8F%91%E4%BA%BA%E5%91%98%E8%80%8C%E8%A8%80%EF%BC%8C%E5%9F%BA%E4%BA%8E%E4%BA%91%E7%9A%84%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%B7%A5%E5%85%B7%E5%B8%A6%E6%9D%A5%E4%BA%86%E4%BD%BF%E7%94%A8%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%88%9B%E9%80%A0%E5%92%8C%E6%8F%90%E4%BE%9B%E6%96%B0%E7%9A%84%E5%8A%9F%E8%83%BD%E7%9A%84%E5%8F%AF%E8%83%BD%E6%80%A7%E3%80%82%E7%84%B6%E8%80%8C%EF%BC%8C%E5%BC%80%E5%8F%91%E8%80%85%E6%83%B3%E8%A6%81%E5%9C%A8%E5%AE%83%E4%BB%AC%E7%9A%84%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%B8%AD%E8%9E%8D%E5%85%A5%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%8C%E9%80%9A%E5%B8%B8%E4%BC%9A%E7%8A%AF%E4%B8%80%E4%BA%9B%E9%94%99%E8%AF%AF%EF%BC%8C%E6%9C%AC%E6%96%87%E5%88%97%E4%BA%86%E5%8D%81%E6%9D%A1%E6%B3%A8%E6%84%8F%E7%82%B9%E4%BB%A5%E9%A3%A8%E8%AF%BB%E8%80%85%E3%80%82&pic=&ralateUid=&language=zh_cn&rnd=1436793422160" frameborder="0" scrolling="no" allowtransparency="true">摘要:对于开发人员而言,基于云的机器学习工具带来了使用机器学习创造和提供新的功能的可能性。然而,开发者想要在它们的应用程序中融入机器学习,通常会犯一些错误,本文列了十条注意点以飨读者。

在提供发现埋藏数据深层的模式的能力上,机器学习有着潜在的能力使得应用程序更加的强大并且更能响应用户的需求。精心调校好的算法能够从巨大的并且互不相同的数据源中提取价值,同时没有人类思考和分析的限制。对于开发者而言,机器学习为应用业务的关键分析提供了希望,从而实现从改善客户体验到提供产品推荐上升至超个性化内容服务的任何应用程序。

像Amazon和Micorosoft这样的云供应商提供云功能的机器学习解决方案,承诺为开发者提供一个简单的方法,使得机器学习的能力能够融入到他们的应用程序当中,这也算是最近的头条新闻了。承诺似乎很好,但开发者还需谨慎。

对于开发人员而言,基于云的机器学习工具带来了使用机器学习创造和提供新的功能的可能性。然而,当我们使用不当时,这些工具会输出不好的结果,用户可能会因此而感到不安。测试过微软年龄检测机器学习工具的人都会发现,伴随即插即用的易用性而来的是主要的精度问题——对于关键应用程序或者是重大决策,它应该不值得信赖。

想要在应用程序中成功地融入机器学习的开发者,需要注意以下的一些关键要点:

1. 算法使用的数据越多,它的精度会更加准确,所以如果可能要尽量避免抽样。机器学习理论在预测误差上有着非常直观的描述。简而言之,在机器学习模型和最优预测(在理论上达到最佳可能的误差)之间的预测误差的差距可以被分解为三个部分:

  • 由于没有找到正确函数形式的模型的误差
  • 由于没有找到最佳参数的模型的误差
  • 由于没用使用足够数据的模型的误差

如果训练集有限,它可能无法支撑解决这个问题所需的模型复杂性。统计学的基本规律告诉我们,如果我们可以的话,应该利用所有的数据而不是抽样。

2. 对给定的问题选择效果最好的机器学习算法是决定成败的关键。例如,梯度提升树(GBT)是一个非常受欢迎的监督学习算法,由于其精度而被业内开发人员广泛使用。然而,尽管其高度受欢迎,我们也不能盲目的把这种算法应用于任何问题上。相反,我们使用的算法应该是能够最佳地拟合数据特征同时能够保证精度的算法。

为了证明这个观点,尝试做这样一个实验,在数据集 the popular text categorization dataset rcv1上测试GBT算法和线性支持向量机(SVM)算法,并比较两者的精度。我们观察到在这个问题上,就错误率而言,线性SVM要优于GBT算法。这是因为在文本领域当中,数据通常是高维的。一个线性分类器能够在N-1维当中完美的分离出N个样本,所以,一个样本模型在这种数据上通常表现的更好。此外,模型越简单,通过利用有限的训练样本来避免过拟合的方式学习参数,并且提供一个精确的模型,产生的问题也会随之越少。

另一方面,GBT是高度非线性的并且更加强大,但是在这种环境中却更难学习并且更容易发生过拟合,往往结果精度也较低。

3. 为了得到一个更好的模型,必须选择最佳的的算法和相关的参数。这对于非数据科学家而言可能不容易。现代的机器学习算法有许多的参数可以调整。例如,对于流行的GBT算法单独的就有十二个参数可以设置,其中包括如何控制树的大小,学习率,行或列的采样方法,损失函数,正则化选项等等。一个特有的项目需要在给定的数据集上为每一个参数找到其最优值并且达到最精准的精度,这确实不是一件容易的事。但是为了得到最佳的结果,数据科学家需要训练大量的模型,而直觉和经验会帮助他们根据交叉验证的得分,然后决定使用什么参数再次尝试。

4. 机器学习模型会随着好的数据而变得更好,错误的数据收集和数据处理会降低你建立预测和归纳的机器学习模型的能力。根据经验,建议仔细审查与主题相关的数据,从而深入了解数据和幕后数据的生成过程。通常这个过程可以识别与记录、特征、值或采样相关的数据质量问题。

5. 理解数据特征并改进它们(通过创造新的特征或者去掉某个特征)对预测能力有着高度的影响。机器学习的一个基本任务就是找到能够被机器学习算法充分利用的丰富特征空间来替代原始数据。例如,特征转换是一种流行的方法,可以通过在原始数据的基础上使用数学上的转换提取新的特征来实现。最后的特征空间(也就是最后用来描述数据的特征)要能更好的捕获数据的多复杂性(如非线性和多种特征之间的相互作用),这对于成功的学习过程至关重要。

6. 在应用中,选择合适的灵感来自商业价值的目标函数/损失函数对于最后的成功至关重要。几乎所有的机器学习算法最后都被当成是一种优化问题。根据业务的性质,合理设置或调整优化的目标函数,是机器学习成功的关键。

以支持向量机为例,通过假设所有错误类型的权重相等,对一个二分类问题的泛化误差进行了优化。这对损失敏感的问题并不合适,如故障检测,其中某些类型的错误比重可能比其它类型的要高。在这种情况下,建议通过在特定的错误类型上,增加更多的惩罚来解释它们的权重,从而调整SVM的损失函数。

7. 确保正确地处理训练数据和测试数据,如此当在生产中部署该模型时,测试数据能够模拟输入数据。例如,我们可以看到,这对于时间依赖性数据是多么的重要。在这种情况下,使用标准的交叉验证方法进行训练,调整,那么测试模型的结果可能会有偏差,甚至会不准确。这是因为在实施平台上它不能准确的模拟输入数据的性质。为了纠正这一点,在部署时我们必须仿照模型来部署使用。我们应该使用一个基于时间的交叉验证,用时间较新的数据来验证训练模型。

8.  部署前理解模型的泛化误差。泛化误差衡量模型在未知数据上的性能好坏。因为一个模型在训练数据上的性能好并不意味着它在未知的数据上的表现也好。一个精心设计的模拟实际部署使用的模型评估过程,是估计模型泛化误差所需要的。

一不留心就很容易违反交叉验证的规则,并且也没有一种显而易见的方法来表现交叉验证的非正确性,通常在你试图寻找快捷方式计算时发生。在任何模型部署之前,有必要仔细注意交叉验证的正确性,以获得部署性能的科学评估。

9. 知道如何处理非结构化和半结构化数据,如文本、时间序列、空间、图形或者图像数据。大多数机器学习算法在处理特征空间中的数据时,一个特征集代表一个对象,特征集的每一个元素都描述对象的一个特点。在实际当中,数据引进时并不是这种格式化的形式,往往来自于最原始的格式,并且最后都必须被改造成机器学习算法能够识别的理想格式。比如,我们必须知道如何使用各种计算机视觉技术从图像中提取特征或者如何将自然语言处理技术应用于影片文本。

10. 学会将商业问题转换成机器学习算法。一些重要的商业问题,比如欺诈检测、产品推荐、广告精准投放,都有“标准”的机器学习表达形式并且在实践当中取得了合理的成就。即使对于这些众所周知的问题,也还有鲜为人知但功能更强大的表达形式,从而带来更高的预测精度。对于一般在博客和论坛中讨论的小实例的商业问题,适当的机器学习方法则不太明显。

如果你是一个开发者,学习这十个通往成功的诀窍可能似乎是一个艰难的任务,但是不要气馁。事实上,开发者不是数据科学家。认为开发人员可以充分利用所有的机学习工具是不公平的。但是这并不意味着开发人员没有机会去学习一些有水准的数据科学从而改进他们的应用。随着适当的企业解决方案和自动化程度的提高,开发人员可以做模型构建到实施部署的一切事情,使用机器学习最佳实践来保持高精度。

自动化是在应用程序中扩展机器学习的关键。即使你能够供得起一批小的数据科学家团队和开发者携手合作,也没有足够的人才。像Skytree的AutoModel(自动化模型)能够帮助开发者自动地确定最佳的参数并且使得算法得到最大的模型精度。一个易于使用的接口可以引导开发人员通过训练加工,调整并且测试模型来防止统计上的错误。

自动化机器学习过程,有许多方式,包括数据科学家或开发者的人工智能原理,允许算法去思考,学习并且承受更多的建模重任。也就是说,认为数据科学家能够从机器学习中解耦是错误的,特别是在关键任务模型上。谨防这种能够简单使用机器学习功能的承诺,即能够在不需要正确复杂的思考下或者可扩展的应用技术下就使用机器学习——这通常并不会得到高预测精度和机器学习提供的高商业价值结果。更糟糕的是,在应用程序中使用不好的模型实际上可能会适得其反,并迅速在其用户之间建立不信任的产品或服务。

开发者成功使用机器学习的十大诀窍相关推荐

  1. ML:从工程化思维分析—机器学习团队十大角色的简介(背景/职责/产出物):产品经理、项目经理、业务咨询顾问、数据科学家、ML研究员、数据工程师、ML工程师、DevOps/软件开发/交付工程师

    ML:从工程化思维分析-机器学习团队十大角色的简介(背景/职责/产出物):产品经理.项目经理.业务咨询顾问.数据科学家.ML研究员.数据工程师.ML工程师.DevOps/软件开发/交付工程师 背景:在 ...

  2. 空调省电十大诀窍 【80后必看】

    空调省电十大诀窍 [80后必看] 上海大金空调维修 wxxp-hui 关键字:空调 空调省电 空调省电窍门 十大 炎炎夏季,空调是大部分家庭消暑的必备电器,而用电高峰期,你知道怎样正确使用空调,才使其 ...

  3. 机器学习新手十大算法

    有一个通用原则是所有用于预测建模的受监督机器学习算法的基础. 机器学习算法被描述为学习目标函数(f),该函数最好将输入变量(X)映射到输出变量(Y):Y = f(X) 这是一个简单的学习任务,我们想在 ...

  4. 【机器学习】十大机器学习基础算法

    十大机器学习算法入门 近年来,机器学习与人工智能已广泛应用于学术与工程,比如数据挖掘.计算机视觉.自然语言处理.生物特征识别.搜索引擎.医学诊断.检测信用卡欺诈.证券市场分析.DNA序列测序.语音和手 ...

  5. 机器学习数据挖掘十大经典算法 数学建模常用算法

    国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006 (香港召开)年12月评选出了数据挖掘领域的十大经典算法.不仅 ...

  6. 数据挖掘与机器学习的十大算法

    机器学习与数据挖掘中的十大经典算法 背景: top10算法的前期背景是吴教授在香港做了一个关于数据挖掘top10挑战的一个报告,会后有一名内地的教授提出了一个类似的想法.吴教授觉得非常好,开始着手解决 ...

  7. 【机器学习】十大算法之一 “PCA”

    作者主页:爱笑的男孩.的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩.擅长深度学习,活动,python,等方面的知识,爱笑的男孩.关注算法,python,计算机视觉,图像处理,深 ...

  8. 移动开发者的自学宝典:十大在线编程学习网站

    目前的教育领域,受移动互联网的冲击,MOOC的理念正在风行,但事实却稍显疲软,不尽如人意.相比美国式的全民热衷,国内的线上教育却还流于形式.其他教育尚且如此,移动开发教育更不用谈.在这种情况下,很多人 ...

  9. [转]移动开发者的自学宝典:十大在线编程学习网站

    目前的教育领域,受移动互联网的冲击,MOOC的理念正在风行,但事实却稍显疲软,不尽如人意.相比美国式的全民热衷,国内的线上教育却还流于形式.其他教育尚且如此,移动开发教育更不用谈.在这种情况下,很多人 ...

最新文章

  1. Gartner:2019年十大数据与分析技术趋势
  2. Docker 搜索镜像
  3. flask-wtforms
  4. windows 程序设计及API
  5. (11)FPGA跨时钟域处理(第3天)
  6. Repeater使用:绑定时 结合 前台JS及后台共享方法
  7. Python3安装turtle提示错误:Command python setup.py egg_info failed with error code 1
  8. Oracle 11g Release 1 (11.1)——自动存储管理(Automatic Storage Management,ASM)
  9. 计量经济学 pdf_计量经济学笔记(十六)
  10. 解决相片上传主键唯一性问题,java 上传相片到服务器的时候,相片保存主键用guid。...
  11. 淘宝发布宝贝提示“您的消保保证金额度不足,已启动到期保障”
  12. 短信api接口的一些使用建议
  13. python化学公式配平_PYTHON趣用—配平化学方程式-阿里云开发者社区
  14. 论文翻译:2021_TSCN:Decoupling magnitude and phase optimization with a two-stage deep network
  15. Python常见低级错误/拼写错误
  16. Linux cpumask分析
  17. switch case的天坑
  18. 如何用计算机计时,如何为win7计算机设置计时器关闭
  19. Mac恢复被修改的文档
  20. TSP问题的遗传算法实现(C++)

热门文章

  1. php childnodes,小tips:HTML DOM中的children和childNodes属性
  2. 24点游戏c语言去除重复,C语言解24点游戏程序
  3. pyspark 计算 皮尔逊相关系数
  4. 26. Leetcode 206. 反转链表 (链表-反转链表)
  5. ESIM (Enhanced LSTM for Natural Language Inference)
  6. 选择排序的基本原理及实现
  7. NTU 课程笔记: CV6422 regression
  8. 字节跳动 ClickHouse 在 A/B 实验和模型训练的使用
  9. 如何让签到成为提升用户活跃度的利器
  10. 为什么通常牛顿法比梯度下降法能更快的收敛