深度学习推荐系统实战
王喆
Roku资深机器学习工程师,推荐系统架构负责人,前Hulu高级研究员,《深度学习推荐系统》作者
新⼈⾸单¥19.9
2512 人已学习
课程目录
已更新 9 讲 / 共 35 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词|从0开始搭建一个深度学习推荐系统
免费
基础架构篇 (3讲)
01|深度学习推荐系统的经典技术架构长啥样?
02|Sparrow RecSys:我们要实现什么样的推荐系统?
03|深度学习基础:你打牢深度学习知识的地基了吗?
国庆策划 (2讲)
国庆策划 | 关于深度学习推荐系统,我有这些资料想推荐给你
国庆策划 | 深度学习推荐系统基础,你掌握了多少?
特征工程篇 (3讲)
04|特征工程:推荐系统有哪些可供利用的特征?
05|特征处理:如何利用Spark解决特征处理问题?
06|Embedding:所有人都在谈的Embedding技术到底是什么?
深度学习推荐系统实战
15
15
1.0x
00:00/00:00
登录|注册

05|特征处理:如何利用Spark解决特征处理问题?

王喆 2020-10-12
你好,我是王喆。
上节课,我们知道了推荐系统要使用的常用特征有哪些。但这些原始的特征是无法直接提供给推荐模型使用的,因为推荐模型本质上是一个函数,输入输出都是数字或数值型的向量。那么问题来了,像动作、喜剧、爱情、科幻这些电影风格,是怎么转换成数值供推荐模型使用的呢?用户的行为历史又是怎么转换成数值特征的呢?
而且,类似的特征处理过程在数据量变大之后还会变得更加复杂,因为工业界的数据集往往都是 TB 甚至 PB 规模的,这在单机上肯定是没法处理的。那业界又是怎样进行海量数据的特征处理呢?这节课,我就带你一起来解决这几个问题。

业界主流的大数据处理利器 -Spark

既然要处理海量数据,那选择哪个数据处理平台就是我们首先要解决的问题。如果我们随机采访几位推荐系统领域的程序员,问他们在公司用什么平台处理大数据,我想最少有一半以上会回答是 Spark。作为业界主流的大数据处理利器,Spark 的地位毋庸置疑。所以,今天我先带你了解一下 Spark 的特点,再一起来看怎么用 Spark 处理推荐系统的特征。
Spark 是一个分布式计算平台。所谓分布式,指的是计算节点之间不共享内存,需要通过网络通信的方式交换数据。Spark 最典型的应用方式就是建立在大量廉价的计算节点上,这些节点可以是廉价主机,也可以是虚拟的 docker container(Docker 容器)。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《深度学习推荐系统实战》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥19.9
立即订阅
登录 后留言

精选留言(5)

  • JustBuyIt
    Multiple编码
    顾名思义,Multiple编码特征将多个属性同时编码到一个特征中。在推荐场景中,单个用户对哪些物品感兴趣的特征就是一种Multiple编码特征,如,表示某用户对产品1、产品2、产品3、产品4是否感兴趣,则这个特征可能有多个取值,如用户A对产品1和产品2感兴趣,用户B对产品1和产品4感兴趣,用户C对产品1、产品3和产品4感兴趣,则用户兴趣特征为
    用户 UserInterests
    A [1, 2]
    B [1, 4]
    C [1, 3, 4]

    Multiple编码采用类似oneHot编码的形式进行编码,根据物品种类数目,展成物品种类数目大小的向量,当某个用户感兴趣时,对应维度为1,反之为0,如下
    用户 UserInterests
    A [1, 1, 0, 0]
    B [1, 0, 0, 1]
    C [1, 0, 1, 1]

    如何使用Multiple编码呢?
    我们将多个属性同时编码到同一个特征中,目的就是同时利用多个属性的特征。经过Multiple编码后的特征大小为[batch_size, num_items],记作U,构建物品items的Embedding矩阵,该矩阵维度为[num_items, embedding_size],记作V,将矩阵U和矩阵V相乘,我们就得到了大小为[batch_size, embedding_size]的多属性表示。
    参考资料:https://www.codeleading.com/article/97252516619/#_OneHot_19

    作者回复: 不错的文章,也推荐大家学习。

    2020-10-12
    2
  • JustBuyIt
    Normalizer、StandardScaler、RobustScaler、MinMaxScaler 都是用让数据无量纲化
    Normalizer: 正则化;(和Python的sklearn一样是按行处理,而不是按列[每一列是一个特征]处理,原因是:Normalization主要思想是对每个样本计算其p-范数,然后对该样本中每个元素除以该范数,这样处理的结果是使得每个处理后样本的p-范数(l1-norm,l2-norm)等于1。)针对每行样本向量:l1: 每个元素/样本中每个元素绝对值的和,l2: 每个元素/样本中每个元素的平方和开根号,lp: 每个元素/每个元素的p次方和的p次根,默认用l2范数。

    StandardScaler:数据标准化;(xi - u) / σ 【u:均值,σ:方差】当数据(x)按均值(μ)中心化后,再按标准差(σ)缩放,数据就会服从为均值为0,方差为1的正态分布(即标准正态分布)。

    RobustScaler: (xi - median) / IQR 【median是样本的中位数,IQR是样本的 四分位距:根据第1个四分位数和第3个四分位数之间的范围来缩放数据】

    MinMaxScaler:数据归一化,(xi - min(x)) / (max(x) - min(x)) ;当数据(x)按照最小值中心化后,再按极差(最大值 - 最小值)缩放,数据移动了最小值个单位,并且会被收敛到 [0,1]之间

    作者回复: 非常棒,推荐其他同学参考。

    2020-10-12
    1
  • Geek_63ee39
    思考2:movieIdVector是处理好的One-hot 特征;vector是处理好的Multi-hot 特征;这两个特征是使用Vector表示的

    作者回复: 是这样,希望大家都能运行程序查看一下数据细节。

    2020-10-12
  • 吴波
    想问下为什么右键运行FeatureEngineering会报错,提示 错误: 找不到或无法加载主类 com.wzhe.sparrowrecsys.offline.spark.featureeng.FeatureEngineering

    作者回复: 应该是环境问题造成的个例。建议自己debug一下。

    2020-10-12
    1
  • smjccj
    Normalizer: 转化为方差为1,不影响数据分布
    StandardScaler: 将数据转化为 variance= 1,mean =0(unit variance and/or zero mean)
    RobustScaler: 中位数或四分位数进行缩放,处理异常值带来的影响
    MinMaxScaler: 将特征缩放至0-1之间

    作者回复: 赞

    2020-10-12
收起评论
5
返回
顶部