数据挖掘(四)

数据挖掘(四)

文章目录

    • 数据挖掘(四)
      • 亲和性分析
      • 电影推荐问题
      • Apriori算法的实现
      • 抽取关联规则

本文介绍如何使用亲和性分析方法找出在什么情况下两个对象经常一起出现(购物篮分析),数据挖掘任务的目标是找出对象同时出现的情况,也就是寻找用户同时喜欢几部电影的情况。

亲和性分析

亲和性分析用来找出两个对象共同出现的情况,使用的数据通常类似于交易信息的数据。从直观上来看,这些数据就像是商店的交易数据,我们可以从中看出哪些商品是顾客一起购买的,应用场景有欺诈检测、顾客区分、软件优化和产品推荐等。亲和性分析比分类更具有探索性,因为通常我们无法拿到像在很多分类任务中所用的那样完整的数据集。比如在电影推荐任务中,我们拿到的是不同用户对不同电影的评价,但每个用户不可能评价过所有电影,如果用户没有评价过一部电影,是因为不喜欢还是出于其他原因还没有评价?我们要思考类似这样的潜在问题要怎么样解决。

  • 在之前的基础的亲和性分析算法中,尝试了所有可能的规则组合,计算了每条规则的置信度和支持度,并根据这两个标准进行排序,选取最佳规则。然而这个方法效率不高。好在所用的数据集每条交易数据只涉及五种商品,但现实中即便是小卖铺出售的商品也达上百种之多。随着商品数量的增加,计算所有规则需要的时间增长得很快。所有可能的规则数量是2的n次幂-1。数据集有5个特征,可能的规则就有31条。
  • Apriori算法是经典的亲和性分析算法,只从数据集中频繁出现的商品中选取出现的商品组成频繁项集,避免了上述复杂度呈指数级增长的问题。一旦找到频繁项集,生成关联规则就容易了。首先确保了规则在数据集中有足够的支持度,一个重要参数就是最小支持度。生成频繁项集后,将不再考虑其他可能的却不够频繁的项集,从而减少测试新规则所需要的时间。此外还有Eclat和频繁项集挖掘算法FP-growth,这些算法较Apriori算法有很多改进,性能也进一步提升。
  • 挖掘亲和性分析所用的关联规则之前,我们先用Apriori算法生成频繁项集,然后通过检测频繁项集中前提和结论的组合,生成关联规则。第一个阶段需要为Apriori算法指定一个项集要成为频繁项集所需要的最小支持度。任何小于最小支持度的项集将不再考虑。如果最小支持度过小,算法需要检测大量的项集,会拖慢的运行速度。第二阶段是根据置信度选取关联规则,可以设定最小置信度,返回一部分规则,或返回所有规则让用户自己选。

电影推荐问题

产品推荐技术是门大生意。网点经常用它向潜在用户推荐他们可能购买的产品。好的推荐算法能够带来更高的销售业绩。

  • 获取数据集,自从Netflix Prize奖项设立以来,Grouplens研究团队公开了一系列用于测试推荐算法的数据集。其中包括几个大小不同的电影评分数据集,分别有10万、100万和1000万条电影评分数据。我们使用包含10万条数据的MovieLens数据集,下载数据集好解压到当前文件夹。
import os
import pandas as pd
data_folder = os.path.join(os.getcwd(), 'ml-latest-small')
ratings_filename = os.path.join(data_folder, 'ratings.csv')
# 数据集有表头看可以直接读取解析时间戳数据
all_ratings = pd.read_csv(ratings_filename)
all_ratings['timestamp'] = pd.to_datetime(all_ratings['timestamp'], unit='s')
print(all_ratings[:5])
  • 稀疏数据格式,我们可以将稀疏数据集每一行看成巨大特征矩阵的一个格子,在矩阵中每一行表示一个用户,每一列为一部电影。第一列为每个用户给第一部电影的打分,第二列为第一个用户给第二部电影的打分,依此类推。数据集中有很多用户和电影,也就是说矩阵很大,如果把矩阵读到内存中及在它基础上进行计算可能存在难度。然而这个矩阵的很多格子都是空的。
  • 任何没有出现在数据集中的用户和电影组合表示它们实际上是不存在的。如果数据集中60%或以上的数据为0,就应该考虑使用稀疏矩阵,从而节省不少的空间。在对系数矩阵进行计算时,我们关注的时现有数据并对它们进行比较。

Apriori算法的实现

  • 作为规则“如果用户喜欢某些电影,那么他们也会喜欢这部电影”的扩展,我们可以讨论喜欢某几部电影的用户是否喜欢另一部电影。首先要确定用户是不是喜欢某一部电影。从数据集中选取一部分数据用作训练集,能有效减少搜索空间,提升Apriori算法的速度。
all_ratings['Favorable'] = all_ratings['rating'] > 3
# 取前200名用户的打分数据
ratings = all_ratings[all_ratings['userId'].isin(range(200))]
# 只包括用户喜欢某部电影的数据行
favorable_ratings = ratings[ratings['Favorable']]
# 生成项集时需要搜索用户喜欢的电影,按照userId分组,获取每个用户喜欢哪些电影
favorable_reviews_by_users = dict((k, frozenset(v.values)) for k, v in favorable_ratings.groupby('userId')['movieId'])
# 获取每部电影的影迷数量
num_favorable_by_movie = ratings[['movieId', 'Favorable']].groupby('movieId').sum()
# 查看最受欢迎的五部电影
num_favorable_by_movie.sort_values('Favorable', ascending=False)[:5]
  • Apriori算法是亲和性分析的一部分,专门用于查找数据集中的频繁项集。基本流程是从前一步找到频繁项集中找到新的备选集合,接着检测备选集合的频繁程度是否够高,然后算法像下面这样进行迭代。

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

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

相关文章

PostgreSQL 到 PostgreSQL 数据迁移同步

简述 PostgreSQL 是一个历史悠久且广泛使用的数据库,不仅具备标准的关系型数据库能力,还具有相当不错的复杂 SQL 执行能力。用户常常会将 PostgreSQL 应用于在线事务型业务,以及部分数据分析工作,所以 PostgreSQL 到 PostgreSQL …

JDK的下载

目录 JDK官网 Windows Ubantu 1.安装JDK 2.确定JDK版本 卸载OpenJDK Centos 1.下载JDK 2.安装JDK 3.验证JDK JDK官网 官网网址:Java Downloads | Oracle Windows 双击运⾏exe⽂件, 选择安装⽬录, 直⾄安装完成 Ubuntu 1.安装JDK 更新软件包 sudo apt u…

(56)MATLAB分析码间串扰信道的传递函数与频率响应

文章目录 前言一、3个存在码间串扰的信道二、信道特性仿真三、仿真结果四、迫零均衡器与MMSE均衡器仿真总结 前言 线性均衡器的性能完全取决于通信信道的特性。本文设计了三个不同传输特性的信道,给出了其传递函数系数,然后计算并绘制了各自的频率响应。…

etcd多实例配置

多实例进行配置,分别在多个不同端口进行监听,避免开启单机部署监听端口冲突; 查看go版本: go version 若没有go环境,则进行下载,解压至/usr/local后进行环境配置,编辑vim ~./bashrc vim ~./b…

029_Common_Plots_Matlab常见二维绘图

常用的二维绘图 常用绘图包括下面的种类: 线图, plot柱图, bar梯步图,stairstep误差棒图,errorbar极坐标图,polarplot跟图,stem散点图,scatter 这些命令都可以通过help xxx来查看…

NuGet Next发布,全新版私有化NuGet管理

NuGet Next发布,全新版私有化NuGet管理 NuGet Next是一款基于BaGet的一款私有化NuGet管理平台,我们对BaGet进行了扩展,并且提供了更多的功能。 NuGet 最新版开源私有化包管理,我们基于BaGet的基础之上增加了更多的功能&#xff…

STM32 从0开始系统学习5

目录 STM32 GPIO输入的四种模式 Practice And Usage 练习与封装 Detailed And Reference 更加具体的说明 输入浮空模式 输入上拉模式 输入下拉模式 模拟功能 我们下面聊一聊输入的事情,输入指的是我们的处理器从外部端口接受外设发过来的信号。在我们没有接…

PHP反序列化原生类字符串逃逸框架反序列化利用

PHP反序列化 概念 序列化的原因:为了解决开发中数据传输和数据解析的一个情况(类似于要发送一个椅子快递,不可能整个椅子打包发送,这是非常不方便的,所以就要对椅子进行序列化处理,让椅子分成很多部分在一起打包发送…

WonderWorld: Interactive 3D Scene Generation from a Single Image 论文解读

目录 一、概述 二、相关工作 1、新视图生成 2、单视图3D场景生成 3、视频生成 4、快速的3D场景表示 三、WonderWorld 1、FLAGS表示 2、引导深度扩散模块 3、单视角层次生成 4、基于几何的初始化 surfel表示 5、阶段一——生成3D场景部分 6、阶段二——用户交互控…

网络:IP分片和组装

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言16位标识,3位标志,13位片偏移分片组装总结 前言 对于IP分片和组装的总结 当一个IP数据报的大小超过网络的MTU(最…

从0到1搭建flink程序-WordCount(图文/详细/mac)

目录 一、目标以及前置资料 1.1 目标 1.2 前置资料 二、实现 2.1 搭建流程 2.2 调试 参考 一、目标以及前置资料 1.1 目标 初步感受flink任务,从0到1快速搭建一个flink程序 1.2 前置资料 1、下载jdk:Mac 安装jdk_mac 安装jdk 1.8-CSDN博客 2、…

ctfshow——web(总结持续更新)

文章目录 1、基础知识部分2、php伪协议2.1 php://input协议2.2 data://text/plain协议 3、webshell连接工具3.1 蚁剑连接一句话木马 4、各个web中间件重要文件路径4.1 Nginx 5、sqlmap使用6、php特性6.1 md5加密漏洞 7、TOP 10漏洞7.1 SQL注入 1、基础知识部分 识别base64编码…

FineReport 倒计时特效

1、代码准备 将下面的代码生成对应文件 1.1、zzsc.js 这段代码是一个JavaScript计时器脚本,用于计算从当前时间到第二天午夜(即0点)之间的时间差,并将这个时间差显示在网页上的特定元素中。具体来说,它会实时更新页…

【Linux】编辑器vim 与 编译器gcc/g++

目录 一、编辑器vim: 1、对vim初步理解: 2、vim的模式: 3、进入与退出: 4、vim命令模式下的指令集: 移动光标: 删除: cv: 撤销: 其他: 5、vim底行模…

虚拟机 Ubuntu 扩容

文章目录 一、Vmware 重新分配 Ubuntu 空间二、Ubuntu 扩容分区 一、Vmware 重新分配 Ubuntu 空间 先打开 Vmware ,选择要重新分配空间的虚拟机 点击 编辑虚拟机设置 ,再点击 硬盘 ,再点击 扩展 选择预计扩展的空间,然后点击 扩展…

【搜索引擎】俄罗斯搜索引擎yandex

俄罗斯搜索引擎yandex 1997年,俄罗斯搜索引擎Yandex(俄语意为:语言目录)首次上线,已发展成为全球第四大搜索引擎和第二大非英语搜索引擎 https://yandex.com/

【深度学习】CrossEntropyLoss需要手动softmax吗?

【深度学习】CrossEntropyLoss需要手动softmax吗? 问题:CrossEntropyLoss需要手动softmax吗?答案:不需要官方文档代码解释 问题:CrossEntropyLoss需要手动softmax吗? 之前用 pytorch 实现自己的网络时&…

Uniapp的H5以及App不支持后端传FormData类型参数的解决方案

在uniapp中不支持FormData的传参,这就很恶心;如果强行传的话会提示,请求失败的报错信息。 因为后端必须要FormData类型的传参,所以在查阅一系列方案后,有一种解决办法可以完美解决。 代码: init() {const…

img 标签的 object-fit 属性

设置图片固定尺寸后,可以通过 object-fit 属性调整图片展示的形式 object-fit: contain; 图片的长宽比不变,相应调整大小。 object-fit: cover; 当图片的长宽比与容器的长宽比不一致时,会被裁切。 object-fit: fill; 图片不再锁定长宽…

机器人领域中的scaling law:通过复现斯坦福机器人UMI——探讨数据规模化定律(含UMI的复现关键)

前言 在24年10.26/10.27两天,我司七月在线举办的七月大模型机器人线下营时,我们带着大家一步步复现UMI「关于什么是UMI,详见此文:UMI——斯坦福刷盘机器人:从手持夹持器到动作预测Diffusion Policy(含代码解读)」&…