统计与机器学习,两手抓,两手都要硬

上个月28-29号,在北京参加了第四届R语言中国会议,感慨颇多!下面简单总结一些。

早就用过R语言,在做项目的时候也多少用过一些,不过,用的比较简单,就是用ggplot2来画图,结果的确非常的好,在展示的时候impress了一小撮人。但是还没有深入的使用过R,也订阅了R-blog等相关的博客,也仅仅停留在每日查看的地步。心里一直知道R是一门强大的语言,自己也知道有一天一定会用的,但是这个点我始终没有等到,直到参加了R语言会议之后,我心知,这给点到了。说来都好笑,对于这么强大的语言,心中有些敬畏,觉得这样好的东西就应该板板整整的坐下来,然后看一个大部头,从基础学起,慢慢的,循序渐进的深入浅出的学习。可是想想,其实我早就是参照这ggplot的文档自己都已经出成品了,自己的这种可笑的“敬畏感”竟然还保留着,实在是有些迂腐。

这次R语言会议的收获主要是来源于李舰的高性能计算与R商业应用,和颜林林的R高级编程与Rcpp介绍(没有找到颜林林的主页啊!)。我是搞机器学习的,成天琢磨的事情就是如何提高算法的效率,所以更为关注这方面的内容。至于其他演讲,比如R与SAS的比较,R在生物领域的应用,对我来说不是专业不对口,就是领域太遥远了。

这次听李舰的演讲,我自己的感觉是统计是我们ITREC实验室和我自己一直在忽略的一块内容。虽然说自己是数学系出身,但是大学时候学的统计学是和概率论一起学的,实在是皮毛的皮毛,还不如到了博士,自己看关于统计学习理论中的统计学来得深入。而在接触到的几个项目中,对于统计学的态度是抓来即用,但是没有深入思考,重点自然是放在了各种数据挖掘与机器学习的方法上。其实,统计学可以完成的任务非常非常多,借助于R语言的力量也可以很快,很好的做出结果。自己本身尝到了甜头,可是竟然忽略掉了,今后应该多多在这个方面注意一下。

作为一个机器学习方向的博士生,觉得统计学有的时候很肤浅,有的时候很有用。肤浅指的是本身自己学的时候就学到了皮毛,只停留在求均值方差的基础上,另外周围的人也人云亦云说统计这个东西太简单,再加上和机器学习的算法比起来,统计方法实在不fancy。有用是指机器学习的研究现在很大一部分是统计机器学习,而且已经成为了主流,甚至在隔壁的自然语言处理领域,统计方法都已经成为了研究的基础。而这个“统计方法”和之前粗浅认识的统计是不同的。这种反差也许是我没有对与统计给予足够重视的原因吧。

其实,机器学习这个领域的大部分方法都是从其他领域中借鉴来的,很大一部分是从统计领域借鉴来的,比如前两年火的一塌糊涂的lasso(R包:lasso2)。所以作为一个机器学习研究者,对与统计方法来说,应该有的态度是接纳并且灵活应用。首先拿到数据的时候,结合问题,甚至在没有明确问题之前,都应该使用统计的方法对数据自身的特点进行了解,只有在对数据进行了解的基础上,结合所要解决的问题,才能够选用或者设计合适的分析方法。

李舰的演讲另外一个方面吸引我的原因是高性能计算。高性能计算面向的对象自然是大规模数据,而大规模数据,也就是big data现在也是火的一塌糊涂,可以说是craze了。不过我觉得对于大规模数据的关注不是像当初对于互联网关注那样的泡沫,因为互联网那个是被炒作出来的,大规模数据的分析研究是现实需求。在Quora上面就有关于大规模数据的相关讨论(强烈推荐大家看这个帖子)。也有相关的workshop课程教材来探讨大规模数据应该如何进行分析挖掘。这些大规模的数据无疑是和SNS的发展,生物、制药领域的发展是分不开的。由于涉及的领域不同,所应对的任务也就不同,就IT方面而言,网络上SNS的数据非常多,首先要面临的问题是如何分析SNS网络,人与人之间是如何进行联系的,进一步的,在知道了人与人之间的关系之后,如何利用这种关系来获得商业利益(对,商业利益,R是开源软件,但是到头来办的事情是可以挣钱的),比如说推荐,广告。Google、Facebook和Amazon是最典型的例子。没有大量的数据和适合的分析方法,Facebook就无法推荐给你可能认识的朋友,Google也就无法推荐给你可能感兴趣的广告,Amazon也就无法告诉你可能喜欢什么书。从这个角度上讲,光是统计是不够的。这个时候就需要使用机器学习和数据挖掘的方法。两者所解决的问题不同,并不是说两者哪个好,哪个坏。两者都无法替代,两者是相互依赖,互相补充的关系。而R,现在来看,正式充当将多种任务,多种语言互相联系,结合,催化,完成复杂任务的工具。(其实,还有Python,Python结合Numpy,Scipy和Matplotlib也可以做到这点。)李舰的演讲主要讨论了如何利用R进行高性能计算,更进一步的,抛开语言层面不管,机器学习的算法能否scale到目前越来越大的数据集上呢,答案一定是肯定的,Google的pagerank算法就是一个非常好的例子。那么是不是所有的方法都能够scale到大规模数据集上呢?原理比较简单的算法实现起来是不是容易一些?得到的效果是不是好一些?原理复杂的算法是不是在大规模数据机上的表现不佳呢?我想这都是机器学习的研究人员最近在研究的问题。

统计,数据挖掘,机器学习,商务智能。在参加了这次会议之后,我对这四个名词又有了不同的理解。统计是一切的基础,只要是与数据相关的行业,就一定要从统计出发,结合所要解决的问题,对数据进行分析。数据挖掘,由于已经被多家数据库厂商集成到了数据仓库软件之中,所以从狭义上讲,数据仓库中集成的数据挖掘算法都是比较的naive的算法,比如关联规则,决策树,朴素贝叶斯。这几个算法的实用性都很好,经过了数据仓库前面的ETL之后,决策树和朴素贝叶斯本身做分类的效果就很好,但是算法非常成熟了,用来做研究课题的话,就不太适合了。从广义上讲,机器学习的算法都可以用来做数据挖掘任务,这也一并扩展了数据挖掘中找关联,做分类,聚类这三个任务。机器学习中的在线学习,加强学习都是狭义数据挖掘算法所完成不了的任务。这一点也就是机器学习相比较于统计的不同之处,机器学习算法可以有相对精确,自主的预测,推演和学习的能力。商务智能呢?这个词最近几年叫的不那么响了,这个可能是因为cognos,BO等商务智能公司相继被收购的原因吧。商务智能说到底还是依靠的数据分析然后通过可视化展现直观的给人结论,这点不用什么fancy的数据仓库,R和Python也可以做到。

另外,Oracle和Teradata也推出了R的包,以方便的结合自家的产品,这个算不算是开源软件的胜利呢?Cathedral和Bazzar越来越近了呢?

最后总结一下,R是一种以统计为基础,全面面向数据分析的一种软件,在如今的大规模数据环境中,R可以作为完成各种任务的粘合剂与催化剂,结合其他各种工具来出色的完成各种数据分析任务。作为一个data scientist,R的确是不得不学,而且不得不学精的软件。

Advertisements

一个有关“统计与机器学习,两手抓,两手都要硬”的想法

  1. 以前一直以为你是我的一个同事,名字非常相近。
    Statistical Learning, Machine Learning, Data Mining, Business Intelligence 其实都是为了解决问题存在的,而他们的基础都是从数据出发,在这点上看是没有差别的。

    1. 从现在的趋势看,学术界开始关心massive dataset,工业界开始关心big data,而我觉得在在不远的将来无论是哪个牛人还是也好,具体的大势所趋也好,会有something big出现的,总觉得这次工业界的吵吵嚷嚷是不同于之前的互联网泡沫的,这次是真的东西在哪里。其实,google已经是sth big了,只是每天都在用,就不觉得了。真希望可以去google工作,可以有那么多数据唾手可得,想干点啥就干点啥。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s