这篇文章主要是结合机器学习实战将推荐算法和SVD进行相应的结合
任何一个矩阵都可以分解为SVD的形式
其实SVD意义就是利用特征空间的转换进行数据的映射,后面将专门介绍SVD的基础概念,先给出python,这里先给出一个简单的矩阵,表示用户和物品之间的关系
这里我自己有个疑惑?
对这样一个DATA = U(Z)Vt
这里的U和V真正的几何含义 : 书上的含义是U将物品映射到了新的特征空间, V的转置 将 用户映射到了新的特征空间
下面是代码实现,同时SVD还可以用于降维,降维的操作就是通过保留值比较的奇异值
# -*- coding: cp936 -*-
'''
Created on Mar 8, 2011
@author: Peter
'''
from numpy import *
from numpy import linalg as la #用到别名
#这里主要结合推荐系统介绍SVD,所以这里的数据都可以看成是用户对物品的一个打分
def loadExData():
return[[0, 0, 0, 2, 2],
[0, 0, 0, 3, 3],
[0, 0, 0, 1, 1],
[1, 1, 1, 0, 0],
[2, 2, 2, 0, 0],
[5, 5, 5, 0, 0],
[1, 1, 1, 0, 0]]
def loadExData2():
return[[0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 5],
[0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 3],
[0,