初识推荐系统

简介: 本文摘录了大量 机器学习算法原理与编程实践_郑捷著_电子工业出版社 的原文。源码:机器学习算法原理与编程实践wiki推荐系统是一种信息过滤系统,用于预测用户对物品的「评分」或「偏好」。精彩推荐:《推荐系统实战》- 笔记与思考Surprise——Python的推荐系统库(1)存在问题(背景)关键词的信息量不足,基于关键词的检索在很多情况下不能精准和深刻地反映用户的潜在需求;通用的搜索引擎只有而且必须对用户提供尽量丰富而无差别的信息,这样才能应对不同种类的需求,以及需求的变换。

本文摘录了大量 机器学习算法原理与编程实践_郑捷著_电子工业出版社 的原文。
源码:机器学习算法原理与编程实践

wiki

推荐系统是一种信息过滤系统,用于预测用户对物品的「评分」或「偏好」。

精彩推荐:

存在问题(背景)

  • 关键词的信息量不足,基于关键词的检索在很多情况下不能精准和深刻地反映用户的潜在需求;
  • 通用的搜索引擎只有而且必须对用户提供尽量丰富而无差别的信息,这样才能应对不同种类的需求,以及需求的变换。

因此,如何平衡搜索的广度与深度(精准程度)是推荐系统所要解决的主要问题。

推荐系统着眼于需求二字:

  • 需求的定位;
  • 需求的个性化;
  • 需求的模糊性衍生。

推荐系统的应用

  • 把包销售:经常一起购买的产品;
  • 协同过滤:购买了此产品的顾客同时也购买的产品;(除了促销之外,也可以帮助用户定位购买需求)
  • 用户的商品评论列表。

推荐系统通过研究用户的兴趣偏好,由智能算法进行个性化的计算,发现用户的潜在兴趣点,从而引导用户发现需求。

推荐系统的架构

img_bbd4e5d881b178c0429992aad3a288b0.png

捕获.PNG-233.8kB
捕获1.PNG-512.6kB

前两种方法较为简单,应用也不广泛。

协同过滤(Collaborative Filtering,CF)

推荐模型:

  • 基于用户的推荐技术:找到具有相似品味的人所喜欢的物品——User CF;
  • 基于物品的推荐技术:从一个人喜欢的物品中找出相似的物品——Item CF。

数据预处理

img_8310efd2fd3769d6567ff4aa1191991b.png

预处理策略:

  • 减噪
  • 归一化
  • 聚类(缩减计算量)

使用 Scikit-Learn 的 KMeans 聚类

img_93c2efc1137156e2dc956e9952a3342b.png

KMeans 的基本原理

给定要划分的数目 \(k\)

  • 首先创建一个初始划分,随机选择 \(k\) 个对象,每个对象初始地代表了一个聚类中心。对于其他对象,根据其与各个聚类中心的距离,将它们赋给最近的簇。
  • 然后采用一种迭代的重定位技术,尝试通过对象在划分的簇之间移动来改进划分,直到聚类中心不发生变化为止。
    • 重定位技术:就是当有新的对象加入到簇中或已有对象离开簇时,重新计算聚类的平均值(作为聚类中心),然后对对象进行重新分配。
import os 
import pandas as pd

import sys
sys.path.append('E:/xinlib')
import chaos


root = 'D:/MLBook' + '/chapter04/testdata'
os.listdir(root)
['4k2_far.txt',
 'figure_0.png',
 'figure_1.png',
 'figure_2.png',
 'figure_3.png',
 'testSet.txt']

File2Table 的使用参考:机器学习的数学基础

T = chaos.File2Table(root)
for p in T.to_pandas('\t'):
    break
p.head()
0 1 2
0 1 2.7266 3.0102
1 1 3.1304 2.4673
2 1 3.0492 2.525
3 1 3.226 3.1649
4 1 2.7223 2.5713

参考在 Pandas 中更改列的数据类型特征列的数据类型转换方法。

p.dtypes
0    object
1    object
2    object
dtype: object
p[[1, 2]] = p[[1, 2]].astype(float)
p[[0]] = p[[0]].astype(int)
p.dtypes
0      int32
1    float64
2    float64
dtype: object
from sklearn.cluster import KMeans
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题

%pylab inline
Populating the interactive namespace from numpy and matplotlib
k = len(set(p[0]))
M = p[[1, 2]]
kmeans = KMeans(init='k-means++', n_clusters=k)
kmeans.fit(M)
KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,
    n_clusters=4, n_init=10, n_jobs=1, precompute_distances='auto',
    random_state=None, tol=0.0001, verbose=0)
ax = p.plot.scatter(x=1, y=0, color='DarkRed', label='feture1')
# 将之下这个 data 画在上一个 ax 上面
p.plot.scatter(x=2, y=0, color='LightGreen', label='feture2', ax=ax)
plt.show()

output_9_0.png-8.5kB

cluster_centers = pd.DataFrame(kmeans.cluster_centers_, columns=['cluster_centers_1', 'cluster_centers_2'])
cluster_centers
cluster_centers_1 cluster_centers_2
0 3.022117 6.007702
1 8.081695 7.975067
2 2.958321 2.985985
3 6.994380 5.054563
ax = p.plot.scatter(x=1, y=2, color='DarkBlue', label='数据', s=20)
cluster_centers.plot.scatter(x='cluster_centers_1', y='cluster_centers_2', color='LightGreen', label='聚类中心', ax=ax, s=70)
plt.show()

output_11_0.png-18.3kB

探寻有趣之事!
目录
相关文章
|
搜索推荐 算法
137 推荐系统是什么
137 推荐系统是什么
54 0
|
机器学习/深度学习 算法 搜索推荐
推荐算法介绍
推荐算法介绍
169 0
|
算法 搜索推荐 数据挖掘
139 常见的推荐算法
139 常见的推荐算法
64 0
|
算法 搜索推荐
推荐算法中需要注意的点
推荐算法中需要注意的点
48 0
|
机器学习/深度学习 搜索推荐 算法
基于协同过滤算法的电影推荐系统设计(二) - 推荐系统介绍(上)
基于协同过滤算法的电影推荐系统设计(二) - 推荐系统介绍(上)
473 0
基于协同过滤算法的电影推荐系统设计(二) - 推荐系统介绍(上)
|
搜索推荐 测试技术
推荐系统:协同过滤
可以根据产品元数据计算的,提供制定推荐的选择,推荐与用户过往购买过的产品相关性最相似的产品,今天我们来聊聊如何通过利用用户和产品之间的相似性提供建议的方法。 协同过滤是一种利用用户和产品之间的相似性提供建议的方法。协同过滤分析相似的用户或相似评级的产品,并根据此分析推荐用户。
188 0
|
人工智能 搜索推荐 算法
推荐系统 (协同过滤)
推荐系统 (协同过滤)
154 0
推荐系统 (协同过滤)
|
机器学习/深度学习 搜索推荐 算法
推荐系统干货总结【全】(二)
推荐系统干货总结【全】(二)
152 0
|
机器学习/深度学习 消息中间件 算法
为什么需要推荐系统
流量特点: 稀缺性:获取流量是有成本的,流量成本:
146 0
下一篇
无影云桌面