※ 引述《yzugsr (miaout17)》之銘言:
: 小弟是做web application的
: 之前稍徵看了一些data mining的東西,但不是很專精
: 看到這篇討論有些問題想要請教
: ※ 引述《chucheng (時間太少事情太多)》之銘言:
: : 並假設ABC與時間無關(想成賣永久,不會下架)
: : 這樣問題可以簡化成frequent itemset/ Association rule learning 的問題
: : 看這裡:http://en.wikipedia.org/wiki/Association_rule_learning
: : 其中最簡單的解法是aprior: http://en.wikipedia.org/wiki/Apriori_algorithm
: 不知道我的理解是否有誤
: Associative rule mining應該不用假設user是同一個人?
: 例如有10000筆便利商店的交易,但沒有記錄客人的身份及特徵(如性別、年齡等)
: 如果「香煙->打火機」的support和confidence夠高
: 還是可以在顧客購買香煙時推薦打火機,或將打火機放在香煙旁增加購買率?
: 當然,如果可以考慮其他因素,可能有更精準的mining結果
: 但我想就算沒有額外因素,並不一定要假設user的身份
: 將大量的transaction做associative rule mining也是有參考價值的?
一個隱含的假設是使用者的Personalization不需要考量
舉一個我以前犯過錯的例子,
用association rule做query recommendation(based on log)
大部份的人搜shoe之後會搜high heel,等等
後來發現因為女生上網買鞋多,等於間接假設所有user都是女生
假設同一個人,比較正確的說法是「personalization」不考慮
另一個有趣的軼聞是
當年第一篇paper發表的時候,作者的經典範例是
beer-->diaper (經典的beer and diaper story)
但用同樣的資料集,後人無法 "重製" 這個結果
話說有可能演講時只是故意舉個頌動的例子就是了XD
: : 相關的面試問題還有很多,基本上這是在考
: : Recommendation System Design或是Collaborative Filtering
: : 有時候還會被加問如果資料很大(超大,大到放不到一台電腦如何解決)
: : 正解是map-reduce over hadoop,配上Apache Mahout
: : 裡面有現成的Collaborative Filtering 函式庫可以使用
: 我之前剛好也思考這個問題,假設以下情境:
: * 我有一個資料庫,只記錄了顧客購買過哪些物品,但沒有任何額外資訊。
: * 這些商品顧客通常只會購買一次 (如書、CD)
: * 基於這個前提,要推薦顧客之前未購買,但可能會有興趣的商品。
: 同樣考量資料量可能很大的情況
: 我之前曾經survey過C大提到的Apache Mahout
: Ex. https://cwiki.apache.org/MAHOUT/recommender-documentation.html
: 我的認知是Mahout的collaborative filtering似乎都是針對preference(rating)資料
: 使用者對商品必需有一個評價(Ex. 1~5分),或者尚未評價
: 或者在"boolean model"中,使用者對一個商品可以是:喜歡、不喜歡、未評價
: 但是,基本上只能知道顧客「有購買」或「未購買」
: 無法使用Mahout現成的recommendation機制
: 一開始原PO的例子也一樣,只能知道「哪些東西一起被購買」
: 無法知道「顧客對商品的評價」
: 像Mahout現成recommendation engine的機制
: 似乎比較適合Google Play, Netflix這種容易蒐集rating的應用
: 不知道我是否有什麼疏漏或誤會的地方
: 或者C大是指使用Mahout底層的矩陣map reduce運算,自行建構推薦演算法?
我也遇到一個類似的問題,也有想到一些解法(自以為絕妙的idea XD)
做的差不多了,100%會投今年的CIKM (比較可能,因為地點在San Francisco) or ICDM
不過因為涉及(尊重)一些公司資料的policy,Approve / Accept前沒辦法談太多
應該六月就有結果,之後我可私下mail draft給你參考(如果等不及conf.的話)
當然也有很多類似的研究,可以參考一下KDD的Paper or 例年的Challenge
: 附帶一提,針對我提到的情境
: 我構思的解法是把每個顧客的購買視為一個transaction
: 簡單用apriroi做associative rule mining推薦
: 若在資料量太大的情境下,則考慮將apriroi的每個step拆分到map-reduce做運算
: 不知道以上有沒有更好的方法呢?
Apriori當資料大時很容易爆掉
先試著用Fp-growth,通常10G級數以內可以輕鬆搞定
有人有提出parallel的方法http://dl.acm.org/citation.cfm?id=1454027
我沒實作過,不過我通常處理的資料級都在100G以內
我很垃圾(不要臉)的…這時候我都是…
弄台強一點的server丟上去跑好是了,能不碰map-reduce就不碰
就算碰也是拿來作資料清理或是encoding這一類的單純工作
最後的分析還是拿回單機跑
如果你要搞Collaborative Filtering Recommendation
我推薦試試看CMU教授Carlos設計的GraphLab
http://graphlab.org/
我還沒認真研究,但其它同行好評不斷
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 131.179.64.104
※ 編輯: chucheng 來自: 131.179.64.104 (04/29 01:26)