Mining Massive Datasets课程笔记(五)Web广告

本文介绍了在线算法的概念及其与离线算法的区别,通过二分图匹配问题来阐述。重点讲解了在线图匹配问题中的贪心算法,探讨了其竞争率,并分析了在AdWords问题中的应用。平衡算法作为贪心算法的改进,旨在解决广告商有限预算和多广告竞标的问题,其竞争率提升到了3/4。

Online Algorithm

通常的算法工作流程是,输入数据全部准备好了,我们能随时访问到所有的数据然后进行处理,从而输出结果,这类算法称之为”离线“算法(Off-line)
但是,有时候我们并不能获取全部数据,或者数据太大且有时间要求,需要在当前数据达到时作出应答,如前面课程中的流数据。这类算法称为”在线“算法(Online),在线算法与data Stream Model有些类似但并不完全相同。

二分图匹配问题(Bipartite Matching)

我们首先从二分图的匹配问题来了解在线算法。
完美匹配:给定一个二部图,一个匹配是指的由边构成的自己,对于这些边任何节点都不会同时是两条或多条边的端点,如果所有节点都出现在某个匹配中,则该匹配为完美匹配。
这里写图片描述
匹配问题也就是找到对于给定二分图的最大匹配,存在有完美匹配更好。在离线算法中,有一个多项式时间的算法,Hopcroft-Karp算法可以实现最大匹配问题。
Online Graph Matching Problem
这里写图片描述

贪心算法(for the online graph matching problem)

可以按照任意次序来考虑边,当考虑边(x, i)时,如果x, i 都不是已有匹配中的端点,则将该边加入匹配,否则跳过。
竞争率
对于输入I,假设最大匹配的贪心算法得到的匹配为 Mgreedy ,而理想匹配是 Mop

### 大规模数据集挖掘的技术与资源 #### 关于《Mining of Massive Datasets》 《Mining of Massive Datasets》是一本专注于大规模数据挖掘技术和算法的经典教材[^2]。该书由美国计算机科学家 Anand Rajaraman 和 Jeffrey D. Ullman 编写,涵盖了从基础到高级的数据挖掘方法。书中不仅介绍了如何高效处理海量数据,还提供了许多实际案例和应用场景。 以下是本书的主要内容和技术要点: 1. **MapReduce框架** MapReduce 是一种用于并行化处理大型数据集的编程模型[^2]。它通过分而治之的思想简化了分布式计算的任务分配和管理过程。对于初学者来说,《Mining of Massive Datasets》详细讲解了 MapReduce 的工作原理及其在数据挖掘中的应用实例。 2. **推荐系统** 推荐系统的构建依赖于协同过滤、矩阵分解和其他机器学习技术[^2]。这些技术能够帮助分析用户的偏好模式,并预测他们可能感兴趣的内容。此部分内容适合希望开发个性化服务的企业开发者或研究者。 3. **频繁项集挖掘** 频繁项集挖掘是一种发现交易数据库中常见组合的方法。Apriori 算法和 FP-Growth 算法是两个经典的解决方案,在零售业等领域具有广泛应用价值。 4. **聚类分析** 聚类旨在将相似对象归入同一组别,从而揭示隐藏结构[^2]。K-Means 方法是最常用的聚类工具之一;此外还有基于密度的空间聚类(DBSCAN),适用于噪声较多的情况。 5. **图挖掘** 社交网络分析通常涉及节点间关系建模以及社区检测等问题[^2]。PageRank 等链接流行度评估指标被广泛应用于搜索引擎优化领域。 6. **降维技术** 当面对高维度特征空间时,主成分分析(PCA)可以有效降低复杂度而不丢失过多信息量。这种方法特别有利于可视化展示或者加速后续运算操作。 除了理论阐述外,《Mining of Massive Datasets》也鼓励读者动手实践所学知识。每章节后面附带练习题目可以帮助巩固理解程度[^3]。 --- #### 其他值得阅读的大规模数据挖掘相关书籍 如果还想进一步扩展视野,则可考虑以下几部著作: - **《Data Mining: Concepts and Techniques》 by Jiawei Han, Micheline Kamber & Jian Pei** 这是一部全面介绍数据挖掘概念及其实现技巧的手册,覆盖范围广且深入浅出[^4]。 - **《Programming Collective Intelligence》 by Toby Segaran** 主要关注利用Python实现各种智能算法来解决现实世界难题,比如建立分类器、创建推荐引擎等实用功能[^5]。 - **《Hadoop: The Definitive Guide》 by Tom White** 如果计划采用 Hadoop 生态圈来进行超大容量文件存储与查询作业的话,那么这本书无疑是最佳入门指南[^6]。 --- ```python # 示例代码:简单实现 Apriori 算法的核心部分 def apriori(transactions, min_support=0.5): from collections import defaultdict item_counts = defaultdict(int) # Count individual items' frequency across all transactions. for transaction in transactions: for item in transaction: item_counts[item] += 1 num_transactions = float(len(transactions)) frequent_items = set([item for item, count in item_counts.items() if count / num_transactions >= min_support]) return frequent_items ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值