【编者按】随着服务器愈加的廉价,集群计算框架愈加成熟,大家似乎已经完全把眼光放到海量的数据上,算法的精心调校似乎已成为某些领域或者某些公司才去钻研的事情。那么,数据为王的时代,算法真的已无用武之地?下面我们一起看看Rio和邓毅的辨析。
免费订阅“CSDN大数据”微信公众号,实时了解最新的大数据进展!
CSDN大数据,专注大数据资讯、技术和经验的分享和讨论,提供Hadoop、Spark、Imapala、Storm、HBase、MongoDB、Solr、机器学习、智能算法等相关大数据观点,大数据技术,大数据平台,大数据实践,大数据产业资讯等服务。
以下为原文:
谷歌的强不是强在 PageRank 算法,而在于它是第一个在排名时把链接——而不只是文字和标题——考虑进去的。又以自己教的数据挖掘课为例。他让学生以 Netflix 用户对一万八千多部电影的打分为基础数据,写程序为她们推荐别的电影。其中有组学生的算法较优,另外一组学生算法一般,但使用了外部数据——IMDB 对电影类型的归类。结果第二组的结果胜过了第一组。
那么到底是数据重要还是算法重要呢?
来自Rio的观点:
————————————————————————————————————————————
虽然不能这么绝对的判断一定谁比谁重要,但在实际应用中很多时候的确是数据更加重要。有几方面的原因:
在很多问题中,算法的“好坏”在没有大量有效数据的支撑下是没有意义的。换句话说,很多算法得到的结果的质量完全取决于其和真实数据的拟合程度。如果没有足够的数据支撑、检验,设计算法几乎等于闭门造车。
很多算法会有一堆可调参数。这些参数的选择并没有什么标准可依,无非是扔给大量数据,看参数的变化会带来什么样的结果的变化。大量、有效的数据成为优化这类算法的唯一可行方法。
更极端的例子是,算法本身很简单,程序的完善全靠数据训练。比如神经网络。
对于很多成熟的算法,优化算法的增量改善通常远小于增大输入数据(这是个经济性的考虑)。
比如问题中举例的 Google。在它之前的搜索引擎已经把基于网页内容的索引算法做得很好了,要想有更大的改善需要换思路。PageRank 算法的采用大大增加了输入的数据量,而且链接数据本身对于网页排名相当关键(当然他们也做了大量算法的优化)。【插话:在这样的思想指导下,Google 想要插手社交网络或微博也不足为奇了吧?实时搜索、排名没有真人的互动怎么可能。】
Netflix 挑战赛的例子中,Netflix 本身的推荐算法也是优化到极致了。再从算法本身去找改进之处,投入产出比太低。引文中的学生仅仅是加入了 IMDB 数据库关于电影分类(从而更加明确观众的偏好)就能带来比复杂算法更加显著的改善,试想如果他们能拿到 Rotten Tomatoes 的数据会怎样?
When people are equally smart, big data wins。这个结论的悲摧之处在于,在类似行业中,今后小的创业公司想要打败巨头就不那么容易。要么要改变思路,要么要改变策略。指望靠小聪明扳倒大象会很成问题。
当然这也不是绝对的。比如典型的反例(算法比数据重要)是 Google 刚被批准收购的 ITA Software。这家牛 B 烘烘(估计是现存最大的 Lisp shop)的公司的机票搜索引擎驱动着世界各大航空公司、票务中介的后台系统。它的数据来自一个各大航空公司授权的公司,其他竞争者也可以花钱(虽然不便宜)买到同样的数据。但它的牛 B 之处在于能从同样的数据里比别人更快挖出更好的结果。
来自邓毅的观点:
———————————————————————————————————————————
程序 = 数据结构 + 算法,数据结构用来干啥的,装数据的呀。
数据能干啥?数据是信息的源泉,没有足够的数据,就没有信息,信息技术没有信息啥都没有。
算法能干啥?把数据中信息提取出来,不经过提取,数据还是数据,变不成有用的信息。
这俩不是并列的关系,而是一体的,如何能说谁重要呢?脑子重要还是心脏重要,你给我说说。
此外,数据的好坏如何衡量?不是越多越好,当然数据越多往往所蕴含的信息越大,这个容易看得出来;算法的好坏如何衡量?不是越复杂约好,能从海量的垃圾中找到有用的信息的算法就是好的算法,虽然不这么复杂,不是所有的人都能看到这点。
我最想说的是什么?如果不是事不关己的旁观者,数据往往是自己能拿到最多的数据,然后根据自己的这些数据去找最合适的算法。
原文链接: 纠结,到底是数据重要还是算法重要呢?