UDN-企业互联网技术人气社区

板块导航

浏览  : 262
回复  : 2

[原生js] 介绍:用 JavaScript 来做机器学习

[复制链接]
genie1003的头像 楼主
发表于 2017-1-2 15:02:01 | 显示全部楼层 |阅读模式
  我爱机器学习算法。我教过课程班和研讨会,并就机器学习进行了讨论。这个主题对我来说很迷人,但就像所有的技能一样,只有迷人是不够的。为了更好的学习,你需要实践。

  我恰好是一个 PHP 和 JavaScript 开发者。但作为经历远古时代的软件工程师,我也教过以下这些语言:Ruby、Python、Perl 和 C,但我还是更喜欢 PHP 和 JS。在你对 PHP 着迷前,我会对你说,尽管它自身有问题,我喜欢它正是因为它把所有事情都搞定了。

  无论什么时候我说用 PHP 写了 Tidal Labs 的机器学习算法,他们都会有趣地看着我,并对我说这怎么可能。简单来说,用任何语言来写机器学习算法都是有可能的。大多数人对他们可以从头写一个算法的基本原理没有足够的关心。相反,他们更喜欢依赖 Python 库去完成工作,并且最终变得对黑盒里的事情毫无关心。剩下的人可能只知道学术上的机器学习是使用 Octave 或者 Matlab 完成的。

  在一系列的文章里,我会使用 JavaScript 作为示范语言,而不是 Python 或者 Octave 来教学习你基础的机器学习算法。一开始,我比较倾向于使用不同的语言(PHP、JS、Perl、C、Ruby)来写这些文章,但是最终选择 JavaScript 有如下原因:

  • 无论你的后端技术是什么,如果你是一个 Web 开发者,你可能已经知道 JS。
  • JavaScript 有一个叫 JSFiddle 的好工具,它可以让我将文章里的可执行的 JavaScript 正确地嵌入(C 或者 Perl 就很难做到这样子!)
  • 不少人让我坚持使用某一种语言。

  虽然我决定使用 JavaScript 写这些文章,但是请使用你所选择的语言来重写例子作为作业。熟能生巧,通过使用不同的语言重写相同的算法有助于你更好地理解范式。

  使用像 PHP 和 JavaScript 的语言,机器学习算法是有可能出现良好性能的。我提倡使用不同的语言写机器学习算法是因为,从头写一遍机器学习算法有助于你学习它们的基础原理,同时它可以使得你的后端语言一致,例如不需要在一个 PHP 应用中间使用一个 Python 脚本去处理,你可以用 PHP 去替换这个脚本,通过这样来去除使用其他语言的开销(心理上和实际计算上都是)。

  好吧,大多数时候是这样的。还是有一些东西你是无法使用 PHP 或者 JavaScript 完成的,但那些都是要求深度矩阵计算的高级算法。当你需要用 JS 做矩阵计算,“简单地做矩阵计算”和“高效地做矩阵计算”是有非常大的不同的。Numpy 或者 Matlab 的优势不在于它们做矩阵操作的能力,而在于实际上它们是用了优化后的算法进行操作——除非你决定自学线性代数计算,否则你是没有办法超越这个算法的。上面这些都不是我擅长的领域,因此我们还是专注于那些不使用高深矩阵算法的机器学习吧。你可以尝试暴力解决矩阵操作,但是你最终会得到一个相当低效的系统。这有助于学习,但我不鼓励这么做——我会非常担心在生产环境下这样做的后果。

  记住,大多数我们正在看的算法,用不用矩阵计算我们都是可以解决的。我们可以使用迭代或者函数去解决它,但这些算法最好是用线性代数去解决。条条道路通罗马!我非常鼓励你们去学习(或者解决)线性代数的方案,但是因为这不是我的强项,所以我得用其他的办法。

  这里有一些建议去看的算法。只要相关文章发表了,我会更新这个列表下文章对应的链接:


相关帖子

发表于 2017-1-2 15:02:37 | 显示全部楼层
无论是不是沙发都得回复下
使用道具 举报

回复

发表于 2017-1-2 15:44:24 | 显示全部楼层
js太强大了,好多工作前端都可以做了…
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部