2014 年,Facebook 在论文 practical-lessons-from-predicting-clicks-on-ads-at-facebook 中提出了一个将决策树算法和逻辑回归整合起来的模型,大致做法就是将输入的实数特征通过决策树转换为一个二进制的向量,该模型比其他方法在整体性能上提高超过 3 个百分点。
Wide and Deep Learning for Recommender System 论文笔记
推荐系统可以看作是一个搜索排序系统,其中 input 是一组用户和上下文信息,output 是排好序的商品列表。推荐系统的一个挑战就是同时达到 memorization(记忆化)和 generalization(泛化)。
- memorization:
- 大致可定义为学习特征或商品的频繁共现关系并探索相关性
- 与用户已经执行操作的商品直接相关
- 可以通过使用稀疏特征上的交叉乘积变换(cross-product transformation)有效地实现,如
AND(installed_app=netfix, impression_app=pandora)
- generalization:
- 基于相关性的传递性探索之前很少出现或没出现过的新特征组合
- 倾向于提高推荐结果的多样性
- 可以通过使用不太精细的特征增加泛化,如
AND(installed_category=video, impression_category=music),一般需要人工进行特征处理
矩阵分解
本文主要介绍推荐系统中的矩阵分解技术。之前在协同过滤 | Yam中分别提到过基于用户和商品的方法,它们分别基于相似用户和相似物品完成推荐。但是协同过滤有个很大的问题就是数据稀疏,以一个电商网站为例,可能大部分的商品都只有很少的用户购买,而热门商品又有很多人购买。这导致的结果就是难以找到相似的用户(基于用户的协同过滤)或头部效应(基于商品的协同过滤)。这一问题是协同过滤算法的天然缺陷,表现出来的其实正是 2-8 定律和马太效应,再往深了想,从客观角度看是因为信息不对称,主观角度看则是因为羊群效应。所以,很自然的想法就是将稀疏表征稠密化。稠密化表示也就意味着特征的多元化,直观来看自然是表征能力和泛化能力更强。矩阵分解正是这样的技术。
协同过滤
协同过滤是推荐领域的经典算法,它的思想非常朴素:和我们兴趣相似的人喜好也类似。所以,自然而然,只要找到和我们兴趣相似的人,将他们喜好的商品(又不在我们喜好商品的列表中)推送给我们就完成了推荐任务。本文主要介绍该算法
推荐系统概述
Funnel Transformer 论文笔记
模型融合
模型融合思想很简单,就是将多种不同类型的模型结合起来共同预测结果——”三个臭皮匠,顶个诸葛亮“。模型融合主要有以下方法:
- 平均:简单平均和加权平均
- 投票:简单投票和加权投票
- stacking:多层模型,利用预测结果再拟合预测
- blending:选取部分数据预测,得到的值作为新特征
建模调参
特征工程
常听一句话说 “你还能玩儿出花来”,我觉得特征工程就是这么个把那些看上去普普通通的 “数据” 玩儿出花的过程。如果用 DIKW 模型(Data Information Knowledge Wisdom)来理解,Data 显然就是原始的一个个数据值,Information 就是对数据进行分析、处理后得到的具有一定意义的东西。
严格的定义如下:特征工程是对原始数据进行一系列工程处理,将其提炼为特征根,作为模型的输入。它旨在去除原数据中的杂质和冗余,使得模型与预测值之间能够以此建立联系。
EDA
探索性数据分析 EDA(Exploratory Data Analysis)是数据分析和挖掘的第一步,主要是对数据集进行了解,包括基本情况、特征情况、特征间关系等等,为进一步的分析和挖掘提供信息。
一个完整的 EDA 过程一般大致包括四步:
- 问题定义:问题定义涉及的主要任务是定义分析的主要目标,定义主要的可交付成果,概述主要角色和职责,获取数据的当前状态,定义时间表以及执行成本/收益分析。
- 数据准备:包括数据源定义、数据 schema 定义、数据特征了解、数据清理、数据转换、数据分割等。
- 数据分析:这是处理描述性统计信息和数据分析的最关键步骤之一。 主要任务包括汇总数据,发现数据之间隐藏的关联和关系,开发预测模型,评估模型以及计算精度。
- 结果展示:以图表、摘要、地图和图表的形式将数据集呈现给目标受众。