解构电商、O2O:挖掘用户的“潜意识”-推荐系统( 四 )


关联规则是指通过收集每个用户一段的购买数据 , 可以得出买过商品A的所有用户以及这些用户同时买了哪些其他商品 , 然后将这些商品合并就得出了一个同时被购买商品列表的排序 。 基于商品列表进行消重、去除低关联商品等行为最终实现推荐商品列表输出 。 关联规则的核心策略就是诊断关联度进行处理 , 关联度有两个常用指标:支持度和置信度
支持度(Support):买过商品A , 同时买过商品B的人数/总的人数置信度(Confidence):买过商品A , 同时买过商品B的人数/买过商品A的人数计算公式关联度=support*confidence 。 下面我们举一个例子看下算法是如何运行的 。 Alice购买了商品item1 , 这个时候我们想计算item5是否应该推荐 。 根据公式我们来计算下支持度和置信度 。 支持度support=2/4 , 置信度confidence=2/2,需要说明的是计算时要刨除alice本人 。 这样我们可以得到support=0.5 , confidence=1 , 所以item5对于item1的关联度就是0.5*1=0.5 。
解构电商、O2O:挖掘用户的“潜意识”-推荐系统
文章图片
从上面的例子我们可以看到通过关联度可以推荐到购买时被人们最常用的组合是哪些 。 对于一些品类单一的商品结构是非常适用的 , 策略的逻辑本身并不复杂对于技术要求也不会特别高 。 但从计算量上来看 , 需要对所有的商品进行遍历计算才能获取所有的指标 。 对于离线的数据挖掘成本来说有些过于的大了 。
显而易见关联规则作为主要的算法是有些不符合的 , 那我们就需要寻找一个效率更高、成本更低的算法来作为主要的推荐算法 , 协同过滤就是目前主流的推荐算法 。 协同过滤主要原理是运用群体的协同智慧 , 志在通过一个群体的喜好判断来确定单体的特征和情况 。 这个群体既可以是用户群体 , 也可以是商品群体 。
协同过滤有几个基本的假设:
用户会对物品给出评价(隐性或显性)用户偏好一定时间内不会发生变化协同过滤的处理主要包括两个部分:评测和群体搜索 。 我们来看下协同过滤的处理流程 。 如下图:
获取所有的用户数据信息 , 用户信息包括用户自行填写的内容、评价、消费记录等信息 。 对于新用户的情况可以通过上文讲到的冷启动的方式获取数据 。 同时要对用户的数据进行一些基本的预处理 。
主要的预处理为降噪和归一化 。 降噪主要是剔除一些异常数据 , 比如用户的误操作、未支付订单等 。 而归一化的目的是为了保证所有的用户信息在进行推荐计算的时候不会受到极值的影响出现过大偏差 。
比如订单的数量就远大于收藏的数量 , 需要将这样的信息通过处理变为一个相对合理的区间范围 , 一般会将归一化的数据分布变为[0,1]区间内 。 常用的归一化方法也有很多 , 比如对数归一、指数归一等 。 归一化的概念和地图的比例尺有些相似 , 目的是在保证相对关系的情况下将所有样本缩放到一定范围内以便进行计算 。
数据处理完毕后推荐系统就会根据信息对用户或商品进行评估打分 。 这里面主要是基于已知的用户或者商品集合的信息判断与当前用户或商品的相似度 。 推荐算法基于不同的相似度得到每个集合的分值 , 根据计算的分值判断与当前用户或商品的临近群体 。 通过将临近群体和当前商品或用户进行比对完成推荐结果的输出 。
关于相似度的计算也是推荐算法的核心 , 相似度主要是指当前群体和已知群体之间的临近程度 。 关于临近算法也是随着技术逐步发展起来的 。 这里面我们以kNN算法为例看下临近算法的原理 。
kNN(全称k-NearestNeighborK临近算法)意思是k个最近的邻居 , 指是每个样本都可以用它最接近的k个邻居来代表 。 策略的思路是通过指定一个数量范围K , 判断最相似的K个商品内具备的共有特征 , 则认为查询的商品或用户的本身也具有这个特征 。 简单的说就是认为你跟你附近K个最近的群体具有相同特征 。