机器学习(十三)——机器学习中的矩阵方法(3)病态矩阵、协同过滤的ALS算法(1)

http://antkillerfarm.github.io/

向量的范数(续)

范数可用符号∥x∥λ表示。常用的有:

∥x∥1=|x1|+?+|xn|

∥x∥2=x21+?+x2n???????????√

∥x∥∞=max(|x1|,…,|xn|)

这里不做解释的给出如下示意图:

其中,0范数表示向量中非0元素的个数。上图中的图形被称为lp ball。表征在同一范数条件下,具有相同距离的点的集合。

范数满足如下不等式:

∥A+B∥≤∥A∥+∥B∥(三角不等式)

向量范数推广可得到矩阵范数。某些矩阵范数满足如下公式:

∥A?B∥≤∥A∥?∥B∥

这种范数被称为相容范数。

注:矩阵范数要比向量范数复杂的多,还包含一些不可以由向量范数来诱导的范数,如Frobenius范数。而且只有极少数矩阵范数,可由简单表达式来表达。这里篇幅有限,不再赘述。

病态矩阵

现在有线性系统Ax=b:

[400?800?201201][x1x2]=[200?200]

很容易得到解为:

x1=?100,x2=?200

。如果在样本采集时存在一个微小的误差,比如,将 A矩阵的系数400改变成401:

[401?800?201201][x1x2]=[200?200]

则得到一个截然不同的解:x1=40000,x2=79800。

当解集x对A和b的系数高度敏感,那么这样的方程组就是病态的 (ill-conditioned/ill-posed)。

从上例的情况来看,矩阵的行向量[400?201]和[?800401]实际上是过于线性相关了,从而导致矩阵已经接近奇异矩阵(near singular matrix)。

病态矩阵实际上就是奇异矩阵和近奇异矩阵的另一个说法。

参见:

http://www.cnblogs.com/daniel-D/p/3219802.html

矩阵的条件数

我们首先假设向量b受到扰动,导致解集x产生偏差,即:

A(x+Δx)=b+Δb

也就是:

AΔx=Δb

因此,由矩阵相容性可得:

∥Δx∥≤∥A?1∥?∥Δb∥

同时,由于:

∥A∥?∥x∥≥∥b∥

所以:

∥Δx∥∥A∥?∥x∥≤∥A?1∥?∥Δb∥∥b∥

即:

∥Δx∥∥x∥≤∥A∥?∥A?1∥?∥Δb∥∥b∥

我们定义矩阵的条件数

K(A)=∥A∥?∥A?1∥

,则上式可写为:

∥Δx∥∥x∥≤K(A)∥Δb∥∥b∥

同样的,我们针对A的扰动,所导致的x的偏差,也可得到类似的结论:

∥Δx∥∥x+Δx∥≤K(A)∥ΔA∥∥A∥

可见,矩阵的条件数是描述输入扰动对输出结果影响的量度。显然,条件数越大,矩阵越病态。

然而这个定义,在病态矩阵的条件下,并不能直接用于数值计算。因为浮点数所引入的微小的量化误差,也会导致求逆结果的很大误差。所以通常情况下,一般使用矩阵的特征值或奇异值来计算条件数。

假设A是2阶方阵,它有两个单位特征向量x1,x2和相应的特征值λ1,λ2。

由之前的讨论可知,x1,x2是相互正交的。因此,向量b能够被x1,x2的线性组合所表示,即:

b=mx1+nx2=mλ1λ1x1+nλ2λ2x2=A(mλ1x1+nλ2x2)

从这里可以看出,b在x1,x2上的扰动,所带来的影响,和特征值λ1,λ2有很密切的关系。奇异值实际上也有类似的特点。

因此,一般情况下,条件数也可以由最大奇异值与最小奇异值之间的比值,或者最大特征值和最小特征值之间的比值来表示。这里的最大和最小,都是针对绝对值而言的。

参见:

https://en.wikipedia.org/wiki/Condition_number

矩阵规则化

病态矩阵处理方法有很多,这里只介绍矩阵规则化(regularization)方法。

机器学习领域,经常用到各种损失函数(loss function),也称花费函数(cost function)。这里我们用:

minf∑i=1nV(f(x^i),y^i)

表示损失函数。

当样本数远小于特征向量维数时,损失函数所表示的矩阵是一个稀疏矩阵,而且往往还是一个病态矩阵。这时,就需要引入规则化因子用以改善损失函数的稳定性:

minf∑i=1nV(f(x^i),y^i)+λR(f)

其中的λ表示规则化因子的权重。

注:稀疏矩阵并不一定是病态矩阵,比如单位阵就不是病态的。但是从系统论的角度,高维空间中样本量的稀疏,的确会带来很大的不确定性。

函数V(又叫做Fit measure)和R(又叫做Entropy measure),在不同的算法中,有不同的取值。

比如,在Ridge regression问题中:

Fit measure:∥Y?Xβ∥2,Entropy measure:∥β∥2

Ridge regression问题中规则化方法,又被称为L2 regularization,或Tikhonov regularization。

注:Andrey Nikolayevich Tikhonov,1906~1993,苏联数学家和地球物理学家。大地电磁学的发明人之一。苏联科学院院士。著有《Solutions of Ill-posed problems》一书。

更多的V和R取值参见:

https://en.wikipedia.org/wiki/Regularization_(mathematics)

从形式上来看,对比之前提到的拉格朗日函数,我们可以发现规则化因子,实际上就是给损失函数增加了一个约束条件。它的好处是增加了解向量的稳定度,缺点是增加了数值解和真实解之间的误差。

为了更便于理解规则化,这里以二维向量空间为例,给出了规则化因子对损失函数的约束效应。

上图中的圆圈是损失函数的等高线,坐标原点是规则化因子的约束中心,左图的方形和右图的圆形是lp ball。图中的黑点是等高线和lp ball的焦点,实际上也就是这个带约束的优化问题的解。

可以看出L1 regularization的解一般出现在坐标轴上,因而其他坐标上的值就是0,因此,L1 regularization会导致矩阵的稀疏。

参见:

https://en.wikipedia.org/wiki/Tikhonov_regularization

http://www.mit.edu/~cuongng/Site/Publication_files/Tikhonov06.pdf

http://blog.csdn.net/zouxy09/article/details/24971995

协同过滤的ALS算法

协同过滤概述

注:最近研究商品推荐系统的算法,因此,Andrew Ng讲义的内容,后续再写。

协同过滤是目前很多电商、社交网站的用户推荐系统的算法基础,也是目前工业界应用最广泛的机器学习领域。

协同过滤是利用集体智慧的一个典型方法。要理解什么是协同过滤 (Collaborative Filtering,简称CF),首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。

如何找到相似的用户和物品呢?其实就是计算用户间以及物品间的相似度。以下是几种计算相似度的方法:

欧氏距离

d(x,y)=∑(xi?yi)2??????????√,sim(x,y)=11+d(x,y)

Cosine相似度

cos(x,y)=?x,y?|x||y|=∑xiyi∑x2i????√ ∑y2i????√

皮尔逊相关系数(Pearson product-moment correlation coefficient,PPMCC or PCC):

p(x,y)=cov(X,Y)σXσY=E[XY]?E[X]E[Y]E[X2]?E[X]2????????????√ E[Y2]?E[Y]2???????????√=n∑xiyi?∑xi∑yin∑x2i?(∑xi)2??????????????√ n∑y2i?(∑yi)2??????????????√

该系数由Karl Pearson发明。参见《机器学习(二)》中对Karl Pearson的简介。Fisher对该系数也有研究和贡献。

如上图所示,Cosine相似度计算的是两个样本点和坐标原点之间的直线的夹角,而PCC计算的是两个样本点和数学期望点之间的直线的夹角。

PCC能够有效解决,在协同过滤数据集中,不同用户评分尺度不一的问题。

参见:

https://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient

Spearman秩相关系数(Spearman’s rank correlation coefficient)

对秩变量(ranked variables)套用PCC公式,即可得Spearman秩相关系数。

秩变量是一类不在乎值的具体大小,而只关心值的大小关系的统计量。

Xi Yi xi yi di d2i
86 0 1 1 0 0
97 20 2 6 ?4 16
99 28 3 8 ?5 25
100 27 4 7 ?3 9
101 50 5 10 ?5 25
103 29 6 9 ?3 9
106 7 7 3 4 16
110 17 8 5 3 9
112 6 9 2 7 49
113 12 10 4 6 36

如上表所示,Xi和Yi是原始的变量值,xi和yi是rank之后的值,di=xi?yi。

当Xi和Yi没有重复值的时候,也可用如下公式计算相关系数:

rs=1?6∑d2in(n2?1)

注:Charles Spearman,1863~1945,英国心理学家。这个人的经历比较独特,20岁从军,15年之后退役。然后,进入德国莱比锡大学读博,中间又被军队征召,参加了第二次布尔战争,因此,直到1906年才拿到博士学位。伦敦大学学院心理学教授。

尽管他的学历和教职,都是心理学方面的。但他最大的贡献,却是在统计学领域。他也是因为在统计学方面的成就,得以当选皇家学会会员。

话说那个时代的统计学大牛,除了Fisher之外,基本都是副业比主业强。只有Fisher,主业方面也是那么牛逼,不服不行啊。

由上图可见,Pearson系数关注的是两个变量之间的线性相关度,而Spearman系数可以应用到非线性或者难以量化的领域。

参见:

https://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient

时间: 2024-08-07 21:04:19

机器学习(十三)——机器学习中的矩阵方法(3)病态矩阵、协同过滤的ALS算法(1)的相关文章

机器学习中的矩阵方法04:SVD 分解

机器学习中的矩阵方法04:SVD 分解 前面我们讲了 QR 分解有一些优良的特性,但是 QR 分解仅仅是对矩阵的行进行操作(左乘一个酉矩阵),可以得到列空间.这一小节的 SVD 分解则是将行与列同等看待,既左乘酉矩阵,又右乘酉矩阵,可以得出更有意思的信息.奇异值分解( SVD, Singular Value Decomposition ) 在计算矩阵的伪逆( pseudoinverse ),最小二乘法最优解,矩阵近似,确定矩阵的列向量空间,秩以及线性系统的解集空间都有应用. 1. SVD 的形式

机器学习中的矩阵方法02:正交

机器学习中的矩阵方法02:正交 说明:Matrix Methods in Data Mining and Pattern Recognition 读书笔记 1. 正交的一些概念和性质 在前一章的最小二乘的问题中,我们知道不恰当的基向量会出现条件数过大,系统防干扰能力差的现象,这实际上和基向量的正交性有关. 两个向量的内积如果是零, 那么就说这两个向量是正交的,在三维空间中,正交的两个向量相互垂直.如果相互正交的向量长度均为 1, 那么他们又叫做标准正交基. 正交矩阵则是指列向量相互正交的方阵.标

机器学习中的矩阵方法01:线性系统和最小二乘

机器学习中的矩阵方法01:线性系统和最小二乘 说明:Matrix Methods in Data Mining and Pattern Recognition 读书笔记 非常 nice 矩阵在线计算器,网址:http://www.bluebit.gr/matrix-calculator/. 1. LU Decomposition 假设现在要解一个线性系统: Ax = b, 其中 A 是 n×n 非奇异方阵,对于任意的向量 b 来说,都存在一个唯一的解. 回顾我们手工求解这个线性方程组的做法,首先

机器学习中的矩阵方法03:QR 分解

1. QR 分解的形式 QR 分解是把矩阵分解成一个正交矩阵与一个上三角矩阵的积.QR 分解经常用来解线性最小二乘法问题.QR 分解也是特定特征值算法即QR算法的基础.用图可以将分解形象地表示成: 其中, Q 是一个标准正交方阵, R 是上三角矩阵. 2. QR 分解的求解 QR 分解的实际计算有很多方法,例如 Givens 旋转.Householder 变换,以及 Gram-Schmidt 正交化等等.每一种方法都有其优点和不足.上一篇博客介绍了 Givens 旋转和 Householder

机器学习相关——协同过滤

在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法.本文将带你深入了解协同过滤的秘密.下面直接进入正题 1 什么是协同过滤 协同过滤是利用集体智慧的一个典型方法.要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐.这就是协同过滤的核心思想. 换句话说

机器学习相关——协同过滤(转载)

在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法.本文将带你深入了解协同过滤的秘密.下面直接进入正题 1 什么是协同过滤 协同过滤是利用集体智慧的一个典型方法.要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐, 而我们一般更倾向于从口味比较类似的朋友那里得到推荐.这就是协同过滤的核心思想. 换句话

机器学习相关——协同过滤

转自 http://www.cnblogs.com/luchen927/archive/2012/02/01/2325360.html 在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法.本文将带你深入了解协同过滤的秘密.下面直接进入正题 1 什么是协同过滤 协同过滤是利用集体智慧的一个典型方法.要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人

基于MLlib的机器学习--协同过滤与推荐

<Spark快速大数据分析> 11.5.4 协同过滤与推荐 协同过滤是一种根据用户对各种产品的交互与评分来推荐新产品的推荐系统技术. 协同过滤引入的地方就在于它只需要输入一系列用户/产品的交互记录: 无论是显式的交互(例如在购物网站上进行评分)还是隐式的(例如用户访问了一个 产品的页面但是没有对产品评分)交互皆可.仅仅根据这些交互,协同过滤算法就能 够知道哪些产品之间比较相似(因为相同的用户与它们发生了交互)以及哪些用户之间 比较相似,然后就可以做出新的推荐. 尽管MLlib的API使用了用户

机器学习中的矩阵向量求导(三) 矩阵向量求导之微分法

在机器学习中的矩阵向量求导(二) 矩阵向量求导之定义法中,我们讨论了定义法求解矩阵向量求导的方法,但是这个方法对于比较复杂的求导式子,中间运算会很复杂,同时排列求导出的结果也很麻烦.因此我们需要其他的一些求导方法.本文我们讨论使用微分法来求解标量对向量的求导,以及标量对矩阵的求导. 本文的标量对向量的求导,以及标量对矩阵的求导使用分母布局.如果遇到其他资料求导结果不同,请先确认布局是否一样. 1. 矩阵微分 在高数里面我们学习过标量的导数和微分,他们之间有这样的关系:$df =f'(x)dx$.