原文:推荐系统里的特征工程

个性化推荐系统 Personalized recommender system 比其他的机器学习方法更依赖特征工程,所以我拿它来当作问题的背景,结合我之前做过的一个推荐系统里相关经验来说说特征工程具体是个什么东西。

利用特征功能提取这些“个性化”的特征放到推荐模型里就很重要,比如在我们的推荐系统里,把“品牌”的特征加进去,相对于 baseline 提高了20%左右的nDCG。推荐系统可以是机器学习的模型也可以是基于关联或者统计规则的模型,对后者来说特征对推荐效果的提升占的比重更大。

利用领域知识生成和提取特征

如何描述个性化并且用变量表示成特征。一般方法就是,想想你就是该商品的目标用户,你会想要什么样的个性化。

这部分工作需要很多领域知识,一般需要一组的研究人员讨论,要认真的思考这个特定问题有些什么和别的问题不同的特征,也建议和市场部销售部等有领域知识的专家讨论。经验上来说,这些特征提取的越多越好,并不用担心特征过多,因为推荐系统的数据量都比较大,并且基于一些规则可以很好的筛选特征。

注意,这些特征可能是固定不变的。实际经验来说,时间变化采样的颗粒度要按照实际推荐效果来决定。

特征的表达

一个特征具体如何表达,要看在它在具体模型上怎么用。特征可以是“红”“绿”“蓝”这些离散特征,也可以是1.57这样的连续值特征。

某些特定问题更倾向于离散特征,因为像推荐系统这样数据很大的情况可以利用模型训练这些特征得到比连续值表达更好的效果。

【*****】

按照实际推荐效果思考一下用户的【行为特征】,需要丢弃一些特征。我之前包含过0.4以下的部分但是实际测试的时候发现推荐结果会恶化,

也就是说对于我们的问题,用户喜欢跟风买热门的,但是不喜欢一直买冷门的。

每个用户对于其他用户的 news 的点赞和留言以及其他的动作都会得到一个评价值,这是一系列的连续值,直接拿来训练模型效果不好。他们的做法是做了一个简单的决策树,训练的输入是这些连续值,训练目标是看对于用户A是否应该显示用户B的 news 。这个决策树显然很粗糙,但是树的每个叶子节点可以成为一个特征,那么这些叶子节点就可以当作用户A的特征向量,拿来训练其他模型比如Logistic Regression,效果不错。

直接特征和间接特征

直接特征 Extacted Feature 就是比如商品的品牌,间接特征 Derived Feature 可以是从直接特征或者各种数据组合里计算推导出来的。

特征选择

一般来说是两个方法:基于领域知识的手工选择以及自动选择方法。
【1】对于关联规则和统计规则的模型来说,手工选择的比重要大一些。
比如我们已有了baseline的特征向量,现在加进去品牌偏好,给一定的权值,看评价函数输出的结果是否增强了推荐效果
选择过程不是单增单减,很可能遇到两个特征组合A+B效果很好,A+C效果也很好,但是A+B+C效果就呵呵了。
个人建议在关联和统计规则里面把最重要的几个特征放进去然后优化关于这几个特征的规则,把复杂的特征选择留给学习出来的模型
【2】对于学习的模型来说, 可以通过模型自动选择每个特征的权值,按照和效果的关联来调整模型的参数
自动选择的方法:有f orward selection,backward selection,各种regularization 还有深度学习和卷积网络等等 【 待查feature selection 的blog综述】
【推进系统的评价函数】
推荐系统的评价函数一般不是AUC曲线等按照error计算的函数,也就是说推荐的效果并不是按照“精准”来衡量,
要遵循特定问题需要的评价函数比如nDCG,所以以error matrix为标准的一些方法可能效果会不好。
比如说用PCA降低特征的维度很可能把那些对推荐效果很重要的长尾特征给舍弃了。

特征的组合变化

可发挥的空间就看你的想像力和经验了。这里的组合变化远不限于把已有的特征加减乘除(比如Kernel Tricks之类)
例如:
斯坦福小帅哥教授 Jure Leskovec 在2010年的一篇文章“Predicting Positive and Negative Links in Online Social Networks”
说到过一种基于用户反馈的推荐“你可能认识的人”的推荐算法,他把邻近三人之间的三角关系总共16种正负反馈的组合当作特征向量
用来表达用户A和被推荐目标用户C之间的正负反馈,在图里去掉一些已知正负反馈的边来构建训练数据,用简单的Logistic Regression训
练模型达到了不错的效果。可以谷歌找到这篇文章的幻灯片,里面有图示讲解。

总结

构建一个推荐系统需要涉及很多东西,绝对不是GraphLab或者Mahout跑个协同过滤就能上马的,这里面特征工程是很重要的一部分工作
,在很多其他数据和机器学习的工作里面特征工程也差不多是从根本上改变模型效果的重要办法之一。大家在欢乐调参的过程中不妨考虑
考虑搞搞特征。

特征工程——推荐系统里的特征工程相关推荐

  1. 浅谈微视推荐系统中的特征工程

    本文作者:hannahguo,腾讯 PCG 推荐算法工程师 在推荐系统中,特征工程扮演着重要的角色.俗话说数据和特征决定了机器学习算法的上限,而模型.算法的选择和优化只是在不断逼近这个上限.特征工程的 ...

  2. 关于推荐系统中的特征工程

    转载自:http://blog.jobbole.com/74951/ 在多数数据和机器学习的blog里,特征工程 Feature Engineering 都很少被提到.做模型的或者搞Kaggle比赛的 ...

  3. 推荐系统中的特征工程

    关于推荐系统中的特征工程 在多数数据和机器学习的blog里,特征工程 Feature Engineering 都很少被提到.做模型的或者搞Kaggle比赛的人认为这些搞feature工作繁琐又不重要不 ...

  4. 「推荐系统中的特征工程」1. 特征工程基础知识介绍

    作者 | gongyouliu 编辑 | auroral-L 全文共6858字,预计阅读35分钟. 本章目录 一.特征的基本概念 二.特征工程介绍 三.特征工程的基本思路和方法 1. 根据不同数据类型 ...

  5. 推荐系统学习笔记——特征工程

    特征工程 一. 概述 二. 特征工程构建原则 三. 常用的特征有哪些 四. 常用的特征的处理方法 五. 特征选择 六. 总结 推荐系统学习笔记系列链接: 推荐系统学习笔记--特征工程 推荐系统学习笔记 ...

  6. 深度学习推荐系统之“输入”特征工程

    1. 前言 从计算机视觉转换赛道到推荐系统,最令我迷惑的不是具体的网络模型,而是大多数论文中往往一笔带过的"输入层".就像一个厨师,知道菜谱,但是不会处理食材.最近一段时间通过查阅 ...

  7. [特征工程系列一] 论特征的重要性

    满打满算,还有十天左右就要过年了,这些天大家或多或少都有点浮躁.反过来想,趁大家都懈怠的时候,正是学习的最佳时机.趁着这几天,也给自己加点码,去认真的再看一下特征工程.我给自己列了下面的这一份学习清单 ...

  8. [特征工程系列三]显性特征的衍生

    前一文讲的是一些特征的基础处理方式,包括怎么降维.怎么处理脏数据等等.其实特征工程真正的难点是如何结合业务需求衍生出新的特征.结合业务需求讲的是利用专家经验来提取出数据里对结果影响更大的特征,往往是原 ...

  9. python tfidf特征变换_Python机器学习之“特征工程”

    本次将介绍特征工程的一些常见示例:表示分类数据的特征.表示文本的特征和表示图像的特征.另外,还会介绍提高模型复杂度的衍生特征和处理缺失数据的填充方法.这个过程通常被称为向量化,因为它把任意格式的数据转 ...

最新文章

  1. Linux账户安全管理--useradd、groupadd、passwd、chown、chmod工具
  2. java字符编码问题_java 字符编码问题
  3. C# 删除文件错误 access denied
  4. 自己整理的shell笔记
  5. Py中的heapq模块【转载】
  6. Mysql在Windows上离线安装与配置
  7. Satori变种正在通过替换钱包地址盗取ETH数字代币
  8. 4月6日米粉节:小米手机新一轮10万台开放购买
  9. scheduled只执行一次,有个定时任务突然不执行了?
  10. linux反编译java_linux系统上如何反编译.class文件
  11. 你不知道的分布式锁+分布式事务面试题
  12. 关于内网打印机的研究-利用PRET对惠普打印机进行渗透
  13. SSM项目实战之十一:用户信息的添加
  14. 词法分析,语法分析,语义分析
  15. Redis客户端与服务端
  16. JUnit学习笔记6---用stub进行粗粒度测试
  17. WebCracker4.0和monster字典——路由器登陆密码破解工具
  18. bzoj-2818 Gcd
  19. 美团综合业务推荐系统的质量模型与实践
  20. 二阶常系数偏微分线性变量代换化简

热门文章

  1. Vue Video.js播放m3u8视频流格式(video+videojs-contrib-hl)
  2. Generic receive offload
  3. Android 性能测试小工具 Emmagee
  4. Excel?国产开源在线表格Luckysheet走红GitHub
  5. 梯度,sobel算子的理解
  6. 墨染の軍師(シオン) / 墨染(异时层火刀)
  7. Oracle: SQL精妙SQL语句讲解(常用sql) .
  8. 如何运用 DDD 解决团队协作与沟通问题?
  9. 大学计算机基础教学大纲,大学计算机基础教学大纲
  10. python汉字拼音查询_Python汉字转拼音