- 浏览: 97455 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
jyjsjd:
请教博主这个ChineseTokenizer()你是怎么写的, ...
使用WVTool进行文本分类 -
superclay:
能不能发个indexwriter indexsearch ...
结合ehcache缓存对lucene使用单例模式搜索 -
strayly:
我采用和ehcache缓存结合使用单例模式
使用ehcache ...
lucene搜索优化(转)
http://www.ryanzhang.info/archives/2594
基于内容的推荐系统的核心思想是:推荐给用户 x 那些与 x 给出高评价的物品近似的物品。
具体方法为:
为物品简历“档案” item profiles
根据用户对物品的打分建立用户“档案” user profiles
推荐时,根据用户档案与物品档案之间的相似程度进行推荐
用之前的文档做例子,TF-IDF矩阵可以视为一个item profiles,
例子中的4个文档是四个待推荐给用户的物品,分别对应矩阵的4列,矩阵的每一行代表一个词语,矩阵的元素是TF-IDF值,代表的是各个词语在文档中占得重要程度。
如果推荐的物品是电影,那么可以每一列代表一个电影,每一行代表一个演员或者一个导演,或者电影的一种风格,元素值为1或0,代表电影中是否有该演员出演。同样的也需要对该二元矩阵进行标准化处理,例如:每一行的元素都除以该行的总和。
下面来了4个用户,分别对这四个物品中的一个至多个进行打分,分值在0~5范围内,每一列代表一个用户,每一行代表一篇文档,用我们上面item profile的矩阵与其做点积,获得的矩阵便是用户档案。可以理解为各个用户对文档的各个成分的喜好程度,如果是电影推荐的例子,则可以理解为是用户对各个演员、导演或者风格的喜好。
推荐时,我们需要一个距离的测量,来计算用户档案 i 与物品档案 x 之间的相似程度,例如:
U(X,I)=cos(a)=X·I/normal(X)/normal(I)
另外,根据item profile我们可以计算物品对之间的相似度(例如同上面一样的使用cosine距离),因而,可以找出用户打分很高的物品,然后找到与该物品相似度较高的物品作为推荐。
例如有三部电影,以及一位用户对3部电影的打分,计算两两电影之间的近似程度。矩阵的每一行代表一部电影,前5列代表电影的特征(演员、导演一类),最后一列代表用户A的评分。计算相似度时我们将用户的打分也算入其中,并且乘以一个系数a:
alpha is 0
Distance between AB is0.841068670568
Distance between AC is1.57079632679
Distance between BC is1.15026199151
alpha is 0.5
Distance between AB is0.764558797186
Distance between AC is1.27795355507
Distance between BC is0.841068670568
alpha is 1
Distance between AB is0.559880567744
Distance between AC is0.905600271782
Distance between BC is0.555121167557
alpha is 2
Distance between AB is0.329838880928
Distance between AC is0.525285295294
Distance between BC is0.309193320943
基于内容的推荐系统的核心思想是:推荐给用户 x 那些与 x 给出高评价的物品近似的物品。
具体方法为:
为物品简历“档案” item profiles
根据用户对物品的打分建立用户“档案” user profiles
推荐时,根据用户档案与物品档案之间的相似程度进行推荐
用之前的文档做例子,TF-IDF矩阵可以视为一个item profiles,
from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.preprocessing import normalize from scipy.sparse import csr_matrix items = ['this is the first document, this really is', 'nothing will stop this from been the second doument, second is not a bad order', 'I wonder if three documents would be ok as an example, example like this is stupid', 'ok I think four documents is enough, I I I I think so.'] # will simply using tfidf as the item - profile # row = item(documents) column = feature(term) vectorizer = CountVectorizer(min_df=1) counts = vectorizer.fit_transform(items) # column = item(documents) row = feature(term) transformer = TfidfTransformer() tfidf = transformer.fit_transform(counts).transpose() print shape(tfidf) (32,4)
例子中的4个文档是四个待推荐给用户的物品,分别对应矩阵的4列,矩阵的每一行代表一个词语,矩阵的元素是TF-IDF值,代表的是各个词语在文档中占得重要程度。
如果推荐的物品是电影,那么可以每一列代表一个电影,每一行代表一个演员或者一个导演,或者电影的一种风格,元素值为1或0,代表电影中是否有该演员出演。同样的也需要对该二元矩阵进行标准化处理,例如:每一行的元素都除以该行的总和。
下面来了4个用户,分别对这四个物品中的一个至多个进行打分,分值在0~5范围内,每一列代表一个用户,每一行代表一篇文档,用我们上面item profile的矩阵与其做点积,获得的矩阵便是用户档案。可以理解为各个用户对文档的各个成分的喜好程度,如果是电影推荐的例子,则可以理解为是用户对各个演员、导演或者风格的喜好。
# user's rating for this four documents # cloumn = user row = items(documents) ratings = csr_matrix([[5, 0, 0, 2], [3, 3, 0, 0], [2, 1, 1, 1], [0, 0, 1, 1]], dtype = u'double') # normalize usersn = ratings - ratings.mean(0) userprofile = tfidf.dot(usersn) userprofile = csr_matrix(userprofile)
推荐时,我们需要一个距离的测量,来计算用户档案 i 与物品档案 x 之间的相似程度,例如:
U(X,I)=cos(a)=X·I/normal(X)/normal(I)
# smaller score suggest more similarity between user and item for i in range(4): # iterative over 4 users scores = [] u = userprofile[:,i] for j in range(4): # iterative over 4 documents v = tfidf[:,j] scores.append(sum(u.transpose().dot(v).todense())/np.linalg.norm(u.todense())/np.linalg.norm(v.todense())) print "document recommended for user {0} is document number {1}".format(i+1, scores.index(max(scores))+1) document recommended for user 1 is document number 1 document recommended for user 2 is document number 2 document recommended for user 3 is document number 4 document recommended for user 4 is document number 1
另外,根据item profile我们可以计算物品对之间的相似度(例如同上面一样的使用cosine距离),因而,可以找出用户打分很高的物品,然后找到与该物品相似度较高的物品作为推荐。
例如有三部电影,以及一位用户对3部电影的打分,计算两两电影之间的近似程度。矩阵的每一行代表一部电影,前5列代表电影的特征(演员、导演一类),最后一列代表用户A的评分。计算相似度时我们将用户的打分也算入其中,并且乘以一个系数a:
avals = [0,0.5,1,2] for aval in avals: df =DataFrame([[1,0,1,0,1,2],[1,1,0,0,1,6],[0,1,0,1,0,2]], index = ['A', 'B', 'C']) df[5] = df[5]*aval a = df.loc['A'] b = df.loc['B'] c = df.loc['C'] ab = dot(a,b)/norm(a)/norm(b) ac = dot(a,c)/norm(a)/norm(c) bc = dot(b,c)/norm(c)/norm(b) print 'alpha is {0}'.format(aval) print 'AB {} AC {} BC {}'.format(arccos(clip(ab, -1, 1)),arccos(clip(ac, -1, 1)),arccos(clip(bc, -1, 1)))
alpha is 0
Distance between AB is0.841068670568
Distance between AC is1.57079632679
Distance between BC is1.15026199151
alpha is 0.5
Distance between AB is0.764558797186
Distance between AC is1.27795355507
Distance between BC is0.841068670568
alpha is 1
Distance between AB is0.559880567744
Distance between AC is0.905600271782
Distance between BC is0.555121167557
alpha is 2
Distance between AB is0.329838880928
Distance between AC is0.525285295294
Distance between BC is0.309193320943
发表评论
-
sklearn聚类之kmeans以及增量聚类
2019-07-11 14:47 1206使用kmeans聚类时,计算量往往都比较大,当有新的数据要添加 ... -
spark进行svd降维和kmeans聚类
2019-07-05 16:36 843import jieba import jieba.analy ... -
spark 的 itemcf推荐
2019-05-29 16:21 0#-*-coding:utf-8-*- ''' Cr ... -
卡方检验提取特征来对文本分类
2019-05-05 17:30 927count_vect = CountVectorizer( ... -
计算文本词频进行聚类
2019-05-05 17:04 472import jieba import jieba.an ... -
sklearn文本聚类
2019-05-05 17:04 1import jieba import jieba.an ... -
spark之word2vec使用(python)
2018-08-15 09:57 2059from pyspark import SparkConf, ... -
spark2.3聚类算法lda代码(python)
2018-08-15 09:49 1586spark的lda有两个一个是mllib下 一个是ml下的,下 ... -
linux 编译安装 Python3.6 (保留自带Python2)
2017-07-21 15:55 623yum install wget yum install zl ... -
TensorFlow 的SSE avx fma安装
2017-05-06 19:22 982W tensorflow/core/platform/cpu_ ... -
(转载)Seq2SeqModel参数
2017-05-05 16:15 1686训练数据和预处理 数 ... -
(转载)基于CRF的中文分词
2017-04-28 17:27 1047CRF简介 Conditional Random Fi ... -
(转载)jieba全应用入门
2017-03-22 09:14 533# coding: utf-8 # ###jieba特 ... -
(转载)汉语词性对照表[北大标准/中科院标准]
2017-03-22 09:15 471词性编码 词性名称 注 解 Ag ... -
(转)python的nltk中文使用和学习资料汇总帮你入门提高
2017-03-06 10:19 630转自:http://blog.csdn.net/huy ... -
windows下python中运用libsvm的配置(转载)
2016-12-13 14:03 669转载 http://blog.sina.com.cn/ ... -
pyspark在windows下java.net.SocketException: Connection reset by peer 错误
2016-12-05 16:12 2184pyspark在windows加载数据集 训练模型出现 以下错 ... -
在eclipse上搭建spark的java开发环境
2016-12-05 09:52 906首先安装好spark后 设置环境变量SPARK_HOME=d: ... -
用Spark ALS通过预测推荐电影(python)
2016-12-02 11:34 3627#!/usr/bin/env python # codi ... -
Spark ALS推荐系统简单例子(python)
2016-11-30 10:55 5219采用MovieLens 100k数据集 http://file ...
相关推荐
python基于django的图书推荐系统源码 python基于django的图书推荐系统源码 python基于django的图书推荐系统源码 python基于django的图书推荐系统源码 python基于django的图书推荐系统源码 python基于django...
基于python的动漫推荐系统的设计与实现代码 基于python的动漫推荐系统的设计与实现代码 基于python的动漫推荐系统的设计与实现代码 基于python的动漫推荐系统的设计与实现代码 基于python的动漫推荐系统的设计与实现...
基于协同过滤的电影推荐系统python代码+数据库,基于协同过滤的电影推荐系统python代码+数据库基于协同过滤的电影推荐系统python代码+数据库基于协同过滤的电影推荐系统python代码+数据库基于协同过滤的电影推荐系统...
基于深度学习的分类 python代码-基于深度学习的英文文本分类研究 python代码-基于深度学习的英文文本分类研究 python代码-基于深度学习的英文文本分类研究
推荐系统分为很多类,包括基于内容的推荐系统、协同过滤推荐系统、基于知识的推荐系统和混合推荐系统等。 ### 2. 协同过滤推荐系统 在文件中提到的推荐系统很可能是基于协同过滤的。协同过滤推荐是推荐系统中常用...
基于django的职工管理系统python源码-课程设计.zip基于django的职工管理系统python源码-课程设计.zip基于django的职工管理系统python源码-课程设计.zip基于django的职工管理系统python源码-课程设计.zip基于django的...
基于python实现的简单推荐系统(含完整代码).pdf
python web开发,基于flask的练手项目---文件上传下载的管理系统的设计与实现python web开发,基于flask的练手项目---文件上传下载的管理系统的设计与实现python web开发,基于flask的练手项目---文件上传下载的管理...
基于Python+OpenCV-Python+PyQt5实现的基础的图像检索源代码(大作业&课设),含有代码注释,满分大作业资源,新手也可看懂,期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为课程...
在大数据推荐系统中,Python用于编写数据预处理、模型训练和结果展示等各个环节的代码。例如,Pandas库用于数据清洗和分析,Numpy提供高效的数值计算,Scikit-learn则用于实现各种机器学习算法。 二、大数据处理 ...
"python3.7-arm64安装包.deb" 是一个专门为这种架构编译的Python 3.7版本的安装包,以DEB格式提供,这是Debian和Ubuntu等基于Debian的Linux发行版使用的软件包管理系统。 DEB包是一种包含软件及其依赖关系的文件,...
python基于协同过滤推荐算法的电影推荐系统源码 python基于协同过滤推荐算法的电影推荐系统源码 python基于协同过滤推荐算法的电影推荐系统源码 python基于协同过滤推荐算法的电影推荐系统源码 python基于协同过滤...
基于python开发的书籍推荐系统基于python开发的书籍推荐系统基于python开发的书籍推荐系统基于python开发的书籍推荐系统基于python开发的书籍推荐系统基于python开发的书籍推荐系统基于python开发的书籍推荐系统基于...
基于纯视觉端到端深度学习的自动驾驶系统python代码.zip基于纯视觉端到端深度学习的自动驾驶系统python代码.zip基于纯视觉端到端深度学习的自动驾驶系统python代码.zip基于纯视觉端到端深度学习的自动驾驶系统python...
Python基于Django的图书管理系统源码 Python基于Django的图书管理系统源码 Python基于Django的图书管理系统源码 Python基于Django的图书管理系统源码 Python基于Django的图书管理系统源码 Python基于...
python期末大作业-基于WebRTC的视频会议系统。已经通过的高分项目。python期末大作业-基于WebRTC的视频会议系统。已经通过的高分项目。python期末大作业-基于WebRTC的视频会议系统。已经通过的高分项目。python期末...
本项目“Python-基于Spark的电影推荐系统”旨在利用Python的灵活性和Spark的大数据处理能力,构建一个完整的电影推荐系统,涵盖数据爬取、网站展示、后台管理和推荐算法等多个环节。 一、Python Web爬虫 在项目开始...
10. **通用推荐系统代码** (python推荐系统代码recommendation-master):可能包含了多种推荐算法的实现,如基于内容的、协同过滤的,以及深度学习的推荐模型,是学习和实践推荐系统的基础资源。 通过这些项目,...
【压缩包子文件的文件名称列表】:基于PythonPYQT5的动物识别专家系统(人工智能实验) 这个项目可能包含以下组件: 1. `animal_identification.py` - 主程序文件,实现专家系统的逻辑和PYQT5界面。 2. `knowledge_...
【基于Python的智能门禁系统】是一种利用现代技术实现安全控制的创新解决方案。该系统结合了计算机视觉、微控制器技术和物联网(IoT)原理,旨在提高住宅或商业场所的安全性。核心部分是通过Python编程语言在树莓派...