矩阵分解

【花书笔记】第2章 线性代数

久未见 提交于 2020-01-16 02:02:57
本系列博客作为记录花书的一些知识点,一些“显而易见”的,我就不多写了 2.1 标量、向量、矩阵和张量 标量:一个单独的数。 向量:一列数。 矩阵:一个二维数组。 张量:一个数组中的元素分布在若干维坐标的规则网络中,我们称之为张量。 转置:矩阵的转置是以对角线为轴的镜像。 2.2 矩阵和向量相乘 矩阵乘积: 元素对应乘积(Hadamard乘积):两个矩阵的标准乘积不是指两个矩阵中对应元素的乘积。不过,那样的矩阵操作确实是存在的,被称为元素对应乘积(element-wise product)或者Hadamard 乘积(Hadamard product),记为 A ⊙ B。 点积:两个相同维数的向量 x 和 y 的点积(dot product)可看作是矩阵乘积 x ⊤ y。 2.3 单位矩阵和逆矩阵 单位矩阵: 逆矩阵: 2.4 线性相关和生成子空间 线性相关: 线性无关:如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量称为线性无关。 2.5 范数 1. 2.范数是满足下列性质的任意函数: 3.p=2时,L²范数是欧几里得范数,表示从原点出发到向量x确定的点的欧几里得距离。 4.平方L²范数也经常用来衡量向量的大小,可以简单的通过点积 计算。 5.平方L²范数在计算上比L²范数本身方便,但是它在原点附近增长得十分缓慢。在某些机器学习应用中

机器学习相关参考

混江龙づ霸主 提交于 2020-01-14 05:30:23
特征工程相关 特征选择 特证工程学习笔记 Feature-Engineering中文版 缺失值填充方法 机器学习_数据处理及模型评估相关资料 训练模型填充空值(fill null)的几种方法 范数 0范数,1范数,2范数的几何意义 机器学习中的范数规则化之(一)L0、L1与L2范数 矩阵 Matrix calculus(矩阵微积分)关于矩阵求导 如何理解相似矩阵 矩阵求导术(上) 矩阵求导术(下) 孟岩的理解矩阵(一)(二)(三)(辅助理解) https://blog.csdn.net/myan/article/details/647511 https://blog.csdn.net/myan/article/details/649018 https://blog.csdn.net/myan/article/details/1865397 如何理解矩阵特征值 奇异值分解SVD 矩阵求导、几种重要的矩阵及常用的矩阵求导公式 Scalar-by-vector identities 高数&算法 马同学高等数学 牛顿法 逻辑回归 深入理解SVM之对偶问题 EM算法 支持向量机(强烈推荐) others 西瓜书第3,6,10详细讲解 来源: CSDN 作者: whime_sakura 链接: https://blog.csdn.net/whimewcm/article/details

一招教你巧用递归解决矩阵最大序列和问题

血红的双手。 提交于 2020-01-13 23:46:28
之前同事问了一道需要点脑洞的算法题,我觉得蛮有意思的,思路可能会给大家带来一些启发,在此记录一下 题目 现有一个元素仅为 0,1 的 n 阶矩阵,求连续相邻(水平或垂直,不能有环)值为 1 的元素组成的序列和的最大值。假设有如下矩阵 则此矩阵连续相邻值为 1 的元素组成的序列和分别为 4, 3,(如图示),可知这个矩阵符合条件的序列和的最大值为 4 解题思路 要算序列和的最大值,我们可以先找出所有可能的序列,自然就找到了序列和的最大值,那怎么找这些序列呢?首先我们发现,每个序列的起点和终点必然是 1,我们可以遍历矩阵的每一个元素,如果元素值为 1,则将其作为序列的起点开始查找所有以这个元素为起点的序列,我们知道序列是可以向垂直和水平方向延伸的,所以我们可以以这个元素为起点,查找它的上下左右值为 1 的元素,再以找到的这些元素为起点,继续在元素的上下左右查找值为 1 的元素,以此类推(递归),如果找不到符合条件的值,则序列终止,在遍历过程中保存每条序列遍历的元素,即可求得每条符合条件的序列,从而求得序列和的最大值 文字说得有点绕,接下来我们就以查找如下矩阵的最大序列和为例来详细看一下如何查找最大序列和 1. 从左到右,从上到下遍历所有值为 1 的元素,第一个符合条件的元素在右上角,所以以这个元素为起点来查找序列 2. 以这个元素为起点,查找这个元素上下左右为值为 1 的元素

关于推荐系统的综述

£可爱£侵袭症+ 提交于 2020-01-13 20:50:28
推荐系统中的深度匹配模型 辛俊波 DataFunTalk 今天 文章作者:辛俊波 腾讯 高级研究员 编辑整理:Hoh Xil 内容来源:作者授权 文章出品:DataFunTalk 注:转载请联系作者本人。 导读: 推荐系统和搜索应该是机器学习乃至深度学习在工业界落地应用最多也最容易变现的场景。而无论是搜索还是推荐,本质其实都是匹配,搜索的本质是给定 query,匹配 doc;推荐的本质是给定 user,推荐 item。本文主要讲推荐系统里的匹配问题,包括传统匹配模型和深度学习模型。 深度学习之风虽然愈演愈烈,但背后体现的矩阵分解思想、协同过滤思想等其实一直都是贯穿其中,如 svd++ 体现的 userCF 和 itemCF 的思想,FM 模型本质上可以退化成以上大多数模型等。多对这些方法做总结,有助于更深刻理解不同模型之间的关联。 图1 推荐和搜索的本质,都是 match 的过程 PS:本文主要启发来源 SIGIR2018:Deep Learning for Matching in Search and Recommendation,重点阐述搜索和推荐中的深度匹配问题,非常 solid 的综述,针对里面的一些方法,尤其是 feature-based 的深度学习方法增加了近期一些相关 paper。 本文主要分为以下几部分: ❶ 推荐系统概述 ❷ 推荐系统的传统匹配模型 ❸ 基于

特征值分解与奇异值分解

佐手、 提交于 2020-01-13 16:50:11
https://www.cnblogs.com/fuleying/p/4466326.html 特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法。两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征。 1. 特征值: 如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式: 写成矩阵形式: 这时候λ就被称为特征向量v对应的特征值, 一个矩阵的一组特征向量是一组正交向量 。 2. 特征分解: 特征值分解是将一个矩阵分解成下面的形式: 其中Q是这个矩阵A的特征向量组成的矩阵, 正交矩阵是可逆的。 Σ = diag(λ 1 , λ 2 , ..., λ n )是一个对角阵,每一个对角线上的元素就是一个特征值。 首先,要明确的是, 一个矩阵其实就是一个线性变换,因为一个矩阵乘以一个向量后得到的向量,其实就相当于将这个向量进行了线性变换。   当矩阵是高维的情况下,那么这个矩阵就是高维空间下的一个线性变换,这个线性变化可能没法通过图片来表示,但是可以想象,这个变换也同样有很多的变换方向, 我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。 我们利用这前N个变化方向,就可以近似这个矩阵(变换)。也就是之前说的: 提取这个矩阵最重要的特征。 总结一下,特征值分解可以得到特征值与特征向量,

【推荐系统实践-02】利用用户行为数据(协同过滤)

喜夏-厌秋 提交于 2020-01-12 05:14:19
项亮老师的《推荐系统实践》学习笔记​。​ 目录 用户行为数据简介 用户行为分析 用户活跃度和物品流行度的分布 用户活跃度和物品流行度的关系 基于邻域的算法 基于用户的协同过滤算法 基于物品的协同过滤算法 UserCF和ItemCF的比较 隐语义模型 基于图的模型 为了让推荐结果符合用户口味,我们需要深入了解用户。 基于用户行为分析的推荐算法是个性化推荐系统的重要算法,学术界一般将这种类型的算法称为协同过滤算法。顾名思义,协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。 1、用户行为数据简介 用户行为数据在网站上最简单的存在形式就是日志。网站在运行过程中都产生大量原始日志(raw log),并将其存储在文件系统中。很多互联网业务会把多种原始日志按照用户行为汇总成会话日志(session log),其中每个会话表示一次用户行为和对应的服务。 会话日志通常存储在分布式数据仓库中,这些日志记录了用户的各种行为,如在电子商务网站中这些行为主要包括网页浏览、购买、点击、评分和评论等。 用户行为在个性化推荐系统中一般分两种——显性反馈行为(explicit feedback)和隐性反馈行为(implicit feedback)。显性反馈行为包括用户明确表示对物品喜好的行为

SVD分解理论

谁都会走 提交于 2020-01-11 03:58:47
## 矩阵SVD分解的理论基础 首先,我们先说明什么是矩阵的奇异值分解(single value decomposition),简称SVD。 给定一个矩阵 A ∈ R m × n A \in R^{m \times n} A ∈ R m × n , 设它的秩为r,则它具有以下的分解形式 A m × n = U m × m Σ m × n V n × n T A_{m \times n} = U_{m \times m} \Sigma_{m \times n} V_{n \times n}^T A m × n ​ = U m × m ​ Σ m × n ​ V n × n T ​ 其中,U是正交矩阵,其列向量是 A A T AA^T A A T 的单位特征向量,V 也是正交矩阵,其列向量是对应的 A T A A^TA A T A 的单位特征向量, Σ \Sigma Σ 具有下述的形式 Σ = ( Σ 1 O O O ) \Sigma = \left( \begin{array}{cc} \Sigma_1 & O \\ O & O\end{array} \right) Σ = ( Σ 1 ​ O ​ O O ​ ) 且 Σ 1 = d i a g ( σ 1 , σ 2 , … , σ r ) \Sigma_1 = diag(\sigma_1,\sigma_2,\ldots,

降维技术2-线性判别分析(LDA)

三世轮回 提交于 2020-01-10 23:40:41
线性判别分析(Linear Discriminant Analysis),简称LDA,是一种经典的线性学习方法。在二分类问题上最早由Fisher提出,也称"Fisher判别分析"。 在主成分分析原理总结中,我们对降维算法PCA进行了总结。这里的LDA是另一种经典的的降维算法。使用PCA进行降维,我们没有将类别考虑进去,属于无监督学习。而LDA是一种监督学习的降维技术,即它的每个样本是有类别输出的。 LDA的思想 给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近,异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。 用一句话概括就是:投影后类内方差最小,类间方差最大。 瑞利商与广义瑞利商(Rayleigh quotient) 瑞利商定义:瑞利商是指这样的函数 \(R(A,x)\) : \[R(A,x)=\dfrac{x^HAx}{x^Hx}\] 其中 \(x\) 为非零向量,而A为 \(n\times n\) 的Hermitan矩阵。所谓的Hermitan矩阵就是它的共轭转置等于它本身,属于推广的对称矩阵,即 \(A^H=A\) .如果A是实对称阵, \(A^T=A\) 即为Hermitan矩阵。 瑞利商 \(R(A,x)\) 有 一个非常重要的性质,即它的最大值等于矩阵A的最大特征值

NMF: non-negative matrix factorization.

让人想犯罪 __ 提交于 2020-01-10 21:58:34
1. 矩阵分解可以用来解决什么方法, 以及how? 利用矩阵分解来解决实际问题的分析方法很多,如 PCA(主成分分析)、ICA(独立成分分析)、SVD(奇异值分解)、VQ(矢量量化) 等。在所有这些方法中,原始的大矩阵V被近似分解为低秩的V=WH形式。这些方法的共同特点是,因子W和H中的元素可为正或负,即使输入的初始矩阵元素是全正的,传统的秩削减算法也不能保证原始数据的非负性。在数学上,从计算的观点看,分解结果中存在负值是正确的,但负值元素在实际问题中往往是没有意义的。例如图像数据中不可能有负值的像素点;在文档统计中,负值也是无法解释的。 2. NMF NMF的基本思想可以简单描述为:对于任意给定的一个非负矩阵A,NMF算法能够寻找到一个非负矩阵U和一个非负矩阵V,使得满足 ,从而将一个非负的矩阵分解为左右两个非负矩阵的乘积。 分解前后可理解为:原始矩阵 的列向量是对左矩阵 中所有列向量的加权和,而权重系数就是右矩阵对应列向量的元素,故称 为基矩阵, 为系数矩阵。一般情况下 的选择要比 小,即满足 ,这时用系数矩阵代替原始矩阵,就可以实现对原始矩阵进行降维,得到数据特征的降维矩阵,从而减少存储空间,减少计算机资源。 other documentations: NMF 非负矩阵分解 -- 原理与应用 Supplementary knowledge 1. matrix rank矩阵的秩

Spark ALS算法理解

六月ゝ 毕业季﹏ 提交于 2020-01-10 11:01:23
ALS算法 ALS的意思是交替最小二乘法(Alternating Least Squares),它只是是一种优化算法的名字,被用在求解spark中所提供的推荐系统模型的最优解。spark中协同过滤的文档中一开始就说了,这是一个基于模型的协同过滤(model-based CF),其实它是一种近几年推荐系统界大火的隐语义模型中的一种。隐语义模型又叫潜在因素模型,它试图通过数量相对少的未被观察到的底层原因,来解释大量用户和产品之间可观察到的交互。操作起来就是通过降维的方法来补全用户-物品矩阵,对矩阵中没有出现的值进行估计。基于这种思想的早期推荐系统常用的一种方法是SVD(奇异值分解)。该方法在矩阵分解之前需要先把评分矩阵R缺失值补全,补全之后稀疏矩阵R表示成稠密矩阵R',然后将R’分解成如下形式: 然后再选取U中的K列和V中的S行作为隐特征的个数,达到降维的目的。K的选取通常用启发式策略。 这种方法有两个缺点,第一是补全成稠密矩阵之后需要耗费巨大的存储空间,在实际中,用户对物品的行为信息何止千万,对这样的稠密矩阵的存储是不现实的;第二,SVD的计算复杂度很高,更不用说这样的大规模稠密矩阵了。所以关于SVD的研究很多都是在小数据集上进行的。 隐语义模型也是基于矩阵分解的,但是和SVD不同,它是把原始矩阵分解成两个矩阵相乘而不是三个。 现在的问题就变成了确定X和Y ,我们把X叫做用户因子矩阵