記一次推薦系統對話

兩個禮拜前,網友從谷歌找到接近十年前關於推薦系統評估指標的舊文,跟網友在臉書上聊了幾句,有點意猶未盡;又有點想稍稍彌補當初系列文章泡湯的遺憾,所以又續貂一篇《如何評估推薦系統(二)》。 續貂之後,正在 hands-on 的網友說了幾句他的心得,於是我又多嘴了幾句。所以索性再多寫幾句,為這次對話做個小結。 推薦系統早就遠離 MovieLens 那個時代,基本的框架和演算法,都相對成熟許多。而且因為確實有不少提高業務收入和客戶黏性的具體實例,產學互相刺激促進,已經發展成一個生氣蓬勃又接地氣的領域。 依不才愚見,推薦系統的實務,固然還有許多必須再深究、細究的題目。但是學界角度的研究,則到了一個需要重新盤整的時候了。 不只一位從學界跑到業界的推薦系統大老,說過不要擔心用什麼演算法,先建一個系統起來(Build it and they will come. 的推薦系統版本 ?),有了數據,再慢慢調整演算法和優化實做細節。 有些指標確實對發表論文有顯著意義,但是在真實世界這一個演算法和那個演算法其實沒有什麼差別。真正的現實是,目前比較好的推薦系統實蹟的例子,都有一句隱臺詞沒有說出來,系統背後有一個強大的運營團隊在搞東搞西(說的粗俗一點啦)。 演算法如果循著以前的思路走下去,當然還有許多東西可以深挖,去年 Xavier Amatriaia 在 ACM RecSys 2016 的演講中特別提到隱式回饋(implicit feedback)的問題,設計演算法時用那些數據,不用那些數據,數據怎麼解讀,還有很多地方需要去探索。 從文獻上來看,像 usefulness 、confidence 、serendipity 這些指標的思考角度,其實早在 2004 之前就有學者已經踏出一步了,但是實務界那時還沒顧及到這個層次。 但以目前線上使用的演算法的思路,要顧及再評估系列前文 中談到的 relevance 和 serendipity,恐怕很難。過去的演算法,說穿了本質上,都是 numerical-based reasoning 的思路,促進銷路不能說沒有用,但是在 familiarity、relevance & serendipity 上這些已經觸及人類消費心理疆域的思考上,有對牛彈琴的問題。 ResysChina 的核心團隊中,有人在微信上聊到用 AI 技術,讓推薦系統往前跨一步,從滯後一步的解讀你以前是怎樣的一個人,真正往前跨到預測 你可能變成怎樣的人。竊以為這個想法值得再深鑽下去。 借用 ResysChina 發起人谷文棟兄的說法,做為一個「曾經」的推薦系統選手,心裡確實有許多遺憾,但是實在有許多課要補,才能真正面對推薦系統的詩和遠方這個問題。 至於怎麼補課,天知道咯….

如何評估推薦系統(二)

最近有網友看了舊文《如何評估推薦系統(一) 》,詢問這文章是否有續集。依印象所及,續集是有的,只是打散了,分成幾篇短文。想想又覺得似乎少了什麼東西,於是翻了以前 Google+ 的私人訊息,實驗室的學弟五年前就問過我第二篇怎麼不見了,我在 blogger 後台找了又找,無奈發現真的不見了,究竟是我半夜夢遊把文章殺了,還是系統資料庫的異常,已經不可考。 之所以確定真的有第二篇,是因為在私訊中,我們討論了第二篇中我談到某個罕見指標 confidence 的參考文獻,因為找不到第二篇筆記原稿,只好找了 2004 最早談 confidence 原始概念的文章,讓學弟自己循線鑽下去。 不管怎麼呼天搶地,沒有存檔讓整件事情完全無解,只好摸摸鼻子認了。時間久了,我自已也忘了這件公案,若不是網友詢問,我自己都忘了這件事。 後來我寫了幾篇短文,談常見數字指標之外,商業意義更濃的幾個指標,只是沒有再用數字二、三、四為文章編號下去。 這篇自白,就權當評估系列的第二篇吧。 我承認,確實有些數字指標的定義還沒寫進如何評估系列,比如機器學習領域著名部落格 FastML 的文章 Evaluating recommender systems 介紹的 NDCG 和 MAP 。有些已經談過的指標,其實還有未盡之意,比如 ResysChina 知乎專欄,有篇文章《多高的 AUC 才算高》就把 ROC/AUC 的統計意義和陷阱說的透徹許多。既然已經有更好的資訊源,我就不做沒必要的複製貼上了。 在第一篇文章最後,我說接下來要討論的是推薦系統的 usefulness ,但關於推薦系統效用的討論後來分成幾篇短文,沒有彙整成一篇比較全面的長文。 所謂「有沒有用」這檔事,很難量化,至少都目前為止,我們沒有精準度量用戶情緒和感覺的辦法。如何解讀用戶與系統的互動、用戶對接收到訊息的回饋的複雜與困難,從之前 Netflix 為什麼改變用戶評分機制的討論,和去年 Xavier Amatriaia 在 RecSys 2016 的演講 Lessons Learned from Building Real­-Life Recommender Systems 中特別提到隱式回饋(implicit feedback)的重要性這兩件事,可見到冰山一角。 儘管如此,推薦系統的研究者還是很努力的抓出一些所謂的共性和特徵,比如據說曾經存在的第二篇文章談過的…

戒慎恐懼

上禮拜翻出舊文,想起之前等期刊回覆時的心情,那時 John Battelle 在部落格提到谷歌創辦人 Larry Page & Brin Sergey 離校之前,投論文的結果也是非常不順。一時間,煎熬翻騰的情緒有了出口,心情大好,阿Q 的處世態度,對心理健康確實有好處啊(呵呵)。 … when Larry and Sergey first presented Google, they couldn’t even get their paper accepted (it took three tries, if I recall correctly. Someone should write a book about that…). 沒想到,SEO by the Sea 的老大 Bill Slawski,竟然在愚人節那天,翻出當年兩位創辦人在校期間寫的論文,還找出可以正常下載的超連結。甚至還有人從 Web Archive 翻出那時候 Stanford 大學的網頁 1,看到這麼多年前的網頁,不知說什麼好! 看到這些出土「古董」,有兩個想法,一是在這個時代,掌握搜索技能真是生存必備,許多人提過這件事了,此處不多說;第二個想法比較恐怖,我突然想到《刪除:大數據取捨之道》這本書所說的,在這個信息時代,你曾經幹過的事,都會留下痕跡。不管是好事壞事,不管你希望別人怎麼看怎麼想,只要是有心人,一定能挖掘到你「曾走過的痕跡」,而且你不知道別人怎麼解讀詮釋這些痕跡!…

Bots War 機器人江湖

今年二月份 PLOS 發表一篇文章 Even good bots fight: The case of Wikipedia,維基百科使用的撰稿機器人,彼此會拆臺,改對方的稿子,乍聽很有趣,但是細細想來,令人不寒而慄。就像論文摘要說的,機器人也自成江湖1了。 The online world has turned into an ecosystem of bots. However, our knowledge of how these automated agents are interacting with each other is rather poor. Even good bots fight: The case of Wikipedia via kwout   照論文作者的說法,撰稿機器人沒有感情、沒有慾望,一心只有把自己份內工作做好的念頭,更別說結黨營私拉幫結派,在組織內搞派系。若是它們寫的稿子品質過關,那就是你好我好大家好啦。 Bots are predictable automatons that do…

Netflix 為什麼要改變評分機制

上禮拜,Netfilx 揚棄了五星制的評分機制,改成喜歡/不喜歡的二元式評分,聲稱使用者的評分其實沒有你想的那麼重要(not relevant)。就我印象所及,普遍對這個改變的反應都蠻正面的,連包山包海的 John Gruber 都毫不猶豫的給個讚。 把分數制改成好惡兩分,不是新鮮事,早在 2009 年,YouTube 就這麼幹了。那時 YouTube 為了解釋為何把五分制改成 Thumbs Up / Down,在公司部落格上公佈他們的數據,在1到5的評分制度下,絕大多數的人都給5分,要不然就不給分,還有少量的人給 1 分, 2 – 4 分確實是不折不扣的無關緊要(not relevant)。下圖就是 YouTube 自己公佈的圖形,2 – 4 分的數據點幾乎就要黏上座標軸了。 Source:YouTube Official Blog 以前整理推薦系統文獻的時候,我還想過幾個可能。一是評分制可能扭曲 RMSE 的計算,1-2 和 3-4 的差距都是 1,但是在實際情況裡,前者是無論如何都不愛,後者是從猶豫到堅定,說不定就聽了商家的推薦,心安理得的「手滑」一下了。所以數字指標不能說明系統的表現好壞。 我還聽過一個說法,評分制還要考慮政經、社會、文化的發展與取向,在一個只講中庸,不想做出頭搋子的社會裡,大家都點 3 分,1 分和 5 分是不是反而變得無用了。 信馬由繮,跑得太遠,回到主題來,評分制度這個主題,項亮的這段話,講的頂靠譜。這是真正打過仗,有實戰經驗的牛人才能說出的真知。 我一直觉得Netflix Prize其实误导了整个推荐系统的发展。当然应该说是更早的MovieLens就误导了,只是Netflix Prize没有纠正过来。这个误导就是,评分预测其实不是重要的问题,反而是一个很次要的问题。因为,当人民群众拿着Netflix Prize的算法准备用在自己的系统里时,顿时傻眼了,因为没有评分数据。他们有的只是观看数据,点击数据,购买数据等等。这些数据有一个特点,就是user-item矩阵中所有的非missing值,都是1。而不是Netflix Prize里面的评分。 總之,不管是 5 分和 10 分也好,主要有幾個問題:…