Yahoo資深工程師陳怡安表示,沒有任何技術適用所有情況,根據要解決的問題,挑選符合需求的工具。

圖片來源: 

JCCONF

在3月Yahoo推出了慾望牆,將消費者可能會想購買的商品集中在同一頁面上,而其推薦的結果,是分析來自Yahoo購物中心與商城每日5百萬筆的購物行為紀錄,Yahoo資深工程師陳怡安在2014年JCCONF上分享,Yahoo如何使用即時串流機器學習Samoa,根據顧客頻繁變化的購買行為特徵,做出商品最佳推薦。

陳怡安說,為了提升購物中心的點擊率(Click Through Rate,CTR),對於各類型族群的消費者,給予不同的搜尋結果,提高命中消費者興趣點的機率,以名牌Coach關鍵字為例,不同族群在購物中心搜尋時,得到的結果皆不一樣,當搜尋Coach是年齡族群較高的女性,推薦引擎的結果可能要提供當季且單價較高的手提包,而搜尋的用戶如果是剛入社會不久的年輕女性,經濟狀況可能較不寬裕,推薦引擎或許要推薦的是價位較低的皮夾為主。

而這之中的消費行為差異,必須要藉由機器學習(Machine Learning)幫忙,用大量的資料訓練數學模型,以預測未知的資料。假設一個籃子裡有藍色鴨蛋與紅色雞蛋,透過已經存在的樣本告訴電腦,鴨蛋就塗藍色,是雞蛋就塗紅色,當下次有一顆蛋需要上色時,電腦便可藉由過去的經驗判斷該顆蛋的顏色。而Yahoo的推薦引擎也在做分雞蛋的事情,將使用者的點擊資料當作推薦引擎的訓練資料,分析使用者的搜尋、瀏覽商品等行為資料,了解瀏覽商城以及購買的習慣,以得到商品與使用者族群之間的關係。

機器學習學出消費者心中的「女神」

陳怡安以購物中心的關鍵字為例,有不少消費者想要購買「女神」風格的衣服,但是一開始並沒有人了解「女神」的衣服是什麼樣子,而推薦引擎藉由使用者的搜尋以及點擊行為學習後發現,搜尋關鍵字「女神」的用戶,有高比例會點擊具有飄逸、網紗、雪紡以及典雅等形容詞的商品,因此推薦引擎便可藉由使用者行為資料的訓練,得知當用戶搜尋「女神」時,應該推薦什麼樣的商品。

機器學習在不同的環境有不同的工具可利用,當在單一的機器可以使用R語言的套件或是開源的Java軟體Weka,而在大資料的分散式批次架構中可以使用Pig、Mahout或是MLib。

陳怡安表示,Yahoo商城使用者行為的變數非常多,而且隨時都在變動,因此推薦引擎需要具有即時的分析能力,於是他們採用了分散式串流機器學習架構Samoa,他表示,Samoa能不斷的串流資料,即時修正數學模型,是串流機器學習領域發展較為成熟的套件。

Samoa可依需求選擇Apache S4或是Storm分散式串流運算平臺,而且其本身也支援多種演算法,例如Classifier Methods、Clustering Methods或是Frequent Pattern Mining。陳怡安說,Yahoo商城因為功能上的需要,目前嘗試導入Storm,因為Storm不只具有彈性規模,能依運算量擴展機器,並且還有容錯的能力,當一個運算節點發生錯誤時,另一臺機器可以馬上接手工作,而且重要的是,所有任務要保證一定會被至少執行一次。

記憶體內運算避開速度瓶頸

另外,他們認為運算速度是一件很重要的事,而且整個資料流的過程,不能有瓶頸,因為整體的速度,會被最慢的環節拖慢,因此分析工作很仰賴記憶體式運算架構,將大量運算放在記憶體中處理,而不存取硬碟。

不過,有些演算法在傳統水平平行化運算上無法得到效能的提升,例如決策樹,陳怡安說,Samoa是為Web Mining而設計的,一個任務可能包含十幾萬個特徵,當節點都處理十幾萬個特徵,水平平行化會使記憶體負擔太大,Samoa團隊在設計上,便採用了較不直覺,但是計算量能被接受的垂直平行化。

陳怡安也提到,許多技術的選擇無法選出一個最好的,只有依照需求選出最適合的。


Advertisement

更多 iThome相關內容