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

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.mfbz.cn/a/202183.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【计算机网络笔记】交换机

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

Vue3依赖注入

适用场景 尤其针对一个变量需要从顶层组件开始透传,途径很多个子组件最后在第n代子组件使用的时候。对于这些途经的子组件而言,它们不但不使用而且完全不关心该变量具体是什么,只是作为一个传递工具罢了。这种情况下,使用依赖注入…

asla四大开源组件应用示例(alsa-lib、alsa-utils、alsa-tools、alsa-plugins)

文章目录 alsa设备文件/dev/snd//sys/class/sound/proc/asoundalsa-lib示例1alsa-utilsalsa-toolsalsa-plugins参考alsa设备文件 /dev/snd/ alsa设备文件目录位于,/dev/snd,如下所示 root@xboard:~#ls /dev/snd -l total 0 drwxr-xr-x 2 root root 60 Nov 6 2023 …

vuepress-----7、发布在GitHub

# 7、发布在GitHub 在你的项目中,创建一个如下的 deploy.sh 文件(请自行判断去掉高亮行的注释): #!/usr/bin/env sh# 确保脚本抛出遇到的错误 set -e# 生成静态文件 npm run docs:build# 进入生成的文件夹 cd docs/.vuepress/dist# 如果是发…

PTA_2023年软件设计综合实践_10(回溯法与分治限界法)

7-1 桥本分数 将1-9九个数不重复地赋给不同的9个元素 ,实现形如a/bcd/eff/hi 的形式。例:1/265/784/39 1/325/967/84 (注意:1/265/784/39 和5/781/264/39 只能算一种解),共有多少种不同的解。 语言选C #…

36 - 电商系统表设计优化案例分析

如果在业务架构设计初期,表结构没有设计好,那么后期随着业务以及数据量的增多,系统就很容易出现瓶颈。如果表结构扩展性差,业务耦合度将会越来越高,系统的复杂度也将随之增加。这一讲我将以电商系统中的表结构设计为例…

服务器数据恢复—V7000存储raid5崩溃导致上层卷无法使用的数据恢复案例

服务器数据恢复环境: 某品牌V7000存储中有一组由几十块硬盘组建的raid5阵列。上层操作系统为windows server,NTFS分区。 服务器故障: 有一块硬盘出现故障离线,热备盘自动上线替换离线硬盘。在热备盘上线同步数据的过程&#xff0c…

【springboot】idea项目启动端口被占用

问题 idea本地启动springboot项目端口老是被占用 解决 关闭被占用的端口进程 步骤: 1. winR打开程序框 2. 查出被占用端口的进程id netstat -ano | finderstr 端口号 例如 netstat -ano | finderstr 81013.杀死进程 taskkill /pid 进程id -t -f 例如 taskkill /pid 2…

TZOJ 1369 求绝对值

答案&#xff1a; #include<stdio.h> int main() {double a0.0; 要求输入实数&#xff0c;实数包括小数&#xff0c;所以不能用int&#xff0c;只能用浮点型doublewhile (scanf("%lf", &a) ! EOF) //多组数据输入{if (a < 0.0) //如果是负数a -a…

用IDEA创建Java类时,自动生成作者、时间和版本号、注释等信息

1.File->settings… 2、Editor->File and Code Templates->Includes->File Header(双击)&#xff0c;然后在右边输入框内输入代码即可 代码可以直接复制 /*** Author 作者名* Date ${DATE} ${TIME}* version 1.0* 注释*/上边你也可以自定义生成的内容。

Spring 日志

日志的作用: 1.定位和发现问题 2.系统监控 3.数据采集 观察日志 先写一段打印日志的代码 日志内容 日志级别分类 默认日志级别是Info,级别一下的就不打印了 Spring 帮我们集成了日志框架,我们直接使用即可 我们测试一下用日志框架打印日志是如何 我们就会发现打印的结果跟…

内测分发平台应用的异地容灾和负载均衡处理和实现思路

内测分发平台应用的异地容灾和负载均衡处理和实现思路 ​ 内测分发平台在软件开发过程中起着至关重要的作用&#xff0c;它不仅可以帮助开发者将应用程序传播给内部测试人员&#xff0c;还可以收集反馈、跟踪错误并改进产品。然而&#xff0c;为了确保一个平稳、连贯的内测过…

血的教训--kail系统免密centos7的坑【高版本ssh免密低版本ssh的坑】

血的教训–kail系统免密centos7的坑【高版本ssh免密低版本ssh的坑】 最近下载了一个2023版本的kail系统&#xff0c;但是经过几次设置免密后&#xff0c;ssh过去一直让提供密码&#xff0c;所以就仔细的分析了一下&#xff0c;果然还是发现了点猫腻 接上一个博客&#xff0c;大…

运算放大器

一、运算放大器的概念 1&#xff09;运算放大器具有两个输入端和一个输出端还有两个电源端&#xff0c;其中标有“”号的输入端为“同相输入端”&#xff0c;另一只标有“一”号的输入端为“反相输入端” 2&#xff09;运放的供电一般有两种方式&#xff1a;单电源和双电源 单…

谱方法学习笔记-上(超详细)

谱方法学习笔记&#x1f4d2; 谱方法学习笔记-下(超详细) 声明&#xff1a;鉴于CSDN使用 K a T e X KaTeX KaTeX 渲染公式&#xff0c; KaTeX \KaTeX KATE​X 与 L a T e X LaTeX LaTeX 不同&#xff0c;不支持直接的交叉引用命令&#xff0c;如\label和\eqref。 KaTeX \KaT…

SpringBoot+网易邮箱登录注册

文章目录 SpringBoot网易邮箱登录注册pom.xmlapplication.ymlsqlUserEmail.javaUserEmailMapper.javaUserEmailMapper.xmlEmailService.javaUserEmailService.javaUserEmailServiceImpl.javaUserEmailController.javaregister1.html 编写前参考 SpringBoot网易邮箱登录注册 po…

文生视频的发展史及其原理解析:从Gen2、Emu Video到PixelDance、SVD、Pika 1.0

前言 考虑到文生视频开始爆发&#xff0c;比如11月份就是文生视频最火爆的一个月 11月3日&#xff0c;Runway的Gen-2发布里程碑式更新&#xff0c;支持4K超逼真的清晰度作品(runway是Stable Diffusion最早版本的开发商&#xff0c;Stability AI则开发的SD后续版本)11月16日&a…

Python MD5加密的三种方法(可加盐)

方法一&#xff1a;MD5直接加密 import hashlibtext1123456 print(text1) mdhashlib.md5(text1.encode()) # 创建md5对象 md5pwdmd.hexdigest() # md5加密 print(md5pwd) 输出结果&#xff1a; 方法二&#xff1a;MD5盐加密&#xff0c;将盐拼接在原密码后 import ha…

轻松愉悦的验证方式:实现图片旋转验证功能

说在前面 在当今互联网时代&#xff0c;随着技术的不断进步&#xff0c;传统的验证码验证方式已经无法满足对安全性和用户体验的需求。为了应对日益狡猾的机器人和恶意攻击&#xff0c;许多网站和应用程序开始引入图形验证码&#xff0c;其中一种备受欢迎的形式就是图片旋转验证…

手机一键“触达”!VR全景助力政务服务大厅数字升级

在我们的日常生活中&#xff0c;去政务服务大厅办事&#xff0c;总是避免不了遭遇“缺一样材料”的烦恼。因此网友总是吐槽&#xff0c;办事服务窗口总是多次要求提供不同证明&#xff0c;“一会儿说要身份证&#xff0c;一会儿又说要护照”&#xff0c;每次带上服务窗口要求的…
最新文章