【数据挖掘】国科大刘莹老师数据挖掘课程作业 —— 第三次作业

Written Part

1. 基于表 1 1 1 回答下列问题(min_sup=40%, min_conf=75%):

Transaction IDItems Bought
0001{a, d, e}
0024{a, b, c, e}
0012{a, b, d, e}
0031{a, c, d, e}
0015{b, c, e}
0022{b, d, e}
0029{c, d}
0040{a, b, c}
0033{a, d, e}
0038{a, b, e}

表 1    数据集

  • 使用 Apriori 算法确定全部的频繁项集。

    Apriori 算法执行过程如图 1 1 1 所示。

    图 1    Apriori

    可以看出,频繁项集有 {a},{b},{c},{d},{e},{ab},{ad},{ae},{be},{de},{ade}。

  • 计算关联规则的置信度,并判断这些置信度是否具有对称性。
    C o n f i d e n c e ( a ⇒ d e ) = 4 7 C o n f i d e n c e ( d ⇒ a e ) = 4 6 C o n f i d e n c e ( e ⇒ a d ) = 4 8 C o n f i d e n c e ( a d ⇒ e ) = 4 4 C o n f i d e n c e ( a e ⇒ d ) = 4 6 C o n f i d e n c e ( d e ⇒ a ) = 4 5 {\rm Confidence}(a\Rightarrow de) = \frac{4}{7} \\ {\rm Confidence}(d\Rightarrow ae) = \frac{4}{6} \\ {\rm Confidence}(e\Rightarrow ad) = \frac{4}{8} \\ {\rm Confidence}(ad\Rightarrow e) = \frac{4}{4} \\ {\rm Confidence}(ae\Rightarrow d) = \frac{4}{6} \\ {\rm Confidence}(de\Rightarrow a) = \frac{4}{5} Confidence(ade)=74Confidence(dae)=64Confidence(ead)=84Confidence(ade)=44Confidence(aed)=64Confidence(dea)=54
    显然,不满足对称关系。

  • 确定强关联规则。

    其中只有 C o n f i d e n c e ( a d ⇒ e ) ≥ {\rm Confidence}(ad\Rightarrow e)\ge Confidence(ade) min_conf, C o n f i d e n c e ( d e ⇒ a ) ≥ {\rm Confidence}(de\Rightarrow a)\ge Confidence(dea) min_conf,所以强关联规则为
    a d ⇒ e [ 0.4 , 1.0 ] d e ⇒ a [ 0.4 , 0.8 ] ad\Rightarrow e \;\;\;\; [0.4, 1.0]\\ de \Rightarrow a \;\;\;\; [0.4,0.8] ade[0.4,1.0]dea[0.4,0.8]

2. 基于表 1 1 1 回答下列问题(min_sup=40%):

  • 使用 FP-Growth 算法确定频繁项集、FP 树和条件模式基。

    根据 C1,可以统计出 F - l i s t = e , a , b , d , c {\rm F\text-list} = e, a, b, d, c F-list=e,a,b,d,c。根据 F - l i s t \rm F\text-list F-list,对表 1 1 1 进行筛选、排序,得到表 2 2 2

    Transaction IDItems Bought
    0001{e, a, d}
    0024{e, a, b, c}
    0012{e, a, b, d}
    0031{e, a, d, c}
    0015{e, b, c}
    0022{e, b, d}
    0029{d, c}
    0040{a, b, c}
    0033{e, a, d}
    0038{e, a, b}

表 2    经过过滤、排序后的数据

​ 构建的 FP 树如图 2 2 2 所示。

图 2    FP 树

从出现频次少的 item 开始确定条件模式基、条件 FP 树和频繁项集。

c 的条件模式基为 {{e,a,b:1}, {e,a,d:1}, {e,b:1}, {d:1}, {a,b:1}},统计基于其条件模式基的候选一项集:{a:3,b:3,e:3,d:2}。由于均小于最小支持度,所以不存在(条件)频繁一项集,无法构建条件 FP 树,也没法构建频繁二项集。

d 的条件模式基为 {{e,a,b:1}, {e,a:3}, {e,b:1}},统计候选一项集:{e:5, a:4, b:2}。只有 b 小于最小支持度,所以频繁一项集为 {e:5, a:4}。现在,以 d 的条件模式基作为”数据集“,执行构建 FP 树的过程,即按照频次对一项集排序,去掉数据集中每条数据的非频繁项并排序,最后基于处理后的数据集构建 FP 树,该树为 d 的条件 FP 树,如图 3 3 3 所示。

图 3    d-conditional FP tree

由于该 FP 树只有一条路径,因此无需递归建树,根据 d 对应的条件 FP 树统计的频繁项集为 {ead:4, ed:5, ad:4}。在表 2 2 2 所示的原始数据集中进行验证,结果正确。

b 的条件模式基为 {{e,a:3}, {e:2}, {a:1}},频繁一项集为 {e:5, a:4}。条件 FP 树如图 4 4 4 所示。

图 4    b-conditional FP tree

统计频繁二项集为 {eb:5, ab:4}。由于不止一条路径,所以统计频繁三项集需要递归建树。建立 ba 条件 FP 树,需要从图 4 4 4 中确定 a 的条件模式基 {{e:3}},以该条件模式基为”数据集“,统计频繁一项集发现为空,所以无法建立 ba 条件 FP 树,故无法生成频繁三项集。再建立 be 条件 FP 树,显然,其条件模式基为空,建树与生成频繁项集也无从谈起。

a 的条件模式基为 {{e:6}},频繁一项集为 {e:6}。条件 FP 树如图 5 5 5 所示,由此确定频繁项集为 {ea:6}。

图 5    a-conditional FP tree

e 的条件模式基为空,所以不考虑。

综上所述,根据 FP-Growth 算法确定的频繁项集为 {a},{b},{c},{d},{e},{ab},{ad},{ae},{be},{de},{ade}。与 Apriori 算法结果一致。

  • 对比 FP-Growth 和 Apriori 的效率。

    FP-Growth 算法只需要对数据集遍历两次,所以速度更快。FP 树将集合按照支持度降序排序,不同路径如果有相同前缀路径共用存储空间,使得数据得到了压缩。相比于 Apriori,FP 树第二次遍历会存储很多中间过程的值,会占用很多内存。

3. 使用 AGNES 算法将表 4 4 4 所示的十个点聚类成两类。

IDNamePos
0A1(4,2,5)
1A2(10,5,2)
2A3(5,8,7)
3B1(1,1,1)
4B2(2,3,2)
5B3(3,6,9)
6C1(11,9,2)
7C2(1,4,6)
8C3(9,1,7)
9C4(5,6,7)

表 4    十点位置

① 合并 A3 和 C4,二者的欧式距离为 2 2 2,记簇为 α \alpha α

② 合并 B1 和 B2,二者距离为 6 \sqrt 6 6 ,记簇为 β \beta β

③ 合并 B3 和 α \alpha α,二者距离由 B3 与 α \alpha α 中最近点的距离定义,即 B3 与 C4,距离为 8 \sqrt 8 8 ,记簇为 α \alpha α

④ 合并 β \beta β、A1 和 C2, β \beta β 与 A1 的距离定义为 C2 与 A1 的距离,即 14 \sqrt {14} 14 ,B2 与 A1 的距离也为 14 \sqrt{ 14} 14 ,所以三者合并,记簇为 β \beta β

⑤ 合并 A2 和 C1,二者距离为 17 \sqrt {17} 17 。另外,合并 α \alpha α β \beta β,二者距离由 B3 和 C2 决定,也为 17 \sqrt{17} 17 。分别记簇为 γ \gamma γ α \alpha α

⑥ 合并 C3 和 α \alpha α,二者距离由 C3 和 A1 决定,即 30 \sqrt{30} 30 ,记簇为 α \alpha α

此时只剩两个簇, α \alpha α γ \gamma γ,分别为 {A2, C1} 和 {A1, A3, B1, B2, B3, C2, C3, C4}。

通过程序代码验证,如图 6 6 6 所示。

图 6    分类前(左)、分类过程(中)和分类后(右)

对应代码如下:

#步骤1:创建数据
import matplotlib.pyplot as plt
import numpy as np
X = np.array([[4,2,5], [10,5,2], [5,8,7], [1,1,1], [2,3,2], [3,6,9], [11,9,2], [1,4,6], [9,1,7], [5,6,7]])
fig = plt.figure(figsize=(8, 5))
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c='b')
plt.show()
#步骤 2:调用函数实现层次聚类
from scipy.cluster.hierarchy import linkage
Z = linkage(X, method='single', metric='euclidean')
#步骤 3:画出树形图
from scipy.cluster.hierarchy import dendrogram
plt.figure(figsize=(8, 5))
dendrogram(Z,p=1, leaf_font_size=10)
plt.show()
#步骤 4:获取聚类结果
from scipy.cluster.hierarchy import fcluster
# 根据聚类数目返回聚类结果
k = 2
labels_2 = fcluster(Z, t=k, criterion='maxclust')
# 聚类的结果可视化,相同的类的样本点用同一种颜色表示
fig = plt.figure(figsize=(8, 5))
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=labels_2, cmap='prism')
plt.show()

4. 根据表 5 5 5 所示的 User-Product rating 矩阵回答下列问题:

Product 1Product 2Product 3Product 4
User 11153
User 23?54
User 31311
User 44321
User 52224

表 5    User-Product

  • 使用余弦相似度计算与 User 2 最相似的三个 User。
    s i m ( 1 , 2 ) = 1 × 3 + 5 × 5 + 3 × 4 35 50 ≈ 0.956 s i m ( 3 , 2 ) = 1 × 3 + 1 × 5 + 1 × 4 3 50 ≈ 0.980 s i m ( 4 , 2 ) = 4 × 3 + 2 × 5 + 1 × 4 21 50 ≈ 0.802 s i m ( 5 , 2 ) = 2 × 3 + 2 × 5 + 4 × 4 24 50 ≈ 0.924 \begin{align} {\rm sim}(1,2) = \frac{1\times 3 + 5\times 5 + 3\times 4}{\sqrt{35} \sqrt{50}} ≈ 0.956 \\ {\rm sim}(3,2) = \frac{1\times 3 + 1\times 5 + 1\times 4}{\sqrt{3} \sqrt{50}} ≈ 0.980 \\ {\rm sim}(4,2) = \frac{4\times 3 + 2\times 5 + 1\times 4}{\sqrt{21} \sqrt{50}} ≈ 0.802 \\ {\rm sim}(5,2) = \frac{2\times 3 + 2\times 5 + 4\times 4}{\sqrt{24} \sqrt{50}} ≈ 0.924 \\ \end{align} sim(1,2)=35 50 1×3+5×5+3×40.956sim(3,2)=3 50 1×3+1×5+1×40.980sim(4,2)=21 50 4×3+2×5+1×40.802sim(5,2)=24 50 2×3+2×5+4×40.924
    显然,User 2 和 User 1、User 3、User 5 最相似。

  • 使用与 User 2 最相似的三个 User 预测 User 2 的 Product 2。
    r ˉ U s e r 1 = 1 4 ( 1 + 1 + 5 + 3 ) = 5 2 r ˉ U s e r 2 = 1 3 ( 3 + 5 + 3 ) = 4 r ˉ U s e r 3 = 1 4 ( 1 + 3 + 1 + 1 ) = 3 2 r ˉ U s e r 5 = 1 4 ( 2 + 2 + 2 + 4 ) = 5 2 \begin{align} \bar r_{\rm User \;1} &= \frac{1}{4}(1+1+5+3) = \frac{5}{2} \\ \bar r_{\rm User \;2} &= \frac{1}{3} (3+5+3) = 4 \\ \bar r_{\rm User \;3} &= \frac{1}{4} (1+3+1+1) = \frac{3}{2} \\ \bar r_{\rm User \;5} &= \frac{1}{4}(2+2+2+4) = \frac{5}{2} \end{align} rˉUser1rˉUser2rˉUser3rˉUser5=41(1+1+5+3)=25=31(3+5+3)=4=41(1+3+1+1)=23=41(2+2+2+4)=25

    r U s e r 2 , P r o d u c t 2 = r ˉ U s e r 2 + s i m ( 1 , 2 ) ( r U s e r 1 , P r o d u c t 2 − r ˉ U s e r 1 ) + s i m ( 3 , 2 ) ( r U s e r 3 , P r o d u c t 2 − r ˉ U s e r 3 ) + s i m ( 5 , 2 ) ( r U s e r 5 , P r o d u c t 2 − r ˉ U s e r 5 ) s i m ( 1 , 2 ) + s i m ( 3 , 2 ) + s i m ( 5 , 2 ) ≈ 3.851 \begin{align} r_{\rm User \;2, Product \;2} &= \bar r_{\rm User \;2} + \frac{{{\rm sim(1,2)}(r_{\rm User\; 1, Product\;2}- \bar r_{\rm User\; 1}) } + {{\rm sim(3,2)}(r_{\rm User\; 3, Product\;2}- \bar r_{\rm User\; 3})} + {{\rm sim(5,2)}(r_{\rm User\; 5, Product\;2}- \bar r_{\rm User\; 5}) }}{\rm sim(1,2) + sim(3,2)+ sim(5,2)} \\ &≈ 3.851 \end{align} rUser2,Product2=rˉUser2+sim(1,2)+sim(3,2)+sim(5,2)sim(1,2)(rUser1,Product2rˉUser1)+sim(3,2)(rUser3,Product2rˉUser3)+sim(5,2)(rUser5,Product2rˉUser5)3.851

Lab Part

Churn Management

churn_training.txt 文件包括 2000 条数据,churn_validation.txt 包括 1033 条数据。

  • 采用决策树模型,设置 minimum records per child branch 为 40,pruning severity 为 70。

    图 7    决策树

  • 采用神经网络模型,默认设置。

    图 8    神经网络

  • 采用逻辑回归模型,默认设置。

    图 9    逻辑回归

  • 对比不同参数设置下的决策树模型、神经网络模型和逻辑回归模型。

图 10    不同参数下决策树的效果

图 11    不同参数下决策树的效果(续)

图 12    不同参数下神经网络的效果

图 13    不同参数下逻辑回归的效果

Market Basket Analysis

采用 Apriori 算法,设置 Minimum antecedent support 为 7%,Minimum confidence 为 45%,Maximum number of antecedents 为 4。

  • 确定产生的关联规则。

    全部关联规则如图 14 14 14 所示。

    图 14    全部关联规则

  • 分别按照提升度(lift)、支持度(support)和置信度(confidence)对关联规则进行排序,选择前五个非冗余的关联规则。

    前五个关联规则如表 6 6 6 所示。

    orderliftsupportconfidence
    1tomato souce → pastapasta → milkbiscuits, pasta → milk
    2coffee, milk → pastawater → milkwater, pasta → milk
    3biscuits, pasta → milkbiscuits → milkjuices → milk
    4water, pasta → milkbrioches → milktomato souce → pasta
    5juices → milkyoghurt → milkyoghurt → milk

    表 6    前五关联规则

    比较符合常识,比如买番茄酱的购物者很可能意大利面;买意大利面的购物者很可能因为口渴买牛奶;买水或者酸奶等饮品的购物者常常会一起买上牛奶。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/193134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[原创]C++98升级到C++20的复习旅途-从汇编及逆向角度去分析“constexpr“关键字

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XXQQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi…

机器视觉最全面试题总结

文章目录 1. 为什么需要做特征归一化、标准化?2. 常用常用的归一化和标准化的方法有哪些?3. 介绍一下空洞卷积的原理和作用4. 怎么判断模型是否过拟合,有哪些防止过拟合的策略?5. 除了SGD和Adam之外,你还知道哪些优化算…

uniapp 使用安卓模拟器运行

uniapp 启动方式有很多种,这里介绍使用模拟器启动uniapp 要使用模拟器启动uniapp肯定少不了安装模拟器(废话) 这里选着浏览器推荐的第一个模拟器mumu模拟器 下载好了mumu安装包后就是安装了,这个过于小白,就不介绍了 2. 查看模拟器的adb端口号, mumu的adb查看端口号与众不同…

6-48.日期类的设计与实现

使用重载运算符&#xff08;&#xff0c;&#xff0c;<<等&#xff09;实现日期类的操作。功能包括&#xff1a; 1&#xff09;设置日期&#xff0c;如果日期设置不符合实际&#xff0c;则设置为默认日期&#xff08;1900年1月1日&#xff09; 2&#xff09;在日期对象中…

Java 表达式引擎

企业的需求往往是多样化且复杂的&#xff0c;对接不同企业时会有不同的定制化的业务模型和流程。我们在业务系统中使用表达式引擎&#xff0c;集中配置管理业务规则&#xff0c;并实现实时决策和计算&#xff0c;可以提高系统的灵活性和响应能力。 引入规则引擎似乎就能解决这个…

数据结构:堆的实现思路

我们之前写过堆的实现代码&#xff1a;数据结构&#xff1a;堆的实现-CSDN博客 这篇文章我们了解一下堆到底是如何实现的 1.堆向下调整算法 现在我们给出一个数组&#xff0c;逻辑上看做一颗完全二叉树。我们通过从根节点开始的向下调整算法可以把它调整成一个小堆 向下调…

栈的链式存储(详解)

栈的链式存储 栈的链式存储是通过链表来实现的&#xff0c;每个节点包含一个元素和一个指向下一个节点的指针。链式存储的栈不需要提前分配内存空间&#xff0c;可以动态地增加或减少元素。 在链式存储中&#xff0c;栈顶元素通常是链表的头节点&#xff0c;栈底元素是链表的…

高光谱遥感影像分类项目开源

热烈欢迎大家在git上star&#xff01;&#xff01;&#xff01;冲鸭&#xff01;&#xff01;&#xff01; 我研究生期间主要是做高光谱遥感影像分类的&#xff0c;毕业论文也是基于深度学习的高光谱遥感影像分类课题&#xff0c;转眼间已经毕业四年了&#xff0c;如今把这块材…

每天一点python——day84

#每天一点Python——84 #异常处理机制try—except—else #异常处理机制try—except—else如果try块中没有抛出异常&#xff0c;则执行else块&#xff0c;如果try中抛出异常&#xff0c;则执行except块#示例&#xff1a; try:a int(input(请输入第一个整数&#xff1a;))b in…

SpringBootAdmin监控原理Actuator,自定义指标

SpringBootAdmin监控原理Actuator&#xff0c;自定义指标 文章目录 SpringBootAdmin监控原理Actuator&#xff0c;自定义指标actuator自定义info端点信息自定义Health端点信息自定义metrics端点信息端点的自定义 actuator JMX方式就是在cmd控制台输入jconsole&#xff0c;会弹出…

递归实现组合型枚举

递归实现组合型枚举 #include<iostream> #include<vector>int n, m; std::vector<int>res; bool st[30];void Print() {for(int i0;i<res.size();i){printf("%d ",res[i]);}puts(""); }void dfs(int num) {if (res.size() m){Print(…

使用docker切换任意版本cuda使用GPU

1.现存问题 在主机上运行很多下载来的机器学习代码时&#xff0c;这些大都运行在不同版本的tensorflow-gpu或者pytorch等的包下的。但是&#xff0c;运行代码的过程中&#xff0c;存在匹配的问题&#xff1a; 1.不同的版本的tensorflow-gpu或pytorch对cuda版本的适配也不一样…

Upsert 及冲突(GORM)

GORM支持了数据库的upsert操作 upsert操作对于插入一条数据而言的&#xff0c;如果插入数据之前&#xff0c;没有这条数据&#xff0c;则会插入该条数据&#xff1b;如果插入数据之前就存在这条数据&#xff08;索引值&#xff09;&#xff0c;就更新这条记录。 创建结构体 …

html电子签名

html电子签名 html5实现手写签名板&#xff0c;点击保存即可生成base64格式的图片 使用H5自带的canvas&#xff0c;无需引入js无需引入别的js 效果图 html代码 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"…

VisionPro---PatMaxTool工具使用

CogPMAlignTool PatMax是一种图案位置搜索技术&#xff08;识别定位&#xff09;&#xff0c;PatMax图案不依赖于像素格栅&#xff0c;是基于边缘特征的模板匹配而不是基于像素的模板匹配&#xff0c;支持图像中特征的旋转与缩放&#xff0c;边缘特征表示图像中不同区域间界限…

zookeeper+kafka+ELK+filebeat集群

目录 一、zookeeper概述&#xff1a; 1、zookeeper工作机制&#xff1a; 2、zookeeper主要作用&#xff1a; 3、zookeeper特性&#xff1a; 4、zookeeper的应用场景&#xff1a; 5、领导者和追随者&#xff1a;zookeeper的选举机制 二、zookeeper安装部署&#xff1a; 三…

基于SSH的员工管理系统(一)——包结构

基于SSH的员工管理系统&#xff08;一&#xff09;——包结构 包结构 1、整体包结构 2、action包 3、domain实体包 4、service层 5、dao层 6、util工具包 7、页面层

音视频的功耗优化

前言 在应用中&#xff0c;录制与音视频模块往往是高耗能的模块&#xff0c;设备容易发热&#xff0c;影响体验。 什么是功耗优化 手机有多个耗电模块&#xff0c; SOC(CPU&#xff0c;GPU&#xff0c;DDR)&#xff0c;Display&#xff0c;Audio&#xff0c;Video&#xff0…

CSS3 修改滚动条样式

上图&#xff1a; 上代码&#xff1a; /* 修改垂直滚动条 */ .right-list::-webkit-scrollbar {width: 2px; /* 修改宽度 */height: 5px; /* 修改高度 */ } /* 修改滚动条轨道背景色 */ .right-list::-webkit-scrollbar-track {background-color: #f1f1f1; } /* 修改滚动条滑块…

AD使用交互式BOM插件时应该注意到的一个问题

交互式BOM脚本 插件下载&#xff1a;GitHub - lianlian33/InteractiveHtmlBomForAD 或&#xff1a;GitHub - yukaichao/InteractiveHtmlBom-plugin-for-AD 或&#xff1a;InteractiveHtmlBomForAD-master.zip - 蓝奏云 问题&#xff1a;当PCB文件中出现MARK点时&#xff0c;…