為什麼那麼多牛人成天在研究討論演算法,系統自動推薦的東西還是不能令人滿意呢?

比如豆瓣推薦的圖書、電影,知乎推薦的可能感興趣的人或話題,據說要關注一個方面,推薦就會比較準確,難道每個方面都要專門註冊一個賬號?為什麼朋友推薦的書總是讓我滿意,難道朋友在推薦書的時候作了比計算機所能進行的運算還要複雜的大腦活動了嗎?
2011-8-23補充:好像沒有看到結合google廣告推薦來談的。google的廣告鏈接雖然從來不點,但是推薦的內容相關度還是相當高的。


推薦系統的基礎是統計推測(Statistical Inference),泛化一點說,叫機器學習(Machine Learning)也好。這是我現在最感興趣的領域和研究方向。這個領域現在發展很快,我也對其很有信心。但是要真的做到讓提問者「滿意」,我覺得嚴重依賴以下方面(這裡不討論SVM,Neural Network等具體演算法問題):
1、如何定義「滿意」:這是一個非常模糊的概念,從我個人的角度來說,滿意就是推薦的結果讓你有一種興奮或者帶感的體驗,感覺一個在你潛意識中期待的東西被推薦系統提供給你了。但是這要求太高,你要想,有可能供你選擇的內容全集可能根本就不含有讓你「滿意」的內容,比如豆瓣電台,如果你不喜歡聽爵士,你選了爵士頻道,無論那個演算法多麼牛逼,你還是不可能「滿意」,這種情況下,無論你的推薦人多麼了解你,也很難給你一個答案,因為這個內容全集你都不喜歡,人推薦和機器推薦沒有區別。進一步而言,如果真的有這樣一個演算法,你不斷被驚艷,根據人的神經習慣,你很容易就熟悉然後厭倦了這個過程。在現實生活中,你第一次聽到大牛給你推薦書,你可能很認真記下來,然後馬上回去買了看,但是如果大牛天天給你推薦,你也一定會懈怠。這也是很多人保持神秘感的原因,這樣才能讓他們的意見被重視。但是演算法沒法對你保持神秘感,它不能說今天來大姨媽不工作了,過一個月再來。只能說它的牛逼戰勝不了你新鮮感逝去的速度。
2、前面諸位回答者提到了人肉推薦和機器推薦的比較,我覺得這個分類是很正確的,這也是fb,twitter的魅力所在。但是我現在在矽谷看到了最新的演算法,是整合了人肉推薦的機器推薦。因為fb、twitter等API開發度非常高,矽谷一些新興的公司會讀取你的好友post,然後用來加強模型的訓練。我不知道大家的情況,但是我個人覺得fb的好友太多,或者twitter中follow的人太多,你也會收到很多噪音。把機器演算法和人肉演算法結合是一個很好的出路,可以融合兩者的優點。這絕對不是兩個互相對立的體系,有效利用,可以合體。具體而言,http://getprismatic.com是一個很好的例子,做新聞推薦的。
3、數據量:上一個十年是互聯網爆炸的時代,但是這一個十年才是2.0用戶快速堆積的時代。統計推測最關鍵的就是用戶數據,這在web 2.0基本是巧婦難為無米之炊。在海量儲存和並髮式系統發展到今天,我們可以有大量的數據來進行挖掘了。同時你好友的各種recommend,like數據也越來越多,加上API大量開發,我們可以跨平台收集你的好友推薦信息,我相信下一個十年推薦精度會大大提高。但是你是否「滿意」,這是一個定性的問題,很難定量。

我不否認人的靈氣帶來的推薦優勢,但是我對於技術有著堅定的信心。我們討論的一切最後都是一個信仰問題。


這個問題很火爆啊,簡單說兩句。

  1. 推薦引擎,是一門更偏重實踐性的學科。而演算法的(學術)研究,通常是在一個靜態數據集上作特定目標的優化。這和實際業務需求是有差別的。
  2. 那麼演算法研究,比如netflix prize,產生了不少新的演算法研究方向,有木有價值?有,而且非常大。但轉化為實際生產力需要時間和時機。
  3. 必須承認,目前真正以推薦引擎為核心的產品還很少,實際中在這個方向上持續投入比較大精力的,更少。
  4. 說的多的人,通常並沒有真正在做,比如我。。。做的多的人,通常並不能劇透太多,比如胖子!我和項亮搞resys group,組織活動,初衷之一就是希望可以改變這種狀況。
  5. 我堅信,推薦引擎是下個十年中的big thing之一,需要喜歡這個領域的從業人員一起努力。http://www.guwendong.com/post/2011/recsys-will-explode.html
  6. 好吧,我承認我回答問題是有功利心的。我正在打造一款個性化資訊閱讀的產品「指閱」。需要產品經理/工程師/實習生,對這個領域感興趣的童鞋,猛烈地來吧!

手機上網,給個短回答:

1. 你的朋友有更多關於你的信息。信息越多,自然效果越好

2. 機器對數據的表達還未能觸及高階的知覺過程。換句話說,機器無法看過一部電影之後理解它的內容。

3. 如果給人和機器同樣的數據,比如netflix,好的演算法在性能上絕對遠超過人。


對於不同的平台,應該是有不同的推薦系統,也就是說需要根據不同的情況做相應的「本地化」處理,用一些所謂「成熟」的演算法是不太容易能滿足這些新的需求的 。所以,會產生「系統自動推薦的東西還是不能令人滿意」這樣的結果。對於「這些牛人成天在研究討論演算法」這個問題,我想問題應該是在於兩個方面
1)新的演算法更加節省資源;
2)新的演算法實質是一個根據對應的平台實際情況重新建模的過程。


研究人員提高的是統計意義上的推薦效果,比如CTR,轉化率。單個人的結果的好壞沒有特別的意義。此外,即使你覺得不好,但如果你點擊了,你使用了,那我們的目的就達到了。


在淘寶做過幾個實際上線的推薦系統,從一個idea到最終能被千百萬用戶看到的產品。

寫一寫我們的思考,不涉及商業機密。

首先推薦系統的本質是什麼?

我認為站的角度不同會有完全不同的答案。

從商業角度來看其實更接近本質:就是把你認為適合用戶的東西推銷給他。

上面這句話就意味著推薦系統要解決兩個問題:

1. 找到適合用戶的東西。
2. 推銷給他,或者說推薦給他。

第一點是演算法的範疇
一般在商品推薦領域有兩種方法,一種是基於商品關聯的推薦:比如你買了手機,那很可能還要買手機殼移動電源。比如你喜歡聽愛情買賣,那很可能你還喜歡聽最炫民族風。基於商品的推薦演算法實現簡單粗暴,工業界應用極為廣泛。
一種是基於用戶屬性的推薦,其實基於商品的推薦廣義上是基於用戶屬性推薦的子集。因為用戶屬性代表一切你可能掌握的用戶數據,有靜態的用戶檔案如年齡性別職業,也有動態的行為信息記錄如購買歷史,瀏覽歷史,搜索詞集等。簡單的如協同過濾,複雜的如現在流行的機器學習方法。本質都是一樣的-試圖擬合一個性能良好的從用戶屬性空間到購買行為的函數。

不幸的是據我所知即使最先進的演算法,對上述函數的擬合程度,用精確率和召回率衡量,都不怎麼樣。

更複雜的演算法還會考慮時間與地理的維度,由於這個方向涉及我實際項目,就不具體展開了。

而第二點是我要探討的核心,也就是推薦系統的商業本質。太陽底下沒有新鮮事,在傳統商業時代做這件事情的叫做銷售或者導購員。需求既是發現的,有演算法來發現,也是創造的。我們知道超市裡往往有導購員,其實超市的商品擺放非常講究,大多數請況下很合理,但是有和沒有導購卻對銷量有巨大影響。賣同樣的商品,銷售之間可能有幾十倍業績的差別。

同樣據我所知,同樣的演算法,不同的交互設計,甚至不同的文案,都帶來巨大的結果差異。

這些無不提示我們,推薦系統不是一個簡單的演算法問題,是一個商業問題。

在合適的時間,合適的場景下,以合適的方式推薦合適的商品,才能得到最好的效果。在這個問題上我們也在探索。

機器學習的模型難以解釋,如何告訴用戶我為什麼給你做這樣的推薦?

推薦系統和機器廣告鋪天蓋地,如何讓用戶有新鮮感,覺得你的推薦有意思?

這些問題都在演算法之外,希望能給同仁們帶來一些思考。


因為「巧婦難為無米炊」啊。

你覺得谷家推的廣告靠譜,那是因為他們有你全部瀏覽記錄,提升一步說就是「他們懂你更多」。如果個人願意無條件分享記錄他們日常行為的大多甚至全部數據、並且如果這樣的個人足夠多,到時再來看個人對推薦的滿意程度,那會完全是另一個景象。

現在流行的一個說法「數據就是未來世界裡的 oil」我覺得一點都不誇張。


推薦系統要產生令人滿意得推薦結果實際上不僅僅是一個演算法範疇的問題。事實上,演算法需要數據支撐,具體到推薦演算法上,就是需要用戶的行為數據支撐。有沒有大量的、高質量的用戶行為數據直接關係到各種推薦演算法結果的質量。這裡所謂的高質量的用戶行為數據是指那些能夠明確反映用戶意圖的行為數據。前面有人提到,谷歌的搜索廣告推薦結果的相關性不錯,這是因為谷歌這裡利用一個很強的反映用戶意圖的數據,即用戶當下在搜索框中的搜索詞。而為了收集用戶的高質量的行為數據,又和產品的設計和用戶交互形態有關。例如,對於亞馬遜這樣的購書網站以及netflix這樣的電影租賃網站,用戶的購書、租片行為最終都要反映到支付上面,在支付環節上,用戶通常會更加謹慎,相應地數據中的噪音也較小,因此基於用戶購買行為的推薦,比如說「買了又買」之類的協同過濾推薦的結果通常還是比較有意義;與之對應的是基於用戶瀏覽行為的推薦,一方面這種行為數據的量通常會更大,但同時由於與用戶關聯的成本或代價較低,用戶的行為的隨意性也會更大些,這種數據裡面的噪音也會更大些。如何在這種大量的信噪比較低的數據中,發現用戶的意圖進而產生「滿意」的推薦結果,確實也是演算法的機會和挑戰。當然,演算法的改進也可以考慮和用戶交互的設計等環節結合起來,更加主動地獲取、分辨用戶的意圖。


系統推薦內容,演算法還是需要歸納到推薦的本質

1、基本運營人員手動的分類推薦

2、基本使用內容的TAG關聯推薦

3、基本用戶的行為習慣記錄數據的關聯內容推薦

4、基於相似用戶之間的內容推薦,根據大眾用戶需求類型推薦相同內容

演算法的推薦無法是人為地分析用戶的意向需求,但並不能對所有的人一一滿足,人與人之間的差別,只能根據實際的內容,數據推薦之間靈活關聯,在運營間根據需求靈活調整,演算法只是底層的東西


系統沒有更懂你,是因為你告訴它的還不夠多(逃


模型用來逼近現實的世界。現實社會無法完全數字化。


機器演算法往往需要大樣本集的訓練才能達到較好的性能,例如神經網路演算法需要不斷的訓練、調整參數,最終達到收斂。
因此對於推薦演算法或任何人工智慧演算法而言,有以下關鍵因素:
首先,樣本集的準確性和規模;
其次,計算資源是否充足;
再次,演算法性能需要持續優化;
最後,理論基礎是否完善;

推薦系統的核心演算法屬於人工智慧的範疇,而人工智慧尚處於前沿科學,其理論基礎仍然不夠完備,讓機器做出正則判斷很簡單,但是讓機器綜合心理學、社會學乃至某細分領域內的規則做出判斷則很難。想要機器模擬的結果無限趨近於人類思維結果,至少目前在理論上還沒有任何突破。


說計算機不如人,這個說法太過簡單草率,遺漏了很多信息。
首先這句話是有前提的,什麼樣的計算機不如什麼樣的人,按照通常的理解,這句話背後的意思是普通的個人計算機不如智力正常的成年人,而不是拿世界前幾名的超級計算機去和初生的小孩子或者智力有問題的人去比。搞清楚這個前提,其實很多人可能就不覺得有問題了。首先,個人電腦的集成電路規模才多大,比人腦神經元差多少個數量級,憑什麼要求它達到同樣的處理能力。其次,人腦從出生開始一直在受到周圍的人和環境有意識的訓練,一直在學習各種知識,用了十幾二十年才達到成年的智力水平,計算機有哪個演算法用了這麼大量的數據訓練了這麼長時間,而且還有一群人有意識地不斷幫助它去進行這種訓練?如果計算機沒有經歷這麼個學習的過程,竟然就比人靠譜了,那不是說明成年人都是廢物,這麼多年白活了。 第三,計算機和用戶交換了多少信息,計算機從人那裡獲取信息基本就是通過鍵盤滑鼠,每秒達到百位元組的信息量就算不錯,人類之間呢,視覺加上其他感官,每秒超過GB級別,一個人對另一個人的理解,計算機怎麼能比? 第四,人類長得都差不多,因此具有基本相同的身體感受,基於這個共同點,形成了所謂人類基本常識,計算機長得和人差多少?有可能理解人類基本常識嗎?
指望一個演算法,在一個處理能力不怎麼樣的平台上,不經過任何訓練,不以知識為基礎,就超過人類的智能是不現實的,但是,一個具備足夠計算能力的硬體系統,在一個能夠通過對數據的學習,自我演化的軟體系統的控制下,經過長時間大數據量,且有人輔助的學習過程,是有可能在某一方面接近人腦的智能水平的,只不過在今天的世界上,從公開的資料看,還沒有這樣的系統,而且從通常的觀點看,也沒有理由製造這樣的系統,因為成本收益顯然不成比例。即使有了這樣的系統,它也要先跟你足夠熟悉才能推薦靠譜的東西給你,所以它必須先獲得關於你的足夠數據,因此必須有視覺,聽覺等信息處理能力,而不能只憑鍵盤滑鼠;而且還要長得和你差不多,胳膊腿都得有,不吃飯也要覺得餓,不睡覺也要覺得困,這樣的系統造價多少?讓你自費買來,用來給你推薦,你會買嗎?


推薦是一種基於用戶行為的預測。而預測結果的好壞,受到數據本身的影響,評判指標的判定。用戶行為有千千萬萬,用戶的習慣也各有不同,不同的場景,不同的數據,不同的評判指標都會對推薦的效果產生影響,這些不是單單依靠演算法本身就能解決的。

一個再牛的演算法,也只是在特定的幾個場景,領域裡有比較好的效果。而這裡說的效果的好壞也是相對於評判指標來說的,對於是否令人滿意,這個問題不好回答,滿意度這個問題沒有很好的定義,可能推薦的結果對別人而言可以接受,但對你卻是恰恰感覺不好的。

由於推薦演算法本身高度依賴行為數據,這樣也很可能包含個人隱私。對一些包含個人隱私強的行為的推薦,產生的效果就往往會是一個不那麼令人滿意的結果。

所以,推薦系統基礎依賴的是演算法,但是在不同的場景下,對於推薦結果也要做適當的人工干預,這樣才能有一個較好的推薦結果。這裡又引入了另一個問題,什麼才是適當的干預呢?這又不是一個有準確衡量指標的問題。個人認為,推薦系統本身就是一個在特定場景下不斷優化的過程,優化可能依賴演算法本身,也可能依賴人工干預,是一個沒有終點的道路。


那可能是因為你的個人數據積累還不夠多。

如果將你的朋友對你的了解進行數字化,那將是非常龐大的數據。人腦所具備的「基於經驗的智能計算」在某些方面並不弱於最強的計算機。


牛人們的演算法雖然牛B,但是缺乏用戶的大規模數據,這演算法起作用空間很小。而你的朋友給你推薦東西時候,大腦肯定沒有運行什麼演算法( 即使有,也是1+2=3那種最簡單演算法)、但是他認識你那麼多年,等於掌握了你很大部分數據,大腦肯定調用了很多數據。

這也是facebook在資本市場為什麼那麼值錢的原因。 -------「數據比演算法值錢」


最近在做KDD cup。分析KDD cup里的數據會發現有1/4多的用戶是二值用戶(評分有十檔),所以感覺並不是數據越多越好,音樂推薦這種東西,我覺得合理的評分規則,運營這些東西更重要。


基於 tag 的推薦 和 人基於閱讀後理解全文後抽離出來的信息的推薦
二者的差距可不是一天兩天能縮短的.
人類進化了那麼多年積攢下來的優勢不是那麼容易超越的.

現在每一個互聯網上的人, 還只是一個tag的集合, 根據tag 來推算出你喜歡的內容.
未來每一個互聯網上的人, 應該是一個tag和演算法的交織合集. 每個人都在互聯網上不斷更新進化. 推薦的內容由自己產生!


現在的數據挖掘一般來說都是基於通用性數據的趨勢性,統計性研究。得出的結果往往只能是概率上趨向於正確。就好比說系統中有80%的非主流人群,系統當然就認為你也是非主流了。
其實問題的關鍵是互聯網需要更多的知道人與人之間的差異性,又或者說是每個人獨立的特性。現在我們對人的研究以及人的模型都還不夠完善,而且很多微小的被忽略信息可能也是關鍵性的,就好比說你是左撇子還是右撇子,你慣用的走路模式等等可能都和你的喜好,需求有關。
除此之外,這方面的安全問題也沒有解決,也就是說你是否願意暴露這麼多的隱私給系統呢?


因為一個演算法模型,真正落地到可以在線上使用,是有一個周期的。

  1. 首先,要由足夠的流量把這個模型跑起來,測試效果
  2. 其次,演算法模型是否會對性能造成影響,也需要針對性測試
  3. 最後,演算法模型不是完美的,它需要不斷迭代,不斷參數調優,需要大量的工程人力在背後支撐

推薦閱讀:

怎麼查每個軟體的實際裝機量呢,有哪些方法或者數據可以參考?
搜索推薦系統是如何實現的?
會游泳和不會游泳哪個溺死的概率大?
網路遊戲的基本數據埋點都有哪些?
假如你來設計知乎的數據分析系統,除了最基本的數據外(用戶量,DAU等等),你都會衡量什麼?

TAG:數據分析 | 推薦系統 | 推薦系統實現 | 個性化推薦 | 用戶行為數據 | 推薦演算法 |