TibaMe技術團隊發展AI-線上學習平台如何發展推薦系統(下)

by 管理者

2019年8月中TibaMe開始了推薦系統的規劃及開發,上一篇我們分享整體規劃以及技術選擇的分享,有興趣的可以點選【TibaMe技術團隊發展AI-線上學習平台如何發展推薦系統(上)】閱讀, 接下來這篇要分享實踐這個系統的一個過程!那我們就正式開始囉!

推薦系統包含哪些部份?

    功能上來說,主要可分成兩個部份,瀏覽TibaMe網站時在不同地方可以看到的推薦清單、管理員調整推薦清單及追蹤推薦成效的報表。當然,這兩部份的功能都需要UIUX去設計、優化畫面的呈現、使用的流程及操作的體驗。再讓前端、後端工程師把整個網站的服務架起來。那推薦的邏輯和演算法是在哪一段處理呢?

推薦演算法怎麼加入?

這沒有一個標準答案。不過,TibaMe的作法可以分享給大家參考一下。

我們先回顧一下TibaMe希望提供的推薦。TibaMe的推薦分成兩種,一種是相關課程的推薦,例如,某一課程頁推薦別人也看過了哪些其它課程;另一種是會員的即時個人化推薦,也就是根據會員當下(剛剛的瀏覽)及過去的行為,來提供他符合最近喜好但也不忽視過去的紀錄,專屬於他個人的推薦。

上圖是TibaMe推薦系統的運作順序的簡單圖示。不管是哪一種推薦,基本上都符合上面的順序。推薦演算法主要在兩個階段參與。一個是定期產出各課程的相似度清單、一個是後端拿到相似度清單後的處理。

演算法分成兩個階段處理

第一個階段,產出各課程的相似度清單。這些清單不會是即時運算出的,而是定期產出。「物品相似度」其實相對於「用戶相似度」要來的穩定,因此一般來說,不需要太頻繁的去運算更新。這也是我們選擇使用基於物品的協同過濾的原因之一。

第二個階段,就是後端回傳推薦清單給前端前作的運算處理。這階段兩種推薦的類型就會有不同的處理。

  1. 相關課程的推薦,基本上就是依照相似程度推薦課程外,再根據會員的資訊或是專家的設定,作一些推薦清單的調整。
  2. 「即時」的個人化推薦就比較複雜。我們會整合會員過去TibaMe上的行為,利用這些資訊來算出會員對各課程的喜好,再結合課程相似度產出「即時」個人化的推薦清單。這其中就有很多細節需要處理和討論。像是哪些行為可以反映喜好、不同行為要如何比較、過去的行為跟現在的行為反應的程度是否相同等。這些細節可能會因產業、公司、商品類型的不同而有不一樣的處理方式。當然這些也都可以之後根據反饋作調整。

效能問題

除了一些演算法的計算流程及使用的資料要注意。在網站服務上,要是讓使用者等太久,那使用者可能看都還不會就離開頁面了。為此我們需要將推薦清單顯示的速度控制在可以接受的範圍。

而在我們整個流程中,整合會員喜好的部分就可能會有大量的資料及運算。但我們又不希望整合會員行為的結果全是事先運算的,這樣會員當下(過去一天)的行為反而都被我們忽略了。為此我們將使用者的行為分開處理,過去的行為定期做整合,尚未整合的部份則在即時運算時再與過去行為整合的結果結合。簡單說,就是一部份先算好,另一部份要用的時候才算。這樣整個需要運算的資料量就被我們控制在可以接受的範圍內了。

總結    

這兩篇文章沒有太多推薦系統演算法的技術教學,主要是簡單的分享TibaMe發展推薦系統時對於不同演算法的考量。還有,實務上系統的運作模式及碰到的問題。TibaMe的推薦系統還有很多改進的空間,也許之後整個架構和使用的演算法會整個改變,到時候也許會再有新的分享囉。

登入會員( https://www.tibame.com/ )體驗看看我們的推薦系統,也歡迎有興趣的朋友們一起來留言互相交流。

撰文者:TibaMe技術團隊 – 大數據分析師 Gordon

分享這篇文章:
0 comment
0

您也許會喜歡

Leave a Comment

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料