内容简介:小心你的机器学习债
我们正处在历史性的转折点上。从智能电视自动为你推送新剧更新,到华尔街的金融交易,乃至到识别猫的图片,机器学习算法无所不在。
然而,在编写机器学习相关代码的时候,还存在许多问题,我们可以将其归类为三种债务:
- 代码债务
- 数据债务
- 数学债务
在软件工程中,“债务”通常用来描述软件系统随着时间推移,系统缺乏优化而导致的不必要的复杂性。系统快速演化的初期,可能会累计下来许多未能及时优化的代码,随着功能增加和系统负荷变得重,累计的债务越来越多。如果得不到及时清理,总有一天会拖垮系统。
本文将研究这三种机器学习项目中常见的债务并讨论其处理办法。
代码债务是最常见的技术债务——由于开发进度的压迫导致许多短期的代码牺牲了简洁性和稳定性,并且越积越多。许多创业公司不是死于缓慢的研发进程,而是没有能够在业务快速增长的同时跨越技术债务,从而导致系统不可持续发展。代码债务的成本会造成两方面的大问题:
- 降低研发生产率,导致产品上市时间延迟
- 增加不必要的系统负荷和服务器成本,对小公司来说可能导致财务困境
代码债务的后果通常需要较长时间才显现出来,但是负面影响非常大。因此,研发团队必须定期重构代码、重新设计系统、不要等到下雨天才修屋顶。
数据债务对任何项目来说,可能都比代码债务更危险。数据可能是错误的,或者原来是正确的然而已经过时。我们往往在解决特定问题的过程中引入特定数据源,有时候问题解决了,有时候会让你陷入数据深坑中,特别是当你利用了会导致数据复杂度增加的特征转换或者选择算法的时候。
数据债务原因通常有三类:
- 相关性变更
- 黑天鹅事件
- 不稳定数据
相关性变更常常发生在机器学习推荐系统中。例如你正在装修房子的时候,电商网站会推荐你买一个马桶,当你买完一个之后,通常你就不会再买了,然而许多网站还会继续给你推荐更多的马桶。这是因为他们的推荐算法没有考虑相关性变更的问题。
黑天鹅事件往往也会摧毁机器学习系统。以 spotify 为例: 当他们添加新功能 (如 “ 每周新发现”) 时, 他们的算法有时会陷入局部极小点, 而不为用户提供新的东西。就我个人而言, 我喜欢巴赫, Blackbyrds, 还有 Bad Brains– 如果没有事先的信息, 机器学习模型将很难作为输入来产生新的建议。
不稳定的数据常常发生在用户调研分析中,例如 Netflix 问用户最喜欢哪一部电影,用户并没有耐心正确地填写完毕整个调查表,而仅仅是为了最快速度地完成,就会常常导致一些糟糕的毫无关联的电影推荐。
数学债务是机器学习项目所特有的技术债务——许多机器学习算法虽然精巧,但是要求许多配置和参数调优,从而导致整个过程非常复杂。通常数学债务会导致:
- 模型无法直观地理解
- 很难维护
- 很难配置调优
机器学习项目最可怕的情况是以上三种债务搅在一起,直接导致项目进入死胡同,无法维护,无法改进。
为了解决这三种类型的技术债务,在机器学习项目中需要遵循三项原则:
- 测试 – 应用 TDD 方法,编写完整的精确的测试案例并确保执行到位
- 遵循 SOLID 原则 – 单一职责,封闭-开放原则,里氏替换原则,接口隔离,依赖反转
- 使用数据可视化促进交流
机器学习项目团队,如果能良好地遵循了以上三大原则,机器学习债将迎刃而解。
本文翻译和改写自如下文章并略有删节:
http://fintechranking.com/2017/06/09/what-is-machine-learning-debt/
以上所述就是小编给大家介绍的《小心你的机器学习债》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 小心递归中内存泄漏
- 小心 getLaunchIntentForPackage() 方法
- 小心 !跨站点websocket劫持!
- 踩坑记:临界区内要小心
- 升级 Dubbo,小心 default.version
- 网络协议传奇(四):小心求变演进路
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。