IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 笨比推荐系统笔记L1:关联规则 -> 正文阅读

[人工智能]笨比推荐系统笔记L1:关联规则

1.推荐系统中的常见的几种算法:

  • 基于内容的推荐:内容特征表示,特征学习,推荐列表
  • 基于协同过滤的推荐:群体智能,用户历史行为
  • 基于关联规则的推荐:Transactions,频繁项集,关联规则挖掘
  • ?基于效用的推荐 :效用函数的定义
  • 基于知识的推荐 知识图谱的创建
  • 组合推荐 实际工作中经常采用 每种推荐算法都有自己的使用场景,可以综合考虑

2.关联规则:

(1)含义:关联规则是形如X→Y的蕴涵式,反映一个事物与其他事物之间的相互依存性和关联性。通俗来讲,就是两个商品或者两种交易之间所具有的某种联系

(2)几个概念:

  • 支持度:是个百分比,指的是某个商品组合出现的次数与总次数之间的比例。支持度越高,代表这个组合出现的频率越大。
  • 置信度:是个条件概念 指的是当你购买了商品A,会有多大的概率购买商品B
  • 提升度:商品A的出现,对商品B的出现概率提升的程度,提升度(A→B)=置信度(A→B)/支持度(B)
  • 频繁项集:支持度大于等于最小支持度(Min Support)阈值的项集。

(3)Apriori算法:查找频繁项集(frequent itemset)的过程

????????算法的流程:

  1. Step1,K=1,计算K项集的支持度;
  2. Step2,筛选掉小于最小支持度的项集;
  3. Step3,如果项集为空,则对应K-1项集的结果为最终结果。 否则K=K+1,重复1-3步。

3.关联规则和协同过滤的比较:

关联规则是基于transaction,没有利用“用户偏好”,而是基于购物订单进行的频繁项集挖掘;而协同过滤基于用户偏好(评分),协同过滤计算的是相似度。

4.参数确定:

最小支持度,最小置信度是实验出来的 ,不同的数据集,最小值支持度差别较大。可能是0.01到0.5之间 可以从高到低输出前20个项集的支持度作为参考。

最小置信度:可能是0.5到1之间 提升度:表示使用关联规则可以提升的倍数,是置信度与期望置信度的比值 提升度至少要大于1。

5.关联分析案例:

工具包1:
from efficient_apriori import apriori:速度较快,但是返回的结果数据较少
使用:
itemsets,rules = apriori(transactions,min_support=0.5,min_confidence=0.5)
参数:

apriori(

transactions:交易数据,即扔进去训练的数据,格式为:每行为交易订单记录,每列为每条订单具体购买的商品。

min_support:最小支持度,

min_confidence:最小置信度

return:返回参数itemsets:频繁项集;rules:在设置的最小支持度和置信度下筛选出来的关联规则

)
工具包2:速度较慢,返回结果多
from mlxtend.frequent_patterns import association_rules
from mlxtend.frequent_patterns import apriori
使用:
items = apriori(movies_hot_encoded,use_colnames=True,min_support=0.05)
rules = association_rules(items,metric='lift',min_threshold=2)
参数:
apriori(
movies_hot_encoded:交易数据集,先将数据集进行one-hot编码,形成的数据格式为行为每条订单,列为所有订单中出现的商品,每个订单购买了什么商品,则编码为1,否则为0。
use_colnames=True:设置为True时,返回列名,而不是列索引值
min_support:最小支持度
return:返回一个频繁项集
)
association_rules(
items:上面得到的频繁项集
metric='lift':设置的规则,这里设置为提升度
min_threshold:最小提升度的值
return:返回一个关联规则
)

test1:

# test1:利用Apriori进行简单关联分析
from efficient_apriori import apriori
transations =  [('牛奶','面包','尿布'),
                ('可乐','面包', '尿布', '啤酒'),
                ('牛奶','尿布', '啤酒', '鸡蛋'),
                ('面包', '牛奶', '尿布', '啤酒'),
                ('面包', '牛奶', '尿布', '可乐')]
#挖掘频繁项集和频繁规则
itemsets,rules = apriori(transactions,min_support=0.5,min_confidence=1)
for i in itemsets:
    print(itemsets[i])
print("min_support=0.5,min_confidence=1,rules长度:",len(rules))
print("rules",rules)
print("*********************************")
itemsets,rules = apriori(transactions,min_support=0.5,min_confidence=0.8)
print("itemsets:")
for i in itemsets:
    print(itemsets[i])
print("min_support=0.5,min_confidence=0.8,rules长度:",len(rules))
print("rules",rules)

"""
output:
{('牛奶',): 4, ('面包',): 4, ('尿布',): 5, ('啤酒',): 3}
{('啤酒', '尿布'): 3, ('尿布', '牛奶'): 4, ('尿布', '面包'): 4, ('牛奶', '面包'): 3}
{('尿布', '牛奶', '面包'): 3}
min_support=0.5,min_confidence=1,rules长度: 4
rules [{啤酒} -> {尿布}, {牛奶} -> {尿布}, {面包} -> {尿布}, {牛奶, 面包} -> {尿布}]
*********************************
itemsets:
{('牛奶',): 4, ('面包',): 4, ('尿布',): 5, ('啤酒',): 3}
{('啤酒', '尿布'): 3, ('尿布', '牛奶'): 4, ('尿布', '面包'): 4, ('牛奶', '面包'): 3}
{('尿布', '牛奶', '面包'): 3}
min_support=0.5,min_confidence=0.8,rules长度: 6
rules [{啤酒} -> {尿布}, {牛奶} -> {尿布}, {尿布} -> {牛奶}, {面包} -> {尿布}, {尿布} -> {面包}, {牛奶, 面包} -> {尿布}]
"""

test2:

#电影中得到关联规则:MovieLens 主要使用 Collaborative Filtering 和 Association Rules 相结合的技术,向用户推荐他们感兴趣的电影。
import pandas as pd
from mlxtend.frequent_patterns import association_rules
from mlxtend.frequent_patterns import apriori
#数据加载
movies = pd.read_csv(r'.\MovieLens/movies.csv')
movies.head(10)
#进行独热值编码
movies_hot_encoded = movies.drop('genres',1).join(movies.genres.str.get_dummies(sep='|'))
pd.options.display.max_columns = 100
#将其中的movies和title设置为下标
movies_hot_encoded.set_index(['movieId','title'],inplace=True)
#进行频繁项集的挖掘,并进行支持度的排序
itemsets = apriori(movies_hot_encoded,use_colnames=True,min_support=0.02)
itemsets = itemsets.sort_values(by='support',ascending=False)
#将频繁数据集扔进并联规则中,设置指标为提升度,并设置最小提升度为2
rules = association_rules(itemsets,metric='lift',min_threshold=2)
rules = rules.sort_values(by='lift',ascending=True)
print('-'*20, '频繁项集', '-'*20)
print(itemsets)
print('-'*20, '关联规则', '-'*20)
rules

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-25 10:35:14  更:2022-01-25 10:37:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 2:03:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码