《数据挖掘》第七课笔记


一、确定性图灵机模型

  在确定性图灵机(DTM)中,其控制规则规定了在任何给定情况下最多只能执行一个动作。

  确定性图灵机具有转换功能,对于磁带头下的给定状态和符号,该转换功能指定了三件事:1、要写入磁带的符号2、头部应移动的方向(向左,向右或都不向)3、有限控制的后续状态

  例如,状态3的磁带上的X可能会使DTM在磁带上写Y,将磁头向右移动一个位置,然后切换到状态5。


二、概率机(非确定性)模型

  在理论计算机科学中,非确定性图灵机(NTM)是一种理论计算模型,其控制规则在某些给定情况下指定了多个可能的动作。 也就是说,NTM的下一个状态不是完全由其动作和它所看到的当前符号决定的(不同于确定性图灵机)。给定一个初始状态,每一步执行的时候机器有多个选择可以执行

  例如,状态3的磁带上的X可能允许NTM:输入Y,向右移动,然后切换到状态5或者写一个X,向左移动,并停留在状态3。
  或者想象在曼哈顿东西南北格点化的街道中有一个小醉汉,他每次到达一个交叉路口时都会随机选择前后左右四个方向其中的一个,然后继续前进(或后退);在走到下一个路口时又随机选择一次方向……如此继续下去。

  所以对于非确定图灵机的下一步的选择具有不确定性,但实际上NTM足够幸运,它总是会选择那个能够最终指向接受状态的那一步。


三、确定性图灵机模型与概率机(非确定性)模型

   DTM遵循的是单个“计算路径”,而NTM则是“计算树”。 如果树中至少有一个分支导致接受状态,那么NTM就会接受这个输入状态。

  决策图如下:在这里插入图片描述


四、PageRank

1、基本信息

   基于词图模型的关键词提取算法: TextRank。
   来源:Google 创始人拉里·佩奇和谢尔盖·布林于 1997 年构建早期的搜索系统原型时提出的链接分析算法,通过计算网页链接的数量和质量来粗略估计网页的重要性。
   应用:该算法创立之初即应用在谷歌的搜索引擎中,是谷歌搜索的核心算法,对网页进行排名,从而解决互联网网页的价值排序问题

2、核心思想

   链接数量 :如果一个网页被很多其他网页链接到,说明这个网页比较重要,也就是 PageRank 值会相对较高。
   链接质量 :如果一个 PageRank 值很高的网页链接到一个其他的网页,那么被链接到的网页的 PageRank 值会相应地因此而提高。

3、基本原理

   可以将整个万维网看作一张有向图,网页构成了图中的节点。

在这里插入图片描述

   任务是从图中挖掘每个节点的权重作为其重要性的度量。
   一个节点如果由很多个其他节点指向它,那么这个节点应该就很重要。
   如果有多个高权重的节点指向某一节点,且这个节点指向外部的链接数很少,那么这个被链接的点显然非常重要。

4、算法流程

   对任意一个网页 P P P,以 I ( P ) I(P) I(P)表述其重要性,并称之为网页排序。
   网页 P i {P_i} Pi的重要性就是所有指向这个网页的其他网页所贡献的重要性的加和。那么就有:
I ( P i ) = ∑ P j ∈ ln ⁡ ( P i ) I ( P j ) ∣ o u t ( P j ) ∣ I({P_i}) = \sum\limits_{{P_j} \in \ln ({P_i})} {\frac{{I({P_j})}}{{|out({P_j})|}}} I(Pi)=Pjln(Pi)out(Pj)I(Pj)
   I ( P i ) I({P_i}) I(Pi)是网页 i i i 的重要性(PR 值)
   ln ⁡ ( P i ) {\ln ({P_i})} ln(Pi)表示节点 P i {P_i} Pi的前驱节点集合
   o u t ( P j ) {out({P_j})} out(Pj) 表示节点 P j {P_j} Pj的后继节点集合
   ∣ o u t ( P j ) ∣ {|out({P_j})|} out(Pj)是集合中元素的个数

  首先,需要确定指向它的其他网页的重要性,建立一个矩阵,称为超链矩阵(hyperlink matrix), H = [ H i j ] H = [{H_{ij}}] H=[Hij],其中第 i i i行第 j j j列的元素(代表了第 j j j个网页分给第 i i i个网页的重要性)为: H i j = { 0 ,其他情况 1 ∣ o u t ( P j ) ∣ ,如果 P j ∈ ln ⁡ ( P i ) {H_{ij}} =\{ _{0,其他情况}^{\frac{1}{{{\rm{|out(}}{{\rm{P}}_j}{\rm{)|}}}},如果{P_j} \in \ln ({P_i})} Hij={0,其他情况∣out(Pj)1,如果Pjln(Pi)
  注意到H有一些特殊的性质:
  1.它所有的元都是非负的
  2.除非对应这一列的网页没有任何链接,它的每一列的和为1
  所有元均非负且列和为1的矩阵称为随机矩阵,随机矩阵将在下述内容中起到重要作用。(矩阵中有一个元素满足随机分布时,这个矩阵就可称为随机矩阵)

  其次,我们还需要定义向量 I = [ I ( P i ) ] I = [I({P_i})] I=[I(Pi)],它的元素为所有网页的网页排序——重要性的排序值。
  这样前面定义的网页排序还可以如下表示: I = H I I = HI I=HI
  即:向量 I I I是矩阵 H H H对应特征值1的特征向量。我们也称之为矩阵 H H H的平稳向量(stationary vector)。

5、求超链接矩阵的平稳向量的方法——幂法

  幂法是一种计算矩阵主特征值(矩阵按模最大的特征值)及对应特征向量的迭代方法,特别是用于大型稀疏矩阵。
  首先选择 I I I的备选向量 I 0 I_0 I0,进而按下式产生向量序列 I k I^k Ik
I k + 1 = H I k , k = 0 , 1 , 2 , . . . I^{k+1}=HI^k,k=0,1,2,... Ik+1=HIk,k=0,1,2,...
  一般原理:序列 I k I^k Ik将收敛到平稳向量 I I I

6、幂法实现的两大问题

(1)悬挂点问题

  考虑如下包含两个网页的小网络,其中一个链接到另一个:
在这里插入图片描述

在这里插入图片描述  在这个例子中,两个网页的重要性排序值均为0,这样我们无法获知两个网页之间的相对重要性信息。问题在于网页P2没有任何链接。
  因此,在每个迭代步骤中,它从网页P1获取了一些重要性,但却没有赋给其他任何网页。这样将耗尽网络中的所有重要性。
  没有任何链接的网页称为悬挂点(dangling nodes)
  为了能够继续进行,我们需要随机选取下一个网页:也就是说,我们假定悬挂点可以链接到其他任何一个网页。
  相当于对超链接矩阵做修正:将其中所有元都为0的替换为所有元均为 1 n \frac{1}{n} n1的列,修正后不存在悬挂点。
  即 S = H + A S=H+A S=H+A
  矩阵A:对应于悬挂点的列的每个元均为 a n \frac{a}{n} na,其余元均为0
修正以后:
在这里插入图片描述

(2)重要性水槽

在这里插入图片描述
  蓝色方框部分,有链接进入,却没有链接转到外部,正如前述悬挂点的例子。其他网页的重要性被“排”到这个“重要性水槽”中。这种情形发生在矩阵S为可约时。
  为得到一个本原且不可约的矩阵,我们需要修正随机跳转网页的方式。
  本来的,随机跳转摸式完全由矩阵S决定。
  现在的,一部分可能遵循矩阵S的方式跳转,也可能随机选
择下一个页面。
  若记所有元均为1的 n ∗ n n*n nn矩阵为 J J J,那么我们就可以得到谷歌矩阵(Google matrix): G = α S + ( 1 − α ) 1 n J G = \alpha S + (1 - \alpha )\frac{1}{n}J G=αS+(1α)n1J

  需要选择一个概率 α \alpha α,遵循矩阵 S S S的方式跳转的概率为 α \alpha α,而随机地选择下一个页面的概率是 1 − α 1-\alpha 1α。并且根据前面推导, α \alpha α越接近1,则意味着网络原有的超链接结构在计算时的权重更大,更接近网页重要性信息。

  综合考虑,算法发明者选择其值: α \alpha α=0.85

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python数据挖掘学习笔记主要包括以下几个方面的内容:Python基础知识、Python爬虫技术、Python数据分析与数据挖掘。其中,Python基础知识部分介绍了Python编程语言的基本语法、数据类型、流程控制等内容,为数据挖掘的学习打下了基础。Python爬虫技术部分介绍了如何使用Python编写爬虫程序,从网页中获取所需数据。Python数据分析与数据挖掘部分则介绍了使用Python进行数据分析和数据挖掘的相关技术和工具。 在Python数据挖掘中,还涉及到一些扩展库的使用,可以使用pip或apt-get进行安装,例如numpy库可以使用命令"sudo pip install numpy"或"sudo apt-get install python-numpy"进行安装。 另外,Matplotlib是Python中最常用的绘图库之一,主要用于绘制二维图形,也可以绘制简单的三维图形。下面是一个使用Matplotlib进行简单绘图的示例代码: ```python import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 10, 1000) y = np.sin(x) z = np.cos(x ** 2) plt.figure(figsize=(8, 4)) plt.plot(x, y, label='$\sin x$', color='red', linewidth=2) plt.plot(x, z, 'b--', label='$\cos x^2$') plt.xlabel('Time(s)') plt.ylabel('Volt') plt.title('A Simple Example') plt.ylim(0, 2.2) plt.legend() plt.show() ``` 这段代码使用了numpy库生成了一组x轴的数据,然后分别计算了对应的y轴和z轴的数值。接下来使用Matplotlib进行绘图,其中plt.plot函数用于绘制曲线,plt.xlabel和plt.ylabel分别设置x轴和y轴的标签,plt.title设置图的标题,plt.ylim设置y轴的范围,plt.legend用于显示图例,plt.show用于显示图形。 通过学习这些内容,你可以掌握Python数据挖掘的基本知识和常用技术,为进一步的学习和实践打下坚实的基础。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python数据挖掘学习笔记](https://blog.csdn.net/yinghuoai/article/details/88392141)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [python数据挖掘笔记](https://blog.csdn.net/djm82755/article/details/101452842)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幻兒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值