2020-大数据分析-Lecture4-链接分析
Lecture4-链接分析
1. 新型数据:图数据
社交网络 | 媒体网络 |
---|---|
信息网络 | 信息网络 |
技术网络 | |
2. 图数据形态的网络
2.1. 网络的有向图表示
图形 | 含义 |
---|---|
节点 | 网页 |
边 | 超链接 |
2.2. 如何组织网络
2.2.1. 方式一:网页索引(人工编辑)
Yahoo、DMOZ、LookSmart
2.2.2. 方式二:网络搜索
- 信息检索调查:在一个小而可信的集合中找到相关文档
- 被搜索集合:新闻报纸、文章、引用等等。
- 缺陷:网络是巨大的,充满不可信、过时和随机的东西
- 网络搜索中的挑战
- 网络中存在多个来源的数据,那么我们相信哪一个来源的数据呢?可信的网页彼此互相引用和连接
- 查询数据的最佳回答是什么?没有单个的最佳答案,实际关于数据的页面往往指向许多"数据"
2.2.2.1. 在图中作节点排序
- 所有的网页的重要性是不平等的
- 在网络图节点的连接中有极高的多变性,我们通过链接结构来对页面进行排序。
2.2.2.2. 链接分析算法
- 我们将要集中介绍一下三种链接分析方法来计算图中节点的重要性。
- Page Rank 算法
- Topic-Specific(Personalized) Page Rank 算法
- Web Spam Detection Algorithms 算法
2.2.2.3. 链接投票
- 解决方法:链接投票,页面拥有的入链权重和越大越重要,来自重要(高权重)的链接权重更大,地推问题
- 考虑来自外部网站的链接:
www.stanford.edu
有23400个链接www.joe-schmoe.com
有1个链接
- 所有入链都是等权重的吗?不是,来自重要的链接权重更大,递推问题
3. Page Rank 算法
- Page Rank算法示意图:
3.1. Page Rank的简单递推公式
- 所有链接的投票权重与其源网页的权重成比例
- 页面j的权重为,拥有n个出链,则每个出链有的投票权重为
- 页面j自身的权重为其入链权重之和
- Page Rank网络局部示意:
3.2. Page Rank:流模型
- 来自重要页面的连接权重较大
- 被其他页面指向的页面是相对重要的的
- 为页面j定义"rank":
图示意 | 本式没有特解 |
---|---|
3.3. 简单流等式的求解
- 上面的右图的式子没有特解,附加约束条件:
- 求解流等式:
- 得到结果为:
- 高斯法消去只适用于小规模的例子,我们需要其他方法来应对大规模的Web图
3.4. PageRank的矩阵等式(核心)
:给定四个网页的初始的PR值
3.4.1. 随机邻接矩阵M
- 页面i有个出链
- 如果i
->
j,则,不然,列所有元素和为1
3.4.2. 排序向量r
- 每一页有一个条目的向量
- 是页面i的出链权重,是出链的个数
3.4.3. 特征向量等式
- 由上式可知,排序向量r是随机邻接矩阵M的特征向量
- 其第一个或主要特征向量,对应的特征值为1
- M的最大特征值为1,因为M为列随机(非负项)
- 我们知道r是单位长度,并且每一列和为1, <= 1
- 我们可以高效解出r,这种方法叫Power iteration
3.5. Power iteraion方法
- 如果给定一个有n个节点的网络图(节点是页,边是超链接)
- Power iteration算法描述
- 假设这里有N个网络节点
- 初始化:
- 计算:,重复操作直到满足停止条件
- 停止条件:
3.5.1. 使用power iteration方法求解之前的例子
3.5.2. Power Iteration方法原理
- 查找主要特征向量(对应于最大特征值的向量)的方法
- 证明:序列:、、、…、、…接近M的主要特征向量
- 假设矩阵M有n个线性独立特征变量,对应的特征变量为,并且
- 向量构成一组基向量,所以我们可以写成
- 所以我们进行计算可得:
- 提出:
- 由于之前的假设,可知
- 从上面证明的最后结论我们可以知道,如果c1等于0,那么这个方法不能收敛
3.6. Random Walk 算法
- 假设我们有一个随机网络游标
- 在任何时间t,游标在第i个节点上
- 在时间t+1,游标移动到i的随机一个外链上
- 最终结束到连接i节点的j节点上
- 重复以上的过程
- 是页面上的概率分布
3.6.1. 平稳分布
- 时间上满足等式:
- 当满足等式:的时候是Random Walk的一个平稳分布
- 结合之前矩阵形式的等式,我们可以知道r就是Random Walk的平稳分布
3.6.2. 存在性和唯一性
随机游走理论(又称马尔可夫过程)的主要结果是:对于满足某些条件的图,平稳分布是唯一的,并且无论在时间t = 0时的初始概率分布如何,最终都会达到平稳分布
3.7. PageRank的问题
- PageRank是否收敛?
- PageRank是否按照我们设想的方式收敛了?
- 结果是否有效可信?
- 有些点是死胡同?
- 有的网络拓扑形成了图结构(爬虫陷阱)?
3.7.1. 收敛判定
3.7.2. 是否收敛至期待水平
3.7.3. 死胡同(Dead end)
- 随意漫步"无处可去",这些页面导致权重被泄露
- 归根结底:该矩阵不是列随机的,因此无法满足我们的初始假设
解决方案:使用Teleport!当无处可去时,总是通过传送使矩阵列成为随机的,调整dead-ends的权重,使其有随机的概率到图上的任意一个点。
另一种解决方案(裁剪方案,考试使用)
3.7.4. 爬虫陷阱
- 所有的出链形成了一个环状结构,随机游走将被困在环中
- 这个不是一个问题,但是不是我们想要的结果:这个环吸收走了模型的所有的重要性
3.8. 爬虫陷阱的解决方案:Teleports
- Google针对Spider Traps的解决方案:在每个时间步,随机冲浪者都有两个选择
- 对于概率:选择随机一个出链行走
- 对于概率:选择随机一个点行走
- 概率往往在0.8-0.9之间进行选择,经验上会选择0.85,但是我们可以通过神经网络学习来确定的值
- 冲浪者将在几步之内将其传送出Spider Traps
3.9. 整体的解决方案:Random Teleports
- Google的解决方案是对于所有情况,每一步,随机冲浪者都有两个选择
- 对于概率:选择随机一个出链行走
- 对于概率:选择随机一个点行走
- PageRank等式的修正:
- 该公式假定/没有dead ends。 我们可以预处理矩阵/删除所有dead ends,也可以从dead ends中以概率1.0显式地跟随随机传送链接。
- 然后我们求解一个递归问题:
- Power Iteration方法仍然适用
- Random Teleports例子()
3.10. 问题:大规模网络计算会导致内存不足
假设N = 1,000,000,我们很直观的可以感受到需要存储的数据数量极大
3.10.1. 矩阵公式(Random Teleport的等价形式)
- 从i到每隔一页添加一个传送链接并将传送概率设置为
- 降低跟踪每个出站链接的可能性从到
- 等价于对每一个节点的权乘以,然后均匀地重新分配
3.10.2. 方程式重排
所以:
3.10.3. 稀疏矩阵公式
- 是一个N维的列向量(常量)
- M是一个稀疏矩阵
- 过程我们可以规划为如下
- 计算
- 注意在上面这个过程中,如果,我们需要对进行格式化,使其和为1(这种情况是M包含dead-ends)
3.10.4. 稀疏矩阵编码
- 仅使用非零条目对稀疏矩阵进行编码
- 假设有1,000,000条数据,4 * 10 * 1 billion = 40GB对于内存是不现实的,但是对于磁盘是可以的
3.10.5. 稀疏矩阵算法
- 我们假设RAM可以将,存储和矩阵M在磁盘中
- power-iteration的一个步骤
- 初始化:
- 对于页面i(出度为)
- 从内存中加载:
- 对于
3.10.6. 基于块更新的算法
- 进一步减少空间消耗,将重新切分成k块,来适配内存,为每一块扫描M和
- 块更新消耗:
- k次扫描M和
- 每次Power iteration的消耗:
- 我们有没有做的更好了呢?
- M相对于r更加大(大约有10-20x),所以我们可以避免每一个迭代读k次
3.11. PageRank完整算法
- 输入
- 一个有向图G,可以有Spider Traps和Dead ends
- 参数
- 输出:PageRank vector
- 过程
- 初始化:
- 重复以下步骤直到收敛:
- ,if in-degree of j is 0
- 现在,重新插入的PageRank:
- 如果图形没有死角,则泄漏的PageRank数量为1-β。 但是因为我们有死胡同,PageRank的泄漏量可能更大。 我们必须通过计算S来明确说明这一点。
- 一次迭代的消耗:2|r| + |M|
4. Topic-Sensitive PageRank
其实上面的讨论我们回避了一个事实,那就是"网页重要性"其实没一个标准答案,对于不同的用户,甚至有很大的差别。例如,当搜索"苹果"时,一个数码爱好者可能是想要看iphone的信息,一个果农可能是想看苹果的价格走势和种植技巧,而一个小朋友可能在找苹果的简笔画。理想情况下,应该为每个用户维护一套专用向量,但面对海量用户这种方法显然不可行。所以搜索引擎一般会选择一种称为Topic-Sensitive的折中方案。Topic-Sensitive PageRank的做法是预定义几个话题类别,例如体育、娱乐、科技等等,为每个话题单独维护一个向量,然后想办法关联用户的话题倾向,根据用户的话题倾向排序结果。
4.1. 算法步骤
4.1.1. 确定话题分类
一般来说,可以参考Open Directory(DMOZ)的一级话题类别作为topic。目前DMOZ的一级topic有:Arts(艺术)、Business(商务)、Computers(计算机)、Games(游戏)、Health(医疗健康)、Home(居家)、Kids and Teens(儿童)、News(新闻)、Recreation(娱乐修养)、Reference(参考)、Regional(地域)、Science(科技)、Shopping(购物)、Society(人文社会)、Sports(体育)。
4.1.2. 网页topic归属
这一步需要将每个页面归入最合适的分类,具体归类有很多算法,例如可以使用TF-IDF基于词素归类,也可以聚类后人工归类,具体不再展开。这一步最终的结果是每个网页被归到其中一个topic。
4.1.3. 分topic向量计算
- 在Topic-Sensitive PageRank中,向量迭代公式为
- 首先是单位向量e变为了s。s是这样一个向量:对于某topic的s,如果网页k在此topic中,则s中第k个元素为1,否则为0。注意对于每一个topic都有一个不同的s。而|s|表示s中1的数量。
- 还是以上面的四张页面为例,假设页面A归为Arts,B归为Computers,C归为Computers,D归为Sports。那么对于 Computers这个topic,s就是:
- 而lsl=2,因此,迭代公式为
5. 针对PageRank的Spam攻击与反作弊
- Link Spam:造出来很多空页来提高自己的页的rank值
- 反作弊:
- 检测拓扑
- TrustRank:如果比可信网站的rank高太多那么有理由认为是有问题的