编辑: 旋风 | 2018-05-28 |
推荐系统:不需要用户提供明确的需求,而是通过分析用户的历史行为,从而主动向用户推荐能 够满足他们的兴趣和需求的信息. 1.入门须知: 架构流程图 模型训练图 ?其实整体从技术层面来说,最难的是:?相似度计算公式 公式如下: 夹脚余弦 目录结构 1.入门须知: 2.基于用户的 协同过滤(Us erCF) 1. 用户 分类 ( K-近邻, 做用 户分 类) 2. 内容 推荐 3.基于物品的 协同过滤(Ite mCF) 4.效果评估 1.召 回率 和准 确率 2.F值3.RO C和A UC 1.?ROC?曲线 2.?AUC?面积 优化点: 杰卡德相似系 数 夹脚余弦 ()a|a| ab: cos = a*b/[|a|*|b|] a(x1, y1) b(x2, y3) # |a| = [x1^2+y1^2] |b| = [x2^2+y2^2] # a*b = (x1,y1)(x2,y2) = x1x2+y1y2 # cos = a*b/[|a|*|b|] = (x1x2+y1y2)/[ [x1^2+y1^2] * [x2^2+y2^2] ] 2.基于用户的协同过滤(UserCF) 基于用户的协同过滤(UserCF):?用户少,物品多的场景 1)找到和目标用户兴趣相似的用户集合 2)找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户. 例如: ? 人1 人2 人3 人4 人5 人6 人7 物品A
1 ?
1 1
1 ? ? 物品B ?
1 ? ? ?
1 ? 物品C
1 ?
1 ? ? ?
1 物品D
1 ?
1 1 ? ? ? 物品E ?
1 1 ? ? ? ? 物品F
1 ?
1 1 ? ? ? 物品G ?
1 1
1 ? ? ? 物品H
1 ?
1 ? ? ? ? 物品I ?
1 1 ? ? ? ? 物品J
1 1
1 1 ? ? ? 物品K
1 ?
1 1 ? ? ? 1.?用户分类?(?K-近邻,?做用户分类) 我们通过用户标签,给用户进行分类:(例如:选中的物品来给用户做分类) 假设: 1/3/4/5?运动类型的孩子 1/3/7????逗逼类型的孩子 2/6???????死宅内心的孩子 2.?内容推荐 (当然用户分类可以再细致一点,下面可以加过滤条件) ?根据统计销量,把物品销量最好的进行推荐【热门推荐,或者过滤老用户、留下新用户;
因为新用户关注更多的是热门、有用户也许是个 性化】 3.基于物品的协同过滤(ItemCF) ? 基于物品的协同过滤(ItemCF):?用户多,物品少的场景 1.计算物品之间的相似度 2.根据物品的相似度和用户的历史行为给用户生产推荐列表 案例如下:(杰卡德相似系数) 选择A物品的用户,和B/C/D/E相似度,谁最高呢?? 我们来看看?AB:?A和B同时出现?=>?4次?A和B出现过?=>?7次?所以?AB?的相似度:?4/7?=?0.57? 我们来看看?AC:?A和C同时出现?=>?1次?A和C出现过?=>?5次?所以?AB?的相似度:?1/5?=?0.2 ? 4.效果评估 1.召回率和准确率 TPR=?TP/(TP?+?FN):?被预测为正的样本结果数/正样本实际数(即召回率) FPR=?FP/(FP?+?TN):?被预测为正的负样本结果数/负样本实际数(个人观点:即误判流失率) 例如:?100件商品推荐?(TP?+?FN)?||?50件讨厌商品?(FP?+?TN) 通过模型: 80件(TP?+?FP)?=?60(推荐?合理?TP)?+?20(推荐?不合理?FP) 70件(FN?+?TN)?=?40(不推荐?不合理?FN)?+?30(不推荐?合理?TN) 那么: precesion?正确率?=?60/80 precesion?正确率?=?60/80 recall?召回率?=?60/100 TPR?误判流失率?=?FP/(FP?+?TN)?=?20/50 通过模型: 120件(TP?+?FP)?=?80(推荐?合理?TP)?+?40(推荐?不合理?FP) 30件(FN?+?TN)?=?20(不推荐?不合理?FN)?+?10(不推荐?合理?TN) 那么: precesion?正确率?=?80/120 recall?召回率?=?80/100 TPR?误判流失率?=?FP/(FP?+?TN)?=?40/50 2.F值 一般情况,对同一个策略模型,用不同的阀值,可以统计出一组不同阀值下的精确率和召回率关系,我们称之为P-R曲线,如下图: ? 图中横坐标是召回率,用R(Recall)表示;