news 2026/4/23 12:15:24

使用 dbt_set_similarity 测量跨产品采纳情况

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 dbt_set_similarity 测量跨产品采纳情况

原文:towardsdatascience.com/measuring-cross-product-adoption-using-dbt-set-similarity-fdf7c1f88bc2?source=collection_archive---------1-----------------------#2024-12-28

在 dbt 工作流中增强跨产品洞察

https://medium.com/@senick.matthew?source=post_page---byline--fdf7c1f88bc2--------------------------------https://towardsdatascience.com/?source=post_page---byline--fdf7c1f88bc2-------------------------------- Matthew Senick

·发布于 Towards Data Science ·5 分钟阅读·2024 年 12 月 28 日

介绍

对于多产品公司,一个关键的指标通常被称为“跨产品采纳”(即了解用户如何与产品组合中的多个产品互动)。

在流行书籍Hacking Growth[1] 中,建议使用一种衡量跨产品或跨特征使用情况的指标,即杰卡德指数。杰卡德指数传统上用于衡量两个集合之间的相似度,也可以作为评估产品采纳模式的强大工具。它通过量化产品之间用户的重叠,帮助识别跨产品协同效应和增长机会。

dbt 包dbt_set_similarity旨在简化在分析工作流中直接计算集合相似度指标的过程。该包提供了一种方法,可以在 SQL 转换层中计算杰卡德指数。

要将此包导入到您的 dbt 项目中,请将以下内容添加到packages.yml文件中。为了本文的示例,我们还需要 dbt_utils。请在项目中运行dbt deps命令来安装该包。

packages:-package:Matts52/dbt_set_similarity version:0.1.1-package:dbt-labs/dbt_utils version:1.3.0

杰卡德指数

杰卡德指数(Jaccard Index),也称为杰卡德相似度系数,是一种用于衡量两个集合相似度的指标。它的定义是两个集合交集的大小除以它们并集的大小。

从数学角度来看,它可以表示为:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b852489e4adafbcf4e5142059b2563f2.png

杰卡德指数表示两个集合的“交集”与它们的“并集”的比值(图由作者提供)

其中:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/a162cf1562e9ce0ccb3f78452c055ad4.png

(图像由作者提供)

Jaccard 指数在交叉产品采用的背景下特别有用,因为:

例如:

示例数据

我们将使用的示例数据集是一个虚构的 SaaS 公司,提供存储空间作为产品给消费者。该公司提供两种不同的存储产品:文档存储(doc_storage)和照片存储(photo_storage)。这些值要么为真,表示产品已被采用,要么为假,表示产品未被采用。

此外,该公司服务的用户群体(user_category)要么是科技爱好者,要么是房主。

为了这个示例,我们将在 dbt 项目中将此 CSV 文件作为名为seed_example的“种子”模型读取。

简单的交叉产品采用

现在,假设我们想要计算文档存储和照片存储产品之间的 Jaccard 指数(交叉采用)。首先,我们需要创建一个包含使用文档存储产品的用户的数组(列表),以及一个包含使用照片存储产品的用户的数组。在第二个 CTE 中,我们应用dbt_set_similarity包中的jaccard_coef函数,帮助我们轻松计算这两个用户 ID 数组之间的 Jaccard 系数。

withproduct_usersas(select array_agg(user_id)filter(where doc_storage=true)asdoc_storage_users,array_agg(user_id)filter(where photo_storage=true)asphoto_storage_usersfrom{{ref('seed_example')}})select doc_storage_users,photo_storage_users,{{dbt_set_similarity.jaccard_coef('doc_storage_users','photo_storage_users')}}ascross_product_jaccard_coeffromproduct_users

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/529e9b291bf1faf07a77a46845db4c94.png

来自上述 dbt 模型的输出(图像由作者提供)

如我们所见,似乎超过一半(60%)的采用了任何一个产品的用户,也采用了两个产品。我们可以通过将用户 ID 集合放入维恩图中来图形化验证我们的结果,在那里我们看到三位用户同时采用了这两个产品,在五位用户中占比为 3/5 = 0.6。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/3c4bc717a8204033fd7e53e5b3fac24b.png

用户 ID 和产品采用的集合是什么样的,验证我们的结果(图像由作者提供)

分段交叉产品采用

使用dbt_set_similarity包,创建不同用户类别的分段 Jaccard 指数应该是非常自然的。我们将遵循之前的模式,然而,我们将仅仅在用户类别上对我们的聚合进行分组。

withproduct_usersas(select user_category,array_agg(user_id)filter(where doc_storage=true)asdoc_storage_users,array_agg(user_id)filter(where photo_storage=true)asphoto_storage_usersfrom{{ref('seed_example')}}group by user_category)select user_category,doc_storage_users,photo_storage_users,{{dbt_set_similarity.jaccard_coef('doc_storage_users','photo_storage_users')}}ascross_product_jaccard_coeffromproduct_users

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/17ee449e92cd117d800aa2f482a6bba5.png

来自上述 dbt 模型的输出(图像由作者提供)

从输出结果来看,考虑到杰卡德指数,房主的跨产品采用率较高。如上所示,所有已采用其中一种产品的房主都已经采用了两种产品。与此同时,只有三分之一的科技爱好者在采用一种产品后也采用了两种产品。因此,在我们这个非常小的数据集中,房主的跨产品采用率高于科技爱好者。

我们可以通过再次绘制韦恩图来图形化验证输出结果:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/19568107b9ad9d3a3154ca096d7158ff.png

按照两个细分市场划分的韦恩图(图片由作者提供)

结论

dbt_set_similarity提供了一种直接在 dbt 工作流中计算跨产品采用指标(例如杰卡德指数)的简单有效方法。通过应用此方法,多产品公司可以深入了解用户行为和产品组合中的采用模式。在我们的示例中,我们演示了整体跨产品采用率的计算,以及对不同用户类别的细分采用情况。

使用该包进行跨产品采用分析只是其中一种直接的应用。实际上,这种技术有无数其他潜在应用,例如:

此外,这种分析方式显然不仅限于 SaaS,几乎可以应用于任何行业。祝你使用杰卡德指数愉快!

参考文献

[1] Sean Ellis 和 Morgan Brown, Hacking Growth(2017 年)

资源

dbt 包中心

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:11:53

数字多屏革命:虚拟显示技术如何重塑多屏扩展体验

数字多屏革命:虚拟显示技术如何重塑多屏扩展体验 【免费下载链接】parsec-vdd ✨ Virtual super display, upto 4K 2160p240hz 😎 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 在数字化工作与娱乐深度融合的今天,虚拟显示…

作者头像 李华
网站建设 2026/4/18 13:04:16

3分钟上手的智能采集工具:让小红书数据获取效率提升10倍

3分钟上手的智能采集工具:让小红书数据获取效率提升10倍 【免费下载链接】XHS-Downloader 免费;轻量;开源,基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader …

作者头像 李华
网站建设 2026/4/23 12:14:08

Phi-4-mini-reasoning效果实测:轻量级模型的强大推理能力

Phi-4-mini-reasoning效果实测:轻量级模型的强大推理能力 1. 引言 你有没有试过在一台普通笔记本上跑一个能解数学题、理清逻辑关系、还能一步步推导答案的AI模型?不是动辄几十GB显存的大家伙,而是一个真正“轻装上阵”却毫不含糊的小模型&…

作者头像 李华
网站建设 2026/4/23 11:32:40

PyTorch通用开发环境帮助我少走三个月弯路

PyTorch通用开发环境帮助我少走三个月弯路 刚入行那会儿,我花整整两周配环境:CUDA版本和PyTorch不匹配、pip源慢得像拨号上网、Jupyter内核死活不识别GPU、matplotlib中文乱码反复折腾……直到某天在团队共享镜像库看到PyTorch-2.x-Universal-Dev-v1.0—…

作者头像 李华
网站建设 2026/4/23 12:14:49

Face3D.ai Pro效果展示:普通人也能做的电影级3D建模

Face3D.ai Pro效果展示:普通人也能做的电影级3D建模 关键词:Face3D.ai Pro、3D人脸重建、AI建模、ResNet50、UV纹理贴图、单图建模、4K纹理、Gradio应用、ModelScope 摘要:本文聚焦Face3D.ai Pro镜像的真实效果呈现,不讲晦涩原理&…

作者头像 李华