本文主要介绍推荐系统中的矩阵分解技术。之前在协同过滤 | Yam中分别提到过基于用户和商品的方法,它们分别基于相似用户和相似物品完成推荐。但是协同过滤有个很大的问题就是数据稀疏,以一个电商网站为例,可能大部分的商品都只有很少的用户购买,而热门商品又有很多人购买。这导致的结果就是难以找到相似的用户(基于用户的协同过滤)或头部效应(基于商品的协同过滤)。这一问题是协同过滤算法的天然缺陷,表现出来的其实正是 2-8 定律和马太效应,再往深了想,从客观角度看是因为信息不对称,主观角度看则是因为羊群效应。所以,很自然的想法就是将稀疏表征稠密化。稠密化表示也就意味着特征的多元化,直观来看自然是表征能力和泛化能力更强。矩阵分解正是这样的技术。
协同过滤
协同过滤是推荐领域的经典算法,它的思想非常朴素:和我们兴趣相似的人喜好也类似。所以,自然而然,只要找到和我们兴趣相似的人,将他们喜好的商品(又不在我们喜好商品的列表中)推送给我们就完成了推荐任务。本文主要介绍该算法
推荐系统概述
Funnel Transformer 论文笔记
模型融合
模型融合思想很简单,就是将多种不同类型的模型结合起来共同预测结果——”三个臭皮匠,顶个诸葛亮“。模型融合主要有以下方法:
- 平均:简单平均和加权平均
- 投票:简单投票和加权投票
- stacking:多层模型,利用预测结果再拟合预测
- blending:选取部分数据预测,得到的值作为新特征
建模调参
特征工程
常听一句话说 “你还能玩儿出花来”,我觉得特征工程就是这么个把那些看上去普普通通的 “数据” 玩儿出花的过程。如果用 DIKW 模型(Data Information Knowledge Wisdom)来理解,Data 显然就是原始的一个个数据值,Information 就是对数据进行分析、处理后得到的具有一定意义的东西。
严格的定义如下:特征工程是对原始数据进行一系列工程处理,将其提炼为特征根,作为模型的输入。它旨在去除原数据中的杂质和冗余,使得模型与预测值之间能够以此建立联系。
EDA
探索性数据分析 EDA(Exploratory Data Analysis)是数据分析和挖掘的第一步,主要是对数据集进行了解,包括基本情况、特征情况、特征间关系等等,为进一步的分析和挖掘提供信息。
一个完整的 EDA 过程一般大致包括四步:
- 问题定义:问题定义涉及的主要任务是定义分析的主要目标,定义主要的可交付成果,概述主要角色和职责,获取数据的当前状态,定义时间表以及执行成本/收益分析。
- 数据准备:包括数据源定义、数据 schema 定义、数据特征了解、数据清理、数据转换、数据分割等。
- 数据分析:这是处理描述性统计信息和数据分析的最关键步骤之一。 主要任务包括汇总数据,发现数据之间隐藏的关联和关系,开发预测模型,评估模型以及计算精度。
- 结果展示:以图表、摘要、地图和图表的形式将数据集呈现给目标受众。
Metrics
机器学习的数据集一般被划分为训练集和测试集,训练集用于训练模型,测试集则用于评估模型。针对不同的机器学习问题(分类、排序、回归、序列预测等),评估指标的选择也有所不同。本文主要介绍机器学习中常用的模型评估指标。
PEGASUS 论文笔记
Paper:[1912.08777] PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization
核心思想:基于 GSG 的 Transformer 在文本摘要上的应用。