机器学习——推荐系统

(一)SVD原理分析

人能够对一些事物的重要特征做抽象提取,奇异值分解(Singular Value Decomposition,SVD正是机器抽象提取一些事物重要特征的方法。利用SVD, 可使用小得多的数据集来表示原始数据集,这样会去除噪声数据和冗余信息。

最早的SVD应用之一是信息检索。将利用SVD的方法称为隐性语义索引(Latent Semantic Indexing,LSI)或隐性语义分析(Latent Semantic Analysis,LSA)。

SVD的另一个应用是推荐系统。简单版本的推荐系统能计算项或人之间的相似度。更先进的方法则先利用SVD从数据中构建一个主题空间,然后再在该空间下计算其相似度。

矩阵分解
在很多情况下,数据中的一小段携带了数据集中的大部分信息,而其他信息要么是噪声,要么就是毫不相关的信息。矩阵分解可将原始矩阵表示成新的易于处理的形式,新形式是两个或多个矩阵的乘积。

不同的矩阵分解技术具有不同的性质,其中有些更适合于某个应用,有些则更适合于其他应用。最常见的一种矩阵分解技术就是SVD。SVD将原始的数据集矩阵Data分解成三个矩阵 U U U Σ Σ Σ V T V^{T} VT。如果原始矩阵Data是m行n列,则有如下等式:
D a t a m × n = U m × m Σ m × n V n × n T Data_{m\times n}=U_{m\times m}\Sigma _{m\times n}V_{n\times n}^{T} Datam×n=Um×mΣm×nVn×nT

上述分解中会构建出一个矩阵 Σ Σ Σ,该矩阵只有对角元素,其他元素均为0。另一个惯例就是, Σ Σ Σ的对角元素是从大到小排列的。这些对角元素称为奇异值(Singular Value),它们对应了原始数据集矩阵Data的奇异值。奇异值和特征值时有关系的。这里的奇异值就是矩阵 D a t a ∗ D a t a T Data∗Data^{T} DataDataT特征值的平方根。

矩阵 Σ Σ Σ只有从大到小排列的对角元素。在科学和工程中,一致存在这样一个普遍事实:在某个奇异值的数目(r个)之后,其他的奇异值都置为0。这就意味着数据集中仅有r个重要特征,而其余特征则都是噪声或冗余特征。

利用Python实现SVD
NumPy由一个称为linalg的线性代数工具箱,利用此工具箱可实现如下矩阵的SVD处理:

from numpy import *
U,Sigma,VT=linalg.svd([[1,1],[7,7]])
U

array([[-0.14142136, -0.98994949],
[-0.98994949, 0.14142136]])

Sigma

array([1.00000000e+01, 2.82797782e-16])

VT

array([[-0.70710678, -0.70710678],
[ 0.70710678, -0.70710678]])

接下来在一个更大的数据集上进行更多的分解:

def loadExData() :
    return [[1, 1, 1, 0, 0],
            [2, 2, 2, 0, 0],
            [1, 1, 1, 0, 0],
            [5, 5, 5, 0, 0],
            [1, 1, 0, 2, 2],
            [0, 0, 0, 3, 3],
            [0, 0, 0, 1, 1]]
import svdRec as svdRec
Data=svdRec.loadExData()
U,Sigma,VT=linalg.svd(Data)
Sigma

array([9.72140007e+00, 5.29397912e+00, 6.84226362e-01, 4.11502614e-16,
1.36030206e-16])

前三个数据比其他的值大很多,后两个值在不同机器上结果可能会稍有差异,但数量级差不多。于是,我们可将后两个值去掉。原始数据集可用如下结果来近似:
D a t a m × n = U m × 3 Σ 3 × 3 V 3 × n T Data_{m\times n}=U_{m\times 3}\Sigma _{3\times 3}V_{3\times n}^{T} Datam×n=Um×3Σ3×3V3×nT

重构原始矩阵,首先构建一个3x3的矩阵Sig3:

Sig3=mat([[Sigma[0], 0, 0],[0, Sigma[1], 0],[0, 0, Sigma[2]]])

由于Sig3仅为3x3的矩阵,因而只需使用矩阵U的前3列和VT的前三行。为了在Python中实现这一点,输入如下命令:

U[:,:3]*Sig3*VT[:3,:]

matrix([[ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
7.75989921e-16, 7.71587483e-16],
[ 2.00000000e+00, 2.00000000e+00, 2.00000000e+00,
3.00514919e-16, 2.77832253e-16],
[ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
2.18975112e-16, 2.07633779e-16],
[ 5.00000000e+00, 5.00000000e+00, 5.00000000e+00,
3.00675663e-17, -1.28697294e-17],
[ 1.00000000e+00, 1.0

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
一、机器学习推荐系统课程简介伴随着大数据时代的到来,作为发掘数据规律的重要手段,机器学习已经受到了越来越多的关注。而作为机器学习算法在大数据上的典型应用,推荐系统已成为各行业互联网公司营销体系中不可或缺的一部分,而且已经带来了真实可见的收益。目前,推荐系统机器学习已经成为各大公司的发力重点,众多知名公司(如亚马逊、netflix、facebook、阿里巴巴、京东、腾讯、新浪、头条等)都在着眼于将蕴含在庞大数据中的宝藏发掘出来,懂机器学习算法的大数据工程师也成为了新时代最紧缺的人才。尚硅谷精心打造出了机器学习推荐系统课程,将机器学习理论与推荐系统项目实战并重,对机器学习推荐系统基础知识做了系统的梳理和阐述,并通过电影推荐网站的具体项目进行了实战演练。为有志于增加大数据项目经验、扩展机器学习发展方向的工程师提供最好的学习平台。二、课程内容和目标本课程主要分为两部分,机器学习推荐系统基础,与电影推荐系统项目实战。第一部分主要是机器学习推荐系统基础理论的讲解,涉及到各种重要概念和基础算法,并对一些算法用python做了实现;第二部分以电影网站作为业务应用场景,介绍推荐系统的开发实战。其中包括了如统计推荐、基于LFM的离线推荐、基于模型的实时推荐、基于内容的推荐等多个模块的代码实现,并与各种工具进行整合互接,构成完整的项目应用。通过理论和实际的紧密结合,可以使学员对推荐系统这一大数据应用有充分的认识和理解,在项目实战中对大数据的相关工具和知识做系统的回顾,并且可以掌握基本算法,入门机器学习这一前沿领域,为未来发展提供更多的选择,打开通向算法工程师的大门。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值