机器学习(十九)——PageRank算法, KNN, loss function详解

http://antkillerfarm.github.io/

PageRank算法

概述

在PageRank提出之前,已经有研究者提出利用网页的入链数量来进行链接分析计算,这种入链方法假设一个网页的入链越多,则该网页越重要。早期的很多搜索引擎也采纳了入链数量作为链接分析方法,对于搜索引擎效果提升也有较明显的效果。 PageRank除了考虑到入链数量的影响,还参考了网页质量因素,两者相结合获得了更好的网页重要性评价标准。

对于某个互联网网页A来说,该网页PageRank的计算基于以下两个基本假设:

数量假设:在Web图模型中,如果一个页面节点接收到的其他网页指向的入链数量越多,那么这个页面越重要。

质量假设:指向页面A的入链质量不同,质量高的页面会通过链接向其他页面传递更多的权重。所以越是质量高的页面指向页面A,则页面A越重要。

利用以上两个假设,PageRank算法刚开始赋予每个网页相同的重要性得分,通过迭代递归计算来更新每个页面节点的PageRank得分,直到得分稳定为止。 PageRank计算得出的结果是网页的重要性评价,这和用户输入的查询是没有任何关系的,即算法是主题无关的。

优点

这是一个与查询无关的静态算法,所有网页的PageRank值通过离线计算获得;有效减少在线查询时的计算量,极大降低了查询响应时间。

缺点

1)人们的查询具有主题特征,PageRank忽略了主题相关性,导致结果的相关性和主题性降低

2)旧的页面等级会比新页面高。因为即使是非常好的新页面也不会有很多上游链接,除非它是某个站点的子站点。

马尔可夫链

Markov链的基本定义参见《机器学习(十六)》。

这里补充一些定义:

定义1:设C为状态空间的一个子集,如果从C内任一状态i不能到C外的任何状态,则称C为闭集。除了整个状态空间之外,没有别的闭集的Markov链被称为不可约的

如果用状态转移图表示Markov链的话,上面的定义表征了Markov链的连通性

定义2:如果有正整数d,只有当 n=d,2d, 时, P(n)ii>0 ,或者说当n不能被d整除时, P(n)ii=0 ,则称i状态为周期性状态。如果除了 d=1 之外,使 P(n)ii>0 的各n值没有公约数,则称该状态i为非周期性状态

这个定义表征了Markov链各状态的独立性

定义3

f(n)ij=P(Xm+vj,Xm+n=j|Xm=i)

其中, n>1,1vn1

上式表示由i出发,首次到达j的概率,也叫首中概率

相应的还有最终概率

fij=n=1f(n)ij

定义4

如果 fii=1 , 则称状态i为常返的,如果 fii<1 , 则称状态i为非常返的。

ui=n=1nf(n)ii ,则 ui 表示由i出发i,再返回i的平均返回时间

如果 ui= ,则称i为零常返的。

常返态表征Markov链的极限分布。显然如果长期来看,状态i“入不敷出”的话,则其最终的极限概率为0。

根据上面的定义,还可得到Markov链的三个推论:

推论1:有限状态的不可约非周期Markov链必存在平稳分布。

推论2:若不可约Markov链的所有状态是非常返或零常返的,则不存在平稳分布。

推论3:若 Xj 是不可约的非周期的Markov链的平稳分布,则 limnP(n)ij=Xj ,即极限分布等于平稳分布。

简易推导

上图是一个Web图模型的示例。其中的节点表示网页,箭头表示网页链接。因此,从图论的角度来说,这是一个有向图。而从随机过程的角度,这也可以看做是一个Markov链。

上图中,A有两个入链B和C,则:

PR(A)=PR(B)+PR(C)

然而图中除了C之外,B和D都不止有一条出链,所以上面的计算式并不准确:

PR(A)=PR(B)2+PR(C)1

一般化,即:

PR(A)=PR(B)L(B)+PR(C)L(C)

其中,L表示外链个数。

更一般化,可得:

PR(u)=vBuPR(v)L(v)

这里有两种异常情况需要处理。

1.互联网中不乏一些没有出链的网页,为了满足Markov链的收敛性,设定其对所有的网页(包括它自己)都有出链。

2.互联网中一个网页只有对自己的出链,或者几个网页的出链形成一个循环圈。那么在不断地迭代过程中,这一个或几个网页的PR值将只增不减,显然不合理。

对于这种情况,我们假定有一个确定的概率 α 会输入网址直接跳转到一个随机的网页,并且跳转到每个网页的概率是一样的。即:

PR(pi)=αpjMpiPR(pj)L(pj)+(1α)N

α 也叫阻尼系数,一般设定为0.85。

由Markov链的收敛性可知,无论每个网页的PR初始值如何设定,都不影响最终的PR值。

在实际计算中,由于网页数量众多,而其中的链接关系相对较少,因此这个计算过程,实际上是一个巨维稀疏矩阵的凸优化问题,此处不再赘述。

TextRank

TextRank算法是PageRank算法在NLP领域的扩展,被广泛用于自动摘要和提取关键词。

将原文本拆分为句子,在每个句子中过滤掉停用词(可选),并只保留指定词性的单词(可选)。由此可以得到句子的集合和单词的集合。

每个单词作为TextRank中的一个节点。假设一个句子依次由下面的单词组成: w1,,wn 。从中取出k个连续的单词序列,组成一个窗口。我们认为窗口中任意两个单词间存在一个无向边,从而构建出一个图模型。

对该图模型应用PageRank算法,可得:

WS(Vi)=(1d)+dVjIn(Vi)wjiVkOut(Vj)wjkWS(Vj)

上式的W为权重(也可叫做结点相似度),一般采用以下定义:

W(Si,Sj)=|{wk|wkSi&wkSj}|log(|Si|)+log(|Sj|)

其中, |Si| 是句子i的单词数。

上面说的是关键词的计算方法。计算自动摘要的时候,将句子定义为结点,并认为全部句子都是相邻的即可。自动摘要所用的权重函数,一般采用BM25算法。

参考

http://www.cnblogs.com/rubinorth/p/5799848.html

http://blog.csdn.net/hguisu/article/details/7996185

http://www.docin.com/p-1231683333.html

http://www.docin.com/p-630952720.html

KNN

K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。

该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

和K-means的区别

虽然K-means和KNN都有计算点之间最近距离的步骤,然而两者的目的是不同的:K-means是聚类算法,而KNN是分类算法。

一个常见的应用是:使用K-means对训练样本进行聚类,然后使用KNN对预测样本进行分类。

KNN在时间序列分析上的应用

KNN虽然主要是个分类算法,但通过构建特殊的模型,亦可应用于其他领域。其中,KNN在时间序列分析上的应用,就是一个很有技巧性的事情。

假设已知时间序列 X:{x1,,xn} ,来预测 xn+1

首先,我们选取 xn+1 之前的最近m个序列值,作为预测值的特征向量 Xm{n+1} 。这里的m一般根据时间序列的周期来选择,比如商场客流的周期一般为一周。

Xm{n+1} 和预测值 xn+1 组成了扩展向量 [Xm{n+1},xn+1] 。为了表明 xn+1 是预测值的事实,上述向量又写作 [Xm{n+1},yn+1]

依此类推,对于X中的任意 xi ,我们都可以构建扩展向量 [Xm{i},yi] 。即我们假定, xi 的值由它之前的m个序列值唯一确定。显然,由于是已经发生了的事件,这里的 yi 都是已知的。

在X中,这样的m维特征向量共有 nm 个。使用KNN算法,获得与 Xm{n+1} 最邻近的k个特征向量 Xm{i} 。然后根据这k个特征向量的时间和相似度,对k个 yi 值进行加权平均,以获得最终的预测值 yn+1

参考:

http://www.doc88.com/p-1416660147532.html

KNN算法在股票预测中的应用

loss function详解

Mean Squared Error(MSE)/Mean Squared Deviation(MSD)

MSE=1ni=1n(Yi^Yi)2

Symmetric Mean Absolute Percentage Error(SMAPE or sMAPE)

MSE定义的误差,实际上是向量空间中的欧氏距离,这也可称为绝对误差。而有些情况下,可能相对误差(即百分比误差)更有意义些:

SMAPE=1nt=1n|FtAt|(At+Ft)/2

上式的问题在于 At+Ft0 时,该值无意义。为了解决该问题,可用如下变种:

SMAPE=100%nt=1n|FtAt||At|+|Ft|

Mean Absolute Error(MAE)

MAE=1ni=1n|fiyi|=1ni=1n|ei|

这个可以看作是MSE的1范数版本。

Mean Percentage Error(MPE)

MPE=100%nt=1natftat

你可能感兴趣的:(机器学习)