标签:交易 大量 联系 outline 图片 item comm 关联规则 www
一、概念
关联(Association)
关联就是把两个或两个以上在意义上有密切联系的项组合在一起。
关联规则(AR,Assocaition Rules)
用于从大量数据中挖掘出有价值的数据项之间的相关关系。(购物篮分析)
协同过滤(CF,Collaborative Filtering)
协同过滤常常被用于分辨某位特定顾客可能感兴趣的东西,这些结论来自于对其他相似顾客对哪些产品感兴趣的分析。(推荐系统)
二、关联规则
1、相关数据指标
两个不相交的非空集合X、Y,如果X -> Y,就说X -> Y是一条关联规则。
强度:支持度(Support):support({X -> Y}) = 集合X与集合Y中的项在一条记录中同时出现的次数 / 数据记录的个数
自信度(Confidence):confidence({X -> Y})集合X与集合Y中的项在一条记录中同时出现的次数 / 集合X出现的次数
效度:提升度(Lift):度量规则是否可用的指标,描述的是相对于不用规则,使用规则可以提高多少,提升度大于1,规则有效
lift({X -> Y}) = confidence({X -> Y}) / support({X -> Y})
2、计算步骤
大致过程如下:
3、 使用python实现关联算法(apriori算法)
!apriori 包不支持DataFrame的数据格式,需要将数据转化为array数组
#导入如下格式的数据
#变换数据格式,然后通过apriori方法进行处理
transform = data.groupby(by=‘交易ID‘).apply(lambda x: list(x.购买商品)).values result = list(apriori(transform))
输出result并观察,发现如下规律
#该数据格式包含各种项集和所对应的支持度、自信度、提升度 ‘‘‘RelationRecord( items=frozenset({‘可乐‘}),
support=0.4, ordered_statistics=[OrderedStatistic(
items_base=frozenset(), items_add=frozenset({‘可乐‘}),
confidence=0.4,
lift=1.0
)
]
)‘‘‘ #items = items_base + items_add
#遍历result,得到每个项集(X 与 Y ,并得到相对应的支持度、自信度和提升度
supports = [] confidences = [] lifts = [] bases = [] adds = [] for i in result: supports.append(i.support) confidences.append(i.ordered_statistics[0].confidence) lifts.append(i.ordered_statistics[0].lift) bases.append(list(i.ordered_statistics[0].items_base)) adds.append(list(i.ordered_statistics[0].items_add)) #将结果转化为容易处理的数据框 get_result = pd.DataFrame({ ‘base‘: bases, ‘add‘: adds, ‘support‘: supports, ‘confidence‘: confidences, ‘lift‘: lifts})
#得到如下的数据框,其中有不同项集及其对应结果,可通过关联规则得到符合的关联项
三、 协同过滤
1、 相关数据指标
协同过滤简单来说就是利用某兴趣相投、拥有共同经验的群体的喜好来推荐用户感兴趣的信息。
协同过滤主要收集每个用户对使用过的物品的评价(打分或星级等)。
通过用户对各种商品评分的高低,得到用户的喜好并,根据相似喜好的用户历史数据,从而推荐一些信息
优点:
缺点:
2、 计算步骤
3、 使用python实现协同过滤算法
#导入如下数据,含用户ID,商品ID,用户评分
#通过交叉表及变换形式得到用户评分矩阵
userrate = data.pivot_table(index=‘UserID‘, columns=‘ItemID‘, aggfunc=sum, fill_value=0) #将透视表转为数据框,优化列名 userrate.columns = userrate.columns.droplevel(0) del userrate.columns.name
#计算每个用户之间的距离和相似度
#计算每个用户之间的距离 dist = pd.DataFrame(euclidean_distances(userrate)) dist.index = userrate.index dist.columns = userrate.index #计算每个用户之间的相似度 sim = 1/(1+dist)
#设置参数,获取相似用户
#设置邻居个数为3 用户ID为1 k = 3 userId = 1 #获取3个相似用户并得到其相似度 simUserIds = sim.sort_values(userId, ascending=False)[userId].index[1:k+1] simUser = sim.ix[simUserIds, userId]
#根据相似用户得到商品的推荐排序
#根据相似用户,计算出每个物品的评分 score = pd.DataFrame(np.dot(simUser, userrate.ix[simUserIds])) #对结果排序,得到最终的结果 result = userrate.columns[score.sort_values(0, ascending=False).index.values]
标签:交易 大量 联系 outline 图片 item comm 关联规则 www
原文地址:https://www.cnblogs.com/rix-yb/p/9873983.html