ML.NET 推荐引擎中一类矩阵因子分解的缺陷
ML.NET 作為 .NET 跨平臺的機器學(xué)習(xí)套件,在回歸、預(yù)測、分類甚至是圖像識別、異常檢測都展現(xiàn)出簡潔快速的優(yōu)勢,以往的文章已介紹過不再贅述。其實機器學(xué)習(xí)場景中還有一類非常常見的,就是推薦,特別是在線購物、文娛產(chǎn)品為了提升用戶體驗,一個比較好的主意就是讓用戶優(yōu)先看到他需要的物品、內(nèi)容,甚至提供用戶意料之外又情理之中的產(chǎn)商品。推薦算法正好能夠通過數(shù)據(jù)實現(xiàn)這一目標(biāo)。
?
?
?
如上圖所示,如果我們有用戶、商品的購買關(guān)系,并且還有用戶的評級、評分、評價內(nèi)容,那么矩陣因子分解算法非常適用。如果我們還能獲取到商品本身的一些屬性,比如名稱、分類、簡介、價格的話,那么場感知分解機算法就能發(fā)揮特別好的作用。當(dāng)然,推薦算法比較難的就是冷啟動階段,可能什么數(shù)據(jù)都沒有,初始階段沒有更多選擇,那么也只能從相似用戶消費記錄入手做推薦了,獲取用戶與購買商品編號的對應(yīng)關(guān)系也算是容易的,此時用得比較多的是一類矩陣因子分解算法。仍然舉一個例子,剛剛營業(yè)的某書店,基于借閱書的記錄,我們給借了《三國志》的讀者小強推薦同樣借過這本書的小王借看的其他書,可能不一定是名著,不過沒關(guān)系,這足夠達到推薦的效果,因為算法背后的邏輯是相信他們總有其他書是都喜歡看的。
了解到前面的背景知識后,回頭我們再看看 ML.NET 的推薦引擎,它同時支持矩陣因子分解和場感知分解算法,官網(wǎng)文檔在《教程:使用矩陣因子分解和 ML.NET 生成影片推薦系統(tǒng)》有過詳細的介紹。Sergey Tihon 在 ML.NET 的 Github 倉庫中提過一個 Issue,詳見《"Label" for One-Class Matrix Factorization #873》,其中談到了 ML.NET 推薦引擎中一類矩陣因子分解算法存在一處缺陷。具體來看 MatrixFactorizationTrainer 類的詳情,針對一類矩陣因子分解,在梯度下降時默認觀測值都是表示正向的1,而平方誤差函數(shù)調(diào)用的是MatrixFactorization將按枚舉值傳遞給損失函數(shù)。參看《Matrix Factorization and Factorization Machines for Recommender Systems》,注意到以下這一頁,預(yù)測標(biāo)簽始終為1。
?所以如果數(shù)據(jù)集沒有更多的特征可用,我們必須指定矩陣因子工廠并提供對應(yīng)的參數(shù)值1而不是按默認的枚舉值生成 Trainer。修復(fù)后的示例參見:《Fix Label column meaning in Recommendation sample》。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的ML.NET 推荐引擎中一类矩阵因子分解的缺陷的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xamarin.Forms 5.0 来了
- 下一篇: 晋升新一线的合肥,跨平台的.NET氛围究