1.矩阵分解
1.1 矩阵分解的作用
- . 矩阵填充(通过矩阵分解来填充原有矩阵,例如协同过滤的ALS算法就是填充原有矩阵)
- . 清理异常值与离群点
- . 降维、压缩
- . 个性化推荐
- . 间接的特征组合(计算特征间相似度)
1.2 矩阵分解的方法
- . 特征值分解。
- . PCA(Principal Component Analysis)分解,作用:降维、压缩。
- . SVD(Singular Value Decomposition)分解,也叫奇异值分解。
- . LSI(Latent Semantic Indexing)或者叫LSA(Latent Semantic Analysis),隐语义分析分解。
- . PLSA(Probabilistic Latent Semantic Analysis),概率潜在语义分析。PLSA和LDA都是主题模型,PLSA是判别式模型。
- . NMF(Non-negative Matrix Factorization),非负矩阵分解。非负矩阵分解能够广泛应用于图像分析、文本挖掘和语言处理等领域。
- . LDA(Latent Dirichlet Allocation)模型,潜在狄利克雷分配模型。LDA是一种主题模型,将文档集中每篇文档的主题以概率的形式给出,可以用于主题聚类或者文本分类,是生成式模型。LDA作为主题模型可以应用到很多领域,比如:文本情感分析、文本分类、个性化推荐、社交网络、广告预测等方面。
- . MF(Matrix Factorization)模型,矩阵分解模型。矩阵分解其实可以分为很多种:
- 。基本矩阵分解(Basic Matrix Factorization),basic MF分解。
。正则化矩阵分解(Regularized Matrix Factorization)。
。概率矩阵分解(Probabilistic Matrix Factorization),PMF。
。非负矩阵分解(Non-negative Matrix Factorization),NMF。
。正交非负矩阵分解(Orthogonal Non-negative Matrix Factorization)。
- . PMF(Probabilistic Matrix Factorization),概率矩阵分解。
- . SVD++
关于矩阵分解的方法大概就是上面这些。矩阵分解的主要应用是:降维、聚类分析、数据预处理、低维度特征学习、特征学习、推荐系统、大数据分析等。上面把主要的矩阵分解方法给列出来了,比较混乱,再给大家摆上一张矩阵分解发展的历史:
图1:矩阵分解发展历史
1.3 推荐学习的经典矩阵分解算法
矩阵分解的算法这么多,给大家推荐几个经典的算法来学习:
1) 经典的PCA、SVD是机器学习入门必学算法。
2)2003年提出的主题模型LDA,在当年提出的时候,也是大红大紫,现在也在广泛的应用,可以学习一下。
3)概率矩阵分解(PMF),主要应用到推荐系统中,在大规模的稀疏不平衡Netflix数据集上取得了较好的结果。
4)非负矩阵分解,也很重要。非负矩阵分解及其改进版本应用到很多领域中。
2. SVD具体介绍
2.1 特征值、特征向量、特征值分解
特征值分解和奇异值分解在机器学习中都是很常见的矩阵分解算法。两者有着很紧密的关系,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征。
1)特征值、特征向量
如果一个向量v是矩阵A的特征向量,将一定可以表示成下面的形式:
其中,λ是特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。
思考:为什么一个向量和一个数相乘的效果与一个矩阵和一个向量相乘的效果是一样的呢?
答案:矩阵A与向量v相乘,本质上是对向量v进行了一次线性变换(旋转或拉伸),而该变换的效果为常数λ乘以向量v。当我们求特征值与特征向量的时候,就是为了求矩阵A能使哪些向量(特征向量)只发生伸缩变换,而变换的程度可以用特征值λ表示。
2)特征值与特征向量的几何意义
一个矩阵其实就是一个线性变换,因为一个矩阵乘以一个向量后得到的向量,其实就相当于将这个向量进行了线性变换。比如说下面的这个矩阵:
它其实对应的线性变换是图2的形式:
图2:矩阵M的线性变换
因为这个矩阵M乘以一个向量(x,y)的结果是: