在以前的《推薦系統 - 商品推薦(新人心得)》文章中,咱們已經知道了推薦系統的重要性,以及簡單的實現推薦系統。如今咱們還須要注意一個問題:當前的推薦算法的效益如何呢?若是咱們推薦的東西,客戶基本不感興趣,那咱們這推薦系統,至關因而無用的。算法
/* 推薦記錄表 */ CREATE TABLE `goods_recommend` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `user_id` int(11) NOT NULL COMMENT '推送給的用戶ID', `score` int(11) NOT NULL COMMENT '這次推薦打分', `create_time` int(11) NOT NULL COMMENT '推薦時間', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推薦記錄表'; /* 推薦商品點擊記錄表 */ CREATE TABLE `goods_click` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `user_id` int(11) NOT NULL COMMENT '用戶ID', `recommend_id` int(11) NOT NULL COMMENT '推薦ID', `goods_id` int(11) NOT NULL COMMENT '商品ID', `num` int(11) NOT NULL COMMENT '點擊次數(防止點擊同一件商品屢次,生成多條記錄)', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推薦商品點擊記錄表'; /* 推薦商品購買記錄表 */ CREATE TABLE `goods_buy` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `user_id` int(11) NOT NULL COMMENT '用戶ID', `recommend_id` int(11) NOT NULL COMMENT '推薦ID', `goods_id` int(11) NOT NULL COMMENT '商品ID', `num` int(11) NOT NULL COMMENT '購買數量', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推薦商品購買記錄表'; /* 推薦商品瀏覽時間表 */ CREATE TABLE `goods_read` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `user_id` int(11) NOT NULL COMMENT '用戶ID', `recommend_id` int(11) NOT NULL COMMENT '推薦ID', `goods_id` int(11) NOT NULL COMMENT '商品ID', `second` int(11) NOT NULL COMMENT '停留多少秒', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推薦商品瀏覽時間表';
/* 推薦商品的打分記錄表 */ CREATE TABLE `goods_score` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `user_id` int(11) NOT NULL COMMENT '用戶ID', `recommend_id` int(11) NOT NULL COMMENT '推薦ID', `goods_id` int(11) NOT NULL COMMENT '商品ID', `score` int(11) NOT NULL COMMENT '分數', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推薦商品的打分記錄表'; /* 推薦商品是否喜歡記錄表 */ CREATE TABLE `goods_like` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `user_id` int(11) NOT NULL COMMENT '用戶ID', `recommend_id` int(11) NOT NULL COMMENT '推薦ID', `is_like` int(11) NOT NULL COMMENT '是否切換(若是切換,表明用戶對於此次的推薦不怎麼滿意)', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推薦商品是否喜歡記錄表';
上面咱們就已經獲取到了咱們須要的數據(具體須要什麼數據,根據自身業務來決定),如今咱們須要對這些數據進行統計了。學習
問:爲何須要用戶ID字段?spa
答:由於這樣能夠記錄每一個用戶對推薦系統的行爲,能夠將這些統計精確到每一個用戶中,這樣能夠針對不滿意的用戶進行系統的調整用戶推薦數據。code
問:爲何須要用戶點擊推薦商品記錄?blog
答:由於用戶點擊了,說明這個推薦也算是成功的,不購買的緣由,多是暫時不須要,或者這個商品的評論問題。排序
問:爲何須要記錄用戶瀏覽推薦商品的時間?ci
答:用戶瀏覽的時間長了,證實是對於這個比較感興趣的,也能夠作爲整個推薦系統效率的部分評分標準。unicode
問:爲何須要打分記錄?get
答:由於這能夠更直觀的反饋用戶對於此次推送的商品,哪些是滿意的,哪些是不滿意的,能夠更精確的推送心儀的商品給客戶。class
本文主要講了如何計算當前推薦算法的效益的一些方法: