系列隨筆:
(二)基於商品屬性的相似商品推薦算法——Flink SQL實時計算實現商品的隱式評分
(三)基於商品屬性的相似商品推薦算法——批量處理商品屬性,得到屬性前綴及完整屬性字符串
(四)基於商品屬性的相似商品推薦算法——推薦與評分高的商品屬性相似的商品
2020.04.15 補充:協同過濾推薦算法.pptx
提取碼:4tds
算法調優及其他
一、屬性的選擇
根據 (三)基於商品屬性的相似商品推薦算法——批量處理商品屬性,得到屬性前綴及完整屬性字符串 ,我目前的屬性選擇是:
// 屬性前綴為:適用人群-佩戴場合-機芯類型-價格區間-表盤形狀-表盤直徑,后面的屬性排列順序可以隨意 $needs = [31=>'適用人群', 40=>'佩戴場合', 1=>'機芯類型', 39=>'價格區間', 9=>'表盤形狀', 11=>'表盤直徑', 13=>'表盤刻度', 17=>'表帶材質', 14=>'表盤顏色', 25=>'防水', 3=>'外殼材質', 38=>'表盤寬度', 3=>'表盤厚度', 12=>'鏡面材質', 16=>'表殼底蓋', 19=>'表帶顏色'];
再根據 (四)基於商品屬性的相似商品推薦算法——推薦與評分高的商品屬性相似的商品,可以看出屬性前綴的作用具體就是第一步篩選商品(前綴相同的商品,大概有40%-50%的相似);
所以,屬性前綴的選擇原則就很簡單了:第一步篩選把關。什么屬性相同時,能確定兩個商品是基本相似的?屬性前綴的選擇不宜太簡單,也不宜太嚴格;
假設,屬性前綴我只取"適用人群-佩戴場合",條件過於簡單,那么屬性前綴相同的商品就會很多很多,增加后期的計算量;
再假設,我把”品牌-表盤顏色-表帶顏色“放入屬性前綴中,條件過於嚴格,只能篩選同品牌同顏色的其他表款。那么能推薦的商品數量就會很少很少。不同品牌,但相似的其他商品就完全沒有機會。
總結:品牌、顏色之類的屬性,屬性於加分項。不要強制一定相同,放在屬性前綴后面,作為相似系數的加分項。
二、屬性加權
1)默認的相似系數計算公式為:
相似系數 = 相同屬性位個數/總屬性位個數;
注:這里所以的屬性權重相同,都是1;
2)如果你覺得,品牌相同是比較重要的,它的權重應該比較高(例如權重設為5);表盤顏色相同也是很重要的(例如權重設為3);其他屬性權重為1
那么,新的相似系數計算公式為:
相似系數 = 相同屬性位權重和/總屬性位權重和;
三、推薦文章、視頻
如果想在瀏覽某商品(或其他什么頁面)的時候,想推薦與商品相送的文章或視頻:
1)文章和視頻關聯了商品;
2)查詢當前商品(或瀏覽記錄)相似的商品,取得它們的 goodsCodes;
3)查詢關聯了 goodsCodes 的文章或視頻。
四、其他。。。
上一節:(四)基於商品屬性的相似商品推薦算法——推薦與評分高的商品屬性相似的商品
下一節:完