代码及数据集下载:SVD
SVD(Singular Value Decomposition)主要用来进行数据降维、特征提取、消除数据噪声、消去数据中的冗余信息、数据压缩等。用于提高机器学习算法的效果,或压缩数据存储空间。利用SVD能够用小的多的数据集表示原始数据,其实质是去除了噪声以及冗余项。SVD常用于隐形语义检索的搜索系统(LSI)、隐性语义分析(LSA)、推荐引擎、图像压缩。这里主要通过推荐引擎的编写,讲述SVD的作用。
—推荐引擎
推荐系统是通过计算项与项之间的相似度而实现。利用SVD可以构建出一个主题空间,在该空间下计算器相似度将更加准确。
SVD的理论在博文机器学习中特征值分解与奇异值分解的区别及应用中查看。
假定数据行为不同的人,列为菜品,元素为对应人对该菜品的打分,0表示没打分。
numpy的库函数 U,sigma,VT=numpy.linalg.svd() 可以方便的实现奇异值分解。
sigma中奇异值的数量选取方法有以下几种:
保留90%的能量信息。
用户自定义
协同过滤:协同过滤是通过将用户和其他用户或物品与其他物品的数据进行对比来实现推荐的。若两个物品的相似度非常高,则可以将其推荐给用户。
相似度计算:
欧氏距离
A = [a1,a2,a3],B=[b1,b2,b3]
相似度