ML之DR之SVD:SVD算法相关论文、算法过程、代码实现、案例应用之详细攻略 SVD算法相关论文奇异值分解Singular Value Decomposition:简称SVD,特征分解的广义化,是一种提取特征信息的方法。 SVD算法过程1、根据Andrew Gibiansky 写的关于 SVD 的文章中代码 http://andrew./blog/mathematics/cool-linear-algebra-singular-value-decomposition/ 奇异值top不同个数的应用:可以发现,如果我们根据大小排序这些奇异值(矩阵 Σ 的值),那么前 50 个奇异值将包含整个矩阵 Σ 的大小的 85%。根据这个事实,我们可以丢弃后面的 250 个值(即将它们设为 0),仅保留这张小狗图像的「rank(秩)50」版本。值的数量差不多少了 5 倍,但质量却下降很少。上述计算的原因是当我们执行 UΣ'V 运算时,U 和 V 矩阵中的一部分因为乘 0 也被丢弃(其中 Σ' 是 Σ 的修改后版本,其中仅包含了前面的 30 个值)。 低秩矩阵的近似应用:图像压缩,其实80与原图相差不是很大。SVD中的奇异值的个数分别为1、10、80。 1、公式的推导2、SVD算法两步过程SVD代码实现
SVD的案例应用1、SVD的推荐案例假定Ben、Tom、John、Fred对6种产品进行了评价,评分越高,代表对该产品越喜欢。0表示未评价。 1、进行SVD分解并提取前2个特征 (1)、产品矩阵的压缩、用户矩阵的压缩 2、利用SVD进行新用户的个性化推荐 思路:对于新用户,如何对其做个性化推荐呢?将A扩展后重新计算SVD,然后聚类用户? (1)、假设有个Bob的新用户,对6个产品的评分为(5,5,0,0,0,5)T,通过上边的公式计算出Bob的特征点坐标。 (2)、通过计算Bob和现有用户的距离进行聚类:计算余弦距离(一定意义下即相关系数),与其最近的是Ben,因此,可以给Bob推荐Ben喜欢的S5、S3。 |
|