【編者按】隨著服務器愈加的廉價,集群計算框架愈加成熟,大家似乎已經完全把眼光放到海量的數據上,算法的精心調校似乎已成為某些領域或者某些公司才去鉆研的事情。那么,數據為王的時代,算法真的已無用武之地?下面我們一起看看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 之處在于能從同樣的數據里比別人更快挖出更好的結果。
來自鄧毅的觀點:
―――――――――――――――――――――――――――――――――――――――――――
程序 = 數據結構 + 算法,數據結構用來干啥的,裝數據的呀。
數據能干啥?數據是信息的源泉,沒有足夠的數據,就沒有信息,信息技術沒有信息啥都沒有。
算法能干啥?把數據中信息提取出來,不經過提取,數據還是數據,變不成有用的信息。
這倆不是并列的關系,而是一體的,如何能說誰重要呢?腦子重要還是心臟重要,你給我說說。
此外,數據的好壞如何衡量?不是越多越好,當然數據越多往往所蘊含的信息越大,這個容易看得出來;算法的好壞如何衡量?不是越復雜約好,能從海量的垃圾中找到有用的信息的算法就是好的算法,雖然不這么復雜,不是所有的人都能看到這點。
我最想說的是什么?如果不是事不關己的旁觀者,數據往往是自己能拿到最多的數據,然后根據自己的這些數據去找最合適的算法。
原文鏈接:糾結,到底是數據重要還是算法重要呢?(責編/仲浩)
下一篇 為什么開源企業的開源大旗正在褪色