谷歌的强不是强在 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 之处在于能从同样的数据里比别人更快挖出更好的结果。

来自邓毅的观点:

———————————————————————————————————————————

程序 = 数据结构 + 算法,数据结构用来干啥的,装数据的呀。

数据能干啥?数据是信息的源泉,没有足够的数据,就没有信息,信息技术没有信息啥都没有。

算法能干啥?把数据中信息提取出来,不经过提取,数据还是数据,变不成有用的信息。

这俩不是并列的关系,而是一体的,如何能说谁重要呢?脑子重要还是心脏重要,你给我说说。

此外,数据的好坏如何衡量?不是越多越好,当然数据越多往往所蕴含的信息越大,这个容易看得出来;算法的好坏如何衡量?不是越复杂约好,能从海量的垃圾中找到有用的信息的算法就是好的算法,虽然不这么复杂,不是所有的人都能看到这点。

我最想说的是什么?如果不是事不关己的旁观者,数据往往是自己能拿到最多的数据,然后根据自己的这些数据去找最合适的算法。

数据?算法-> which is important?的更多相关文章

  1. 大数据算法->推荐系统常用算法之基于内容的推荐系统算法

    港真,自己一直非常希望做算法工程师,所以自己现在开始对现在常用的大数据算法进行不断地学习,今天了解到的算法,就是我们生活中无处不在的推荐系统算法. 其实,向别人推荐商品是一个很常见的现象,比如我用了一 ...

  2. 大数据算法设计模式(1) - topN spark实现

    topN算法,spark实现 package com.kangaroo.studio.algorithms.topn; import org.apache.spark.api.java.JavaPai ...

  3. 大数据算法:kNN算法

    \一.kNN算法概述 kNN是k-Nearest Neighbour的缩写,这是一种非常简单且易于理解的分类算法.回想我们从小到大在认知事物的过程当中,我们是如何判断一种事物是属于哪种类别的?通常的一 ...

  4. 滴滴大数据算法大赛Di-Tech2016参赛总结

    https://www.jianshu.com/p/4140be00d4e3 题目描述 建模方法 特征工程 我的几次提升方法 从其他队伍那里学习到的提升方法 总结和感想 神经网络方法的一点思考 大数据 ...

  5. 数据算法 --hadoop/spark数据处理技巧 --(9.基于内容的电影推荐 10. 使用马尔科夫模型的智能邮件营销)

    九.基于内容的电影推荐 在基于内容的推荐系统中,我们得到的关于内容的信息越多,算法就会越复杂(设计的变量更多),不过推荐也会更准确,更合理. 本次基于评分,提供一个3阶段的MR解决方案来实现电影推荐. ...

  6. 数据算法 --hadoop/spark数据处理技巧 --(5.移动平均 6. 数据挖掘之购物篮分析MBA)

    五.移动平均 多个连续周期的时间序列数据平均值(按相同时间间隔得到的观察值,如每小时一次或每天一次)称为移动平均.之所以称之为移动,是因为随着新的时间序列数据的到来,要不断重新计算这个平均值,由于会删 ...

  7. 数据算法 --hadoop/spark数据处理技巧 --(1.二次排序问题 2. TopN问题)

    一.二次排序问题. MR/hadoop两种方案: 1.让reducer读取和缓存给个定键的所有值(例如,缓存到一个数组数据结构中,)然后对这些值完成一个reducer中排序.这种方法不具有可伸缩性,因 ...

  8. StartDT_AI_Lab | 开启“数据+算法”定义的新世界

    继「数据中台技术汇」栏目推出以来,获得了不少技术极客的喜爱.作为AI驱动的数据中台创导者,深度关注核心算法技术的自研创新.融合探索,故推出全新AI算法栏目「StartDT_AI_Lab」,主要介绍算法 ...

  9. android 股票数据通过日K获取周K的数据 算法 源码

    目前的数据是从新浪接口获取的, http://biz.finance.sina.com.cn/stock/flash_hq/kline_data.php?symbol=sh600000&end ...

随机推荐

  1. foreach循环赋值问题

    foreach ($list as $key=>$val){ $data=array();//这一个一定要加上不然循环后,modify_one,modify_two都会赋值 if ($val[' ...

  2. C语言之控制台读取上下左右方向键指令

    首先,可以检测任何按键键值 // 首先,检测任何按键的代码 #include<stdio.h> #include<conio.h> int main() { char ch; ...

  3. C和指针小结(C/C++程序设计)

    C和指针 相关基础知识:内存的分配(谭浩强版) 1.整型变量的地址与浮点型/字符型变量的地址区别?(整型变量/浮点型变量的区别是什么) 2.int *p,指向整型数据的指针变量. 3.通过指针变量访问 ...

  4. PAT甲 1048. Find Coins (25) 2016-09-09 23:15 29人阅读 评论(0) 收藏

    1048. Find Coins (25) 时间限制 50 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Eva loves t ...

  5. 【lazy标记得思想】HDU3635 详细学习并查集

    部分内容摘自以下大佬的博客,感谢他们! http://blog.csdn.net/dm_vincent/article/details/7769159 http://blog.csdn.net/dm_ ...

  6. 万能的ctrl+shift+F(Element 'beans' cannot have character [children], because the type's content type is element-only.错误)

    今天在spring-servlet.xml文件中出现了一个莫名其妙的错误:Element 'beans' cannot have character [children], because the t ...

  7. svn服务器快速搭建及简单配置

    http://www.360doc.com/content/11/0711/19/5131531_132950891.shtml 简介Svn已经不容质疑的成为了一款流行的代码控制工具,但是你是否还在为 ...

  8. Flash(as3) 调整显示对象颜色

    在游戏开发中改变显示对象的颜色是比较常见的操作,那么除了在FlashCS中调整,AS3又提供了怎样的方式呢? ColorTransform 这个类是轻量级的应用,其构造参数如下: ColorTrans ...

  9. navigationController背景图,文字,事件定义

    //设置背景图片 [self.navigationController.navigationBar setBackgroundImage:imag forBarMetrics:UIBarMetrics ...

  10. JS下对日期进行比较

    20181019更新一个获取指定日期的function //获取指定日期 function getBeforeDate(n) { var n = n; var d = new Date(); var ...