矩阵分解

1.矩阵分解过程

尴尬的很,不会调整图片旋转,该图片是对矩阵分解的实现过程的理解,代码参考链接:https://github.com/zhangqianjin/recommender-system/tree/master/matrix-factorization

                                                                                                觉得有用麻烦点个赞~~~~~~~~~~~~~~

2.下面是通过adagrad求梯度的线性回归参数迭代过程,关键在于知道adagrad的公式,以及对损失函数求导得到梯度的公式,损失函数用的是平方误差损失,求导过程如下绿色笔迹(不好意思,下图中的adagrad的公式都错了,学习率对应的部分前面应是减号)

两个实现过程的区别在于:前者通过对损失设置阈值来停止迭代,而后者。。。。。。。(有待思考两者的区别)

3.奇异值分解(SVD分解)

本来是想找python代码的实现来理解的,但是没有找到,只找到对其原理的理解,下面是循序渐进的对其理解的参考链接:

1)入门理解 https://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html  

      收获:svd这种奇异值分解可以从原数据A(m*n维)提取r个最优特征,分解为三个矩阵相乘:A=U∑V 其中∑是对角阵(特征值),我们只取前r个最优特征,得到新的矩阵乘积的表示,V为右奇异矩阵,U为左奇异矩阵,分别表示原本m*n元素的特征向量。即提取原矩阵A的重要特征。(U提取A的行表示的含义的特征,V提取提取A的列表示的含义的特征)

2)为什么称V为右奇异矩阵,U为左奇异矩阵?

https://blog.csdn.net/zhuiqiuk/article/details/67633477  该链接进行了推导

 3)潜在语义索引LSI在得到主题时应用了svd分解

     https://www.cnblogs.com/pinard/p/6805861.html

    该文档讲解很详细,应用的话这是我自己在做主题模型时候写的代码:

lsi_model = models.LsiModel(corpus_tfidf, id2word=dictionary, num_topics=5)
print(lsi_model.print_topics(num_topics=5,num_words=4))

觉得有用麻烦点个赞~~~~~~~~~~~~~~

原文地址:https://www.cnblogs.com/kjkj/p/10096841.html