机器学习之Javascript篇: 介绍
作者:Burak Kanber
翻译:王维强
原文:http://burakkanber.com/blog/machine-learning-in-other-languages-introduction/
我热衷于机器学习算法,并在该领域教授过一些课程,也在一些研讨会中做过报告,对该课题很着迷。但是像所有的技术一样只学些皮毛是远远不够的,想做好任何事情,都需深入实践。
我自己恰巧是个PHP和Javascript开发者,在这两个技术领域内也教授过一些课程,而且像所有的普通程序员一样我在Ruby,Python,Perl和C方面也有些经验,但是更偏爱PHP和JS。
每当我说起蒂达尔实验室的机器学习算法是用PHP实现的,大家就会嘲讽地看着我说那怎么可能。简单来说,机器学习算法可以用任何语言来实现,很多人并不介意通过草图写算法来了解基本原理,然后使用一些Python库应付他们的工作,可是并没有真正领悟黑箱中正在发生的过程。另外一些人只是学术性的了解机器算法,使用Octave或者Matlab解决问题。
通过本系列文章,我将会教会你机器学习算法的基础原理并且使用Javascript作为算法实现的工具,而不是用Python或者Octave作为范例语言。原本我打算用多个语言(PHP,JS,Perl,C, Ruby)写这些文章,但最终选择Javascript是因为以下原因:
- 如果你是个web程序员,应该对JS已经有所了解。
- JSFiddle是一个很好的工具,能够把可运行的代码嵌入到我的文章中(C或Perl就很难这样做了)。
- 有些人请求我着重在一个语言上讲述。
在我于头脑中用Javascript写这些文章之时,也请你自己选择一门语言预写一些例子作为家庭作业!实践决定你的掌握程度,用几种语言数次编写同样的算法真的能帮你更好地了解这些范例。
使用像PHP或Javascript这样的语言编写机器学习算法是完全有可能获得很好的执行表现的。我提倡用更多的其他语言实现机器学习算法是因为这样做能更好地帮你从草图中了解基本原理,并且能让你统一自己的背景知识,不至于在PHP的应用程序中还要写Python脚本处理任务,你完全可以用纯PHP来实现,而不是被迫切换到其他语言。
好吧,很多时候,的确有很多事情不能用PHP或者Javascript来解决,比如很多高级算法中使用到的大型矩阵运算。实际上你也能用JS进行矩阵运算,只是差别在于“能做”还是“高效地做”,NumPy或者Matlab的优势不在于他们能做矩阵运算,而是他们使用了优化的算法能高效地做矩阵运算,这些优化的运算方法我们不会亲自去做,除非致力于计算机线性代数的研究。这也不是我的强项,所以我们只着重于机器学习,不要求高级的矩阵数学知识。你当然可以尝试惨烈地直面矩阵操作,但是会止步于低效的系统。作为学习当然很好,只是我不鼓励这样做——我只在产品级的环境下才关注这方面的事。
我们将要关注的算法既可以用矩阵来解决,也可以不用矩阵。我们将会在这些算法中使用迭代的方法,当然大多数算法也可以用线性代数来描述。解决问题有多种途径,我鼓励大家去使用线性代数的方法,但是那不是我的强项,所以我会使用其他的方法。
我的这个系列文章将覆盖: