Fork me on GitHub

关联规则| 支持度 置信度| Apriori

 

关联规则

关联规则

关联分析是大数据计算的重要场景之一,通过数据挖掘,商家发现尿不湿和啤酒经常会同时被购买,所以商家就把啤酒和尿不湿摆放在一起促进销售。

在传统商超确实没有见过把啤酒和纸尿裤放在一起的情况,可能是因为传统商超的物理货架分区策略限制它没有办法这么做,而啤酒和尿不湿存在关联关系则确实是大数据中存在的规律,在电子商务网

站就可以轻易进行关联推荐。

通过商品订单,可以发现频繁出现在同一个购物篮里商品间的关联关系,这种大数据关联分析也被称作是“购物篮分析”,频繁出现的商品组合也被称作是“频繁模式”。

在深入关联分析前,你需要先了解两个基本概念,一个是支持度,一个是置信度。

支持度是指一组频繁模式的出现概率,比如(啤酒,尿不湿)是一组频繁模式,它的支持度是 4%,也就是说,在所有订单中,同时出现啤酒和尿不湿这两件商品的概率是 4%。

置信度用于衡量频繁模式内部的关联关系,如果出现尿不湿的订单全部都包含啤酒,那么就可以说购买尿不湿后购买啤酒的置信度是 100%;如果出现啤酒的订单中有 20% 包含尿不湿,那么就可以说购

买啤酒后购买尿不湿的置信度是 20%。

大型超市的商品种类数量数以万计,所有商品的组合更是一个天文数字;而电子商务网站的商品种类更多,历史订单数据同样也非常庞大,虽然我们有大数据技术,但是资源依然是有限的。

 

美国明尼苏达州一家Target被客户投诉,一位中年男子指 控Target将婴儿产品优惠券寄给他的女儿(高中生)。但 没多久他却来电道歉,因为女儿经他逼问后坦承自己真 的怀孕了。

关联规则:Association Rules, 或者是 Basket Analysis 解释了:如果一个消费者购买 了产品A,那么他有多大几率会 购买产品B?

 

啤酒和尿布:

沃尔玛在分析销售记录时,发现啤酒和尿布经常一起被购买,于是他们调整了货架,把两者放在一起,结果真的提升了啤酒的销量。

原因解释:爸爸在给宝宝买尿布的时候,会顺便给自己买点啤酒?

沃尔玛是最早通过大数据分析而受益的传统零售企业,对消费者购物行为进行跟踪和分析。

 

支持度、置信度和提升度

支持度:是个百分比,指的是某个商品组合出现的次数与总次数之间的比例。支持度越高,代表这个组合出现的频率越大。

“牛奶”的支持度=4/5=0.8

“牛奶+面包”的支持度=3/5=0.6。

 

置信度:是个条件概念,指的是当你购买了商品A,会有多大的概率购买商品B

  • 置信度(牛奶→啤酒)=2/4=0.5
  • 置信度(啤酒→牛奶)=2/3=0.67 

提升度:商品A的出现,对商品B的出现概率提升的程度

  如果我们单纯看置信度(可乐→尿布)=1,也就是说可乐出现的时候,用户都会购买尿布,那么当用户购买可乐的时候,就需要推荐尿布么?


提升度:商品A的出现,对商品B的出现概率提升的程度

  提升度(A→B)=置信度(A→B)/支持度(B)

提升度的三种可能:

  • 提升度(A→B)>1:代表有提升;
  • 提升度(A→B)=1:代表有没有提升,也没有下降;
  • 提升度(A→B)<1:代表有下降。

 

Apriori算法

那我们应该从哪里考虑着手,可以使用最少的计算资源寻找到最小支持度的频繁模式?寻找满足最小支持度的频繁模式经典算法是 Apriori 算法,Apriori 算法的步骤是:

第 1 步:设置最小支持度阈值。

第 2 步:寻找满足最小支持度的单件商品,也就是单件商品出现在所有订单中的概率不低于最小支持度。

第 3 步:从第 2 步找到的所有满足最小支持度的单件商品中,进行两两组合,寻找满足最小支持度的两件商品组合,也就是两件商品出现在同一个订单中概率不低于最小支持度。

第 4 步:从第 3 步找到的所有满足最小支持度的两件商品,以及第 2 步找到的满足最小支持度的单件商品进行组合,寻找满足最小支持度的三件商品组合。

第 5 步:以此类推,找到所有满足最小支持度的商品组合。

Apriori 算法极大地降低了需要计算的商品组合数目,这个算法的原理是,如果一个商品组合不满足最小支持度,那么所有包含这个商品组合的其他商品组合也不满足最小支持度。所以从最小商品组合,

也就是一件商品开始计算最小支持度,逐渐迭代,进而筛选出所有满足最小支持度的频繁模式。

通过关联分析,可以发现看似不相关商品的关联关系,并利用这些关系进行商品营销,比如上面提到的啤酒和尿不湿的例子,一方面可以为用户提供购买便利;另一方面也能提高企业营收。

网页的链接关系如何用数据表示呢?PageRank 算法用 MapReduce 或者 Spark 编程如何实现呢? 

 

我们把上面案例中的商品用ID来代表,牛奶、面包、尿布、可乐、啤酒、鸡蛋的商品ID分别设置为1-6

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

频繁项集:支持度大于等于最小支持度(Min Support)阈值的项集。

非频繁项集:支持度小于最小支持度的项集

先计算K=1项的支持度;(4和6在K=1时的支持度 < 0.5,在K=2时就需要去掉)

假设最小支持度=0.5,那么Item4和 6 不符合最小支持度的,不属于频繁项集;

在这个基础上,我们将商品两两组合,得到K=2项的支持度;

筛选掉小于最小值支持度的商品组合; 

将商品进行 K=3项的商品组合,可以得到如左下图所示;

筛选掉小于最小值支持度的商品组合,得到K=3项的频繁项集{1, 2, 3},也就是{牛奶、面包、尿布} 的组合;

 

Apriori算法的流程:

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

 

使用Apriori算法做关联分析

  • 使用工具包:
    • from efficient_apriori import apriori
  • 或者:
    • from mlxtend.frequent_patterns import apriori
    • from mlxtend.frequent_patterns import association_rules
复制代码
  • from efficient_apriori import apriori  #这个包的bug是没有min_lift , 只有min_confidence
  • # 设置数据集  
  • transactions = [('牛奶','面包','尿布'),
  • ('可乐','面包', '尿布', '啤酒'),
  • ('牛奶','尿布', '啤酒', '鸡蛋'),
  • ('面包', '牛奶', '尿布', '啤酒'),
  • ('面包', '牛奶', '尿布', '可乐')]
  • # 挖掘频繁项集和频繁规则  最小置信度50%, 基于关联规则最小置信度为1 
  • itemsets, rules = apriori(transactions, min_support=0.5, min_confidence=1)
  • print("频繁项集:", itemsets)
  • print("关联规则:", rules)
复制代码

 

频繁项集: {1: {('啤酒',): 3, ('尿布',): 5, ('牛奶',): 4, ('面包',): 4}, 2: {('啤酒', '尿布'): 3, ('尿布', '牛奶'): 4, ('尿布', '面包'): 4, ('牛奶', '面包'): 3}, 3: {('尿布', '牛奶', '面包'): 3}}
关联规则: [{啤酒} -> {尿布}, {牛奶} -> {尿布}, {面包} -> {尿布}, {牛奶, 面包} -> {尿布}]

 

关联分析使用的场景

万物皆Transaction:

  • 超市购物小票(TransactionID => Item)
  • 每部电影的分类(MovieID => 分类)
  • 每部电影的演员(MovieID => 演员)


超市购物小票的关联关系

每笔订单的商品(TransactionID => Item)

BreadBasket数据集(21293笔订单):

BreadBasket_DMS.csv

字段:Date(日期),Time(时间),Transaction(交易ID)Item(商品名称)

交易ID的范围是[1,9684],存在交易ID为空的情况,同一笔交易中存在商品重复的情况。以外,有些交易没有购买商品(对应的Item为NONE)

复制代码
# 数据加载
data = pd.read_csv('./BreadBasket_DMS.csv')
# 统一小写
data['Item'] = data['Item'].str.lower()
# 去掉none项
data = data.drop(data[data.Item == 'none'].index)

# 得到一维数组orders_series,并且将Transaction作为index, value为Item取值
orders_series = data.set_index('Transaction')['Item']
# 将数据集进行格式转换
transactions = []
temp_index = 0
for i, v in orders_series.items():
    if i != temp_index:
        temp_set = set()
        temp_index = i
        temp_set.add(v)
        transactions.append(temp_set)
    else:
        temp_set.add(v)


itemsets, rules = apriori(transactions, min_support=0.02,  min_confidence=0.5)
通过调整min_support,min_confidence可以得到不同的频繁项集和关联规则
min_support=0.02,min_confidence=0.5时
一共有33个频繁项集,8种关联规则


使用efficient_apriori工具包
效率较高,但返回参数较少




from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
hot_encoded_df=data.groupby(['Transaction','Item'])['Item'].count().unstack().reset_index().fillna(0).set_index('Transaction')
hot_encoded_df = hot_encoded_df.applymap(encode_units)
frequent_itemsets = apriori(hot_encoded_df, min_support=0.02, use_colnames=True)
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=0.5)


使用mlxtend.frequent_patterns工具包
效率较低,但返回参数较多
复制代码

 


电影分类中的关联关系

每部电影的分类(MovieID => 分类)

数据集:MovieLens

下载地址:https://www.kaggle.com/jneupane12/movielens/download

主要使用的文件:movies.csv

格式:movieId title genres

记录了电影ID,标题和分类

我们可以分析下电影分类之间的频繁项集和关联规则

MovieLens 主要使用 Collaborative Filtering 和 Association Rules 相结合的技术,向用户推荐他们感兴趣的电影。

 

# 将genres进行one-hot编码(离散特征有多少取值,就用多少维来表示这个特征)
movies_hot_encoded = movies.drop('genres',1).join(movies.genres.str.get_dummies())
# 将movieId, title设置为index
movies_hot_encoded.set_index(['movieId','title'],inplace=True)
# 挖掘频繁项集,最小支持度为0.02
itemsets = apriori(movies_hot_encoded,use_colnames=True, min_support=0.02)
# 根据频繁项集计算关联规则,设置最小提升度为2
rules =  association_rules(itemsets, metric='lift', min_threshold=2)

 电影演员中的关联关系

每部电影的演员列表(MovieID => 演员)

数据集:MovieActors

来源:movie_actors.csv

爬虫抓取 movie_actors_download.py

格式:title actors

记录了电影标题和演员列表

我们可以分析下电影演员之间的频繁项集和关联规则

复制代码
from selenium import webdriver
# 设置想要下载的导演 数据集
director = u'徐峥'
base_url = 'https://movie.douban.com/subject_search?search_text='+director+'&cat=1002&start='
# 下载指定页面的数据
def download(request_url):
# 将字典类型转化为DataFrame
movie_actors = pd.DataFrame(movie_actors, index=[0])
# DataFrame 行列转换
movie_actors = pd.DataFrame(movie_actors.values.T, index=movie_actors.columns, columns=movie_actors.index)
movie_actors.index.name = 'title'
movie_actors.set_axis(['actors'], axis='columns', inplace=True)
movie_actors.to_csv('./movie_actors.csv')

from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
# 数据加载
movies = pd.read_csv('./movie_actors.csv')
# 将genres进行one-hot编码(离散特征有多少取值,就用多少维来表示这个特征)
movies_hot_encoded = movies.drop('actors',1).join(movies.actors.str.get_dummies('/'))
# 将movieId, title设置为index
movies_hot_encoded.set_index(['title'],inplace=True)
# 挖掘频繁项集,最小支持度为0.05
itemsets = apriori(movies_hot_encoded,use_colnames=True, min_support=0.05)
# 按照支持度从大到小进行时候粗
itemsets = itemsets.sort_values(by="support" , ascending=False) 


pd.options.display.max_columns=100
# 根据频繁项集计算关联规则,设置最小提升度为2
rules =  association_rules(itemsets, metric='lift', min_threshold=2)
# 按照提升度从大到小进行排序
rules = rules.sort_values(by="lift" , ascending=False) 
#rules.to_csv('./rules.csv')
复制代码

Action:MarketBasket购物篮分析

数据集:MarketBasket

下载地址:https://www.kaggle.com/dragonheir/basket-optimisation

该数据集为rawdata,没有记录TransactionID和列名

ToDo:统计交易中的频繁项集和关联规则

 

关联规则与协同过滤的区别

  • 关联规则是基于transaction,而协同过滤基于用户偏好(评分)
  • 商品组合使用的是购物篮分析,也就是Apriori算法,协同过滤计算的是相似度
  • 关联规则没有利用“用户偏好”,而是基于购物订单进行的频繁项集挖掘

推荐使用场景:

  • 当下的需求:
    • 推荐的基础是且只是当前一次的购买/点击
  • 长期偏好:
    • 基于用户历史的行为进行分析,建立一定时间内的偏好排序
    • 两种推荐算法的思考维度不同,很多时候,我们需要把多种推荐方法的结果综合起来做一个混合的推荐


关联规则的视角

不需要考虑用户一定时期内的偏好,而是基于Transaction

只要能将数据转换成Transaction,就可以做购物篮分析:

  • Step1、把数据整理成id=>item形式,转换成transaction
  • Step2、设定关联规则的参数(support、confident)挖掘关联规则
  • Step3、按某个指标(lift、support等)对以关联规则排序


关联规则中的最小支持度、最小置信度该如何确定

  • 最小支持度,最小置信度是实验出来的
  • 最小支持度:
    • 不同的数据集,最小值支持度差别较大。可能是0.01到0.5之间
    • 可以从高到低输出前20个项集的支持度作为参考
    • 最小置信度:可能是0.5到1之间
    • 提升度:表示使用关联规则可以提升的倍数,是置信度与期望置信度的比值
    • 提升度至少要大于1

 

基于关联规则的推荐算法:

  • Apriori算法
  • FPGrowth算法
  • PrefixSpan算法


FPGrowth算法

Apriori在计算的过程中存在的不足:

  • 可能产生大量的候选集。因为采用排列组合的方式,把可能的项集都组合出来了
  • 每次计算都需要重新扫描数据集,计算每个项集的支持度
  • 浪费了计算空间和时间

 

在Apriori算法基础上提出了FP-Growth算法:

  • 创建了一棵FP树来存储频繁项集。在创建前对不满足最小支持度的项进行删除,减少了存储空间。
  • 整个生成过程只遍历数据集2次,大大减少了计算量
  • 理解:Apriori存在的不足,有更快的存储和搜索方式进行频繁项集的挖掘


创建项头表(item header table)

作用是为FP构建及频繁项集挖掘提供索引。

Step1、流程是先扫描一遍数据集,对于满足最小支持度的单个项(K=1项集)按照支持度从高到低进行排序,这个过程中删除了不满足最小支持度的项。

项头表包括了项目、支持度,以及该项在FP树中的链表。初始的时候链表为空。

 

Step2、对于每一条购买记录,按照项头表的顺序进行排序,并进行过滤。

构造FP树,根节点记为NULL节点

Step3、整个流程是需要再次扫描数据集,把Step2得到的记录逐条插入到FP树中。节点如果存在就将计数count+1,如果不存在就进行创建。同时在创建的过程中,需要更新项头表的链表。

 

Step4、通过FP树挖掘频繁项集

现在已经得到了一个存储频繁项集的FP树,以及一个项头表。可以通过项头表来挖掘出每个频繁项集

挖掘从项头表最后一项“啤酒”开始。

从FP树种找到所有“啤酒”节点,向上遍历祖先节点,得到3条路径。对于每条路径上的节点,其count都设置为“啤酒”的count

具体的操作会用到一个概念,叫“条件模式基”

因为每项最后一个都是“啤酒”,因此我们把“啤酒”去掉,得到条件模式基,此时后缀模式是(啤酒)

 

继续找项头表倒数第2项面包,求得“面包”的条件模式基

根据条件模式基,可以求得面包的频繁项集:{面包},{尿布,面包},{牛奶,面包},{尿布,牛奶,面包}

 

继续找项头表倒数第3项面包,求得“牛奶”的条件模式基

根据条件模式基,可以求得面包的频繁项集:{牛奶},{尿布,牛奶}

 

继续找项头表倒数第4项面包,求得“尿布”的条件模式基

根据条件模式基,可以求得尿布的频繁项集:{尿布}

所以全部的频繁项集为:

{啤酒},{尿布,啤酒}

{面包},{尿布,面包},{牛奶,面包},{尿布,牛奶,面包}

{牛奶},{尿布,牛奶}

{尿布}


工具包

通过Python官方的第三方软件库

https://pypi.org/

import fptools as fp

Spark.mllib 提供并行FP-growth算法


summary

支持度、置信度、提升度

最小支持度,最小置信度是实验出来的

基于关联规则的推荐算法:

Apriori算法

FPGrowth算法

PrefixSpan算法

 

万物皆Transaction:

超市购物小票(TransactionID => Item)

每部电影的分类(MovieID => 分类)

每部电影的演员(MovieID => 演员)

关联规则与协同过滤:

关联规则是基于transaction,而协同过滤基于用户偏好(评分)

商品组合使用的是购物篮分析,也就是Apriori算法,协同过滤计算的是相似度

关联规则没有利用“用户偏好”,而是基于购物订单进行的频繁项集挖掘

 

• BreadBasket:面包店购物清单的关联分析

• MovieLens:电影分类中的关联分析

• MovieActors:电影演员中的关联分析

• 关联规则与协同过滤的区别

• 关联规则中的最小支持度、最小置信度该如何确定 相关性分析

 

数据相关性分析

Thinking:如果各自变量x跟因变量y之间没有相关性,还需要做回归分析么?

如果有一定的相关性了,然后再通过回归分析进一步验证他们之间的准确关系

通过相关分析求得相关系数没有回归分析的准确

相关分析是一种描述性的分析,而回归分析得到的结果更为重要和准确

 

使用DataFrame显示各元素间的相关性:

DataFrame.corr(method='pearson', min_periods=1)

method参数 

pearson,衡量两个数据集合是否在一条线上面,针对线性数据的相关系数计算,对于非线性数据有误差

kendall,反映分类变量相关性的指标,通常用于评分数据一致性水平研究,比如评委打分,数据排名等

spearman:非线性的,非正太分布的数据的相关系数

pearson系数,使用最广泛的相关性统计量,用于测量两组连续变量之间的线性关联程度

 

复制代码
# 构造一元二次方程,y=2x*x+1 非线性关系
def compute(x):
    return 2*x*x+1
x=[i for i in range(100)]
y=[compute(i) for i in x]
data = pd.DataFrame({'x':x,'y':y})
# 查看pearson系数
print(data.corr())
print(data.corr(method='spearman'))
print(data.corr(method='kendall'))
复制代码

回归分析

回归分析(Regression) :

确定两种或两种以上变量之间相互依赖的定量关系的统计方法,使用非常广泛

按照涉及的变量的多少,分为一元分析和多元回归分析

按照因变量的多少,分为简单回归分析和多重回归分析

按照自变量和因变量之间的关系类型,分为线性回归分析和非线性回归分析

线性回归模型

     

损失函数

损失函数可以衡量模型的好坏

MSE,均方误差,是在回归问题中比较常用的损失函数

         

 

回归分析工具:

from sklearn.linear_model import LinearRegression

from sklearn.preprocessing import PolynomialFeatures

在进行多项式回归之前,需要对数据进行变换,因为模型里包含 x²等变量,所以在创建数据之后要将x转换为 x²

 

clf = linear_model.LinearRegression()

fit(X,y),训练,拟合参数

predict(X) ,预测

coef_ ,存放回归系数

intercept_,存放截距

score(X,y), 得到评分结果,R方(确定系数)

 

 

R方(r-squared):

R方也叫确定系数(coefficient of determination),表示模型对现实数据拟合的程度,评估预测效果

R方计算,等于1减去y对回归方程的方差(未解释离差)与y的总方差的比值

一元线性回归中R方等于皮尔逊积矩相关系

比如,R平方=0.8,表示回归关系可以解释因变量80%的变异。换句话说,如果我们能控制自变量x不变,那么因变量y的变异程度会减少80%

在sklearn计算中,相关系数有正负

 

Sklearn中的回归分析

TO DO:随机生成(x, y),并进行回归分析

模拟生成 y = 2*x + 10

使用LinearRegression进行拟合

 

 

TO DO:一元线性回归

x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))

y = np.array([5, 20, 14, 32, 22, 38])

多元线性回归

x = [[0, 1], [5, 1], [15, 2], [25, 5], [35, 11], [45, 15], [55, 34], [60, 35]]

y = [4, 5, 20, 14, 32, 22, 38, 43]

多项式回归

x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))

y = np.array([15, 11, 2, 8, 25, 32])

 

糖尿病回归分析

数据集Diabetes,包含442个患者的10个生理特征(年龄,性别、体重、血压)和一年以后疾病级数指标

10项特征:

年龄,性别,体质指数,血压

s1,s2,s3,s4,s4,s6 (六种血清的化验数据)

 

糖尿病回归分析步骤:

Step1,数据加载

Step2,训练集、测试集切分

Step3,使用回归分析模型进行学习

输出回归分析模型的系数coef

Step4,使用测试集进行评价

 

数据集切分 train_test_split

from sklearn.model_selection import train_test_split

train_x, test_x, train_y, test_y =train_test_split(train_data,train_target,test_size=0.3, random_state=33)

train_data:样本特征集

train_target:样本标签

test_size:如果是浮点数[0,1]表示样本占比,如果是整数表示样本的数量

random_state:随机数的种子

 

复制代码
from sklearn import datasets
from sklearn import linear_model
from sklearn.model_selection import train_test_split  
# 加载数据
diabetes = datasets.load_diabetes()
data = diabetes.data
# 训练集 70%,测试集30%
train_x, test_x, train_y, test_y = train_test_split(diabetes.data, diabetes.target, test_size=0.3, random_state=14)
print(len(train_x))


#回归训练及预测
clf = linear_model.LinearRegression()
clf.fit(train_x, train_y)
print(clf.coef_)
pred_y = clf.predict(test_x)
print(mean_squared_error(test_y, pred_y))
复制代码

股票回归分析

DataReader

Pandas提供了专门从财经网站获取金融数据的API接口

复制代码
from pandas_datareader.data import DataReader
data_tlz = DataReader("300005.SZ", "yahoo",start,end)
print(data_tlz.head())

DataReader
下载速度慢,为了方便后续使用可将数据保存到本地

# 读取上证综指 及 探路者数据
def load_data():
    if os.path.exists('000001.csv'):
        data_ss = pd.read_csv('000001.csv')
        data_tlz = pd.read_csv('300005.csv')
    else:
        # 上证综指
        data_ss = DataReader("000001.SS", "yahoo",start,end)
        # 300005 探路者股票 深证
        data_tlz = DataReader("300005.SZ", "yahoo",start,end)
        data_ss.to_csv('000001.csv')
        data_tlz.to_csv('300005.csv')
    return data_ss, data_tlz


DataFrame.diff()函数
用来将数据进行某种移动之后与原数据进行比较得出的差异数据
DataFrame.shift()函数
可以把数据移动指定的位数
periods=-1 往上移动或往左移动
periods=1 往下移动或往右移动




# 回归分析
import statsmodels.api as sm
# 加入截距项
daily_return["intercept"]=1.0
model = sm.OLS(daily_return["探路者"],daily_return[["上证综指","intercept"]])
results = model.fit()
print(results.summary())

OLS:Ordinary Least Squares 最小二乘法进行回归分析


R-squared,可决策系数,0.265 可解释性一般
上证综指 coef=1.1155,说明“探路者”的日收益率波动比上证综指大,即上证综指日收益率波动1%,个股日收益率波动1.1155%
复制代码

使用Apriori完成Basket Analysis

万物皆Transaction的三种使用场景:

BreadBasket数据集

MovieLens数据集

MovieActors数据集(需要抓取数据)

相关性分析场景:

相关性分析 pearson

掌握sklearn中回归分析的使用

通过糖尿病回归分析,来理解数据分析的流程

ToDo Action:关联规则&相关性分析

Thinking1:关联规则中的支持度、置信度和提升度代表的什么,如何计算

Thinking2:关联规则与协同过滤的区别

Thinking3:为什么我们需要多种推荐算法

Thinking4:关联规则中的最小支持度、最小置信度该如何确定

Thinking5:都有哪些常见的回归分析方法,评价指标是什么

 

Action1:购物篮分析

数据集:MarketBasket

下载地址:https://www.kaggle.com/dragonheir/basket-optimisation

该数据集为rawdata,没有记录TransactionID和列名

ToDo:统计交易中的频繁项集和关联规则

 

 

 

 

 

 

 

 

 

 

 

 

 
 
 
 
 
  • 添加到短语集
     
    • 没有此单词集:中文(简体) → ...
       
    • 创建新的单词集...
  • 拷贝
 
 
 
  • 添加到短语集
     
    • 没有此单词集:中文(简体) → ...
       
    • 创建新的单词集...
  • 拷贝
 
posted @   kris12  阅读(1704)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
levels of contents
点击右上角即可分享
微信分享提示