魏县网站建设,深圳 购物商城网站建设,网站申请支付宝接口,北京网站建设 标准型 新翼滴滴算法工程师面经
一、矩阵分解的原理与优化意义
矩阵分解在推荐系统中是一个非常核心的方法#xff0c;尤其是在 协同过滤(Collaborative Filtering) 中。我们可以通过用户对物品的评分行为来推测用户的喜好#xff0c;从而推荐他们可能喜欢的内容。
1.1. 直观理解尤其是在 协同过滤(Collaborative Filtering) 中。我们可以通过用户对物品的评分行为来推测用户的喜好从而推荐他们可能喜欢的内容。
1.1. 直观理解补全稀疏矩阵
在推荐系统中我们常见的用户-物品评分矩阵 R R R 是一个非常稀疏的矩阵
用户\物品电影A电影B电影C电影D用户15?3?用户2?4?2用户31??5
目标预测问号的位置也就是未评分项的评分用来推荐用户可能喜欢的物品。
1.2. 数学建模矩阵分解思想
我们希望将评分矩阵 R ∈ R m × n R \in \mathbb{R}^{m \times n} R∈Rm×n分解为两个低秩矩阵 R ≈ P Q T R \approx P Q^T R≈PQT 其中 P ∈ R m × k P \in \mathbb{R}^{m \times k} P∈Rm×k用户的潜在因子矩阵每一行表示一个用户在 k k k 维隐空间中的向量偏好 Q ∈ R n × k Q \in \mathbb{R}^{n \times k} Q∈Rn×k物品的潜在因子矩阵每一行表示一个物品在 k k k 维隐空间中的向量特性 k k k潜在维度远小于用户数 m m m 和物品数 n n n
最终评分预测 R ^ i j P i ⋅ Q j T \hat{R}_{ij} P_i \cdot Q_j^T R^ijPi⋅QjT
1.3. 优化目标函数
我们只对已有评分位置进行拟合 min P , Q ∑ ( i , j ) ∈ Ω ( R i j − P i Q j T ) 2 λ ( ∣ ∣ P ∣ ∣ F 2 ∣ ∣ Q ∣ ∣ F 2 ) \min_{P,Q} \sum_{(i,j)\in\Omega} (R_{ij} - P_i Q_j^T)^2 \lambda(||P||_F^2 ||Q||_F^2) P,Qmin(i,j)∈Ω∑(Rij−PiQjT)2λ(∣∣P∣∣F2∣∣Q∣∣F2)
其中 Ω \Omega Ω表示有评分的索引集合 λ \lambda λ正则项系数防止过拟合 ∣ ∣ ⋅ ∣ ∣ F ||\cdot||_F ∣∣⋅∣∣FFrobenius 范数
1.4. 训练算法
常用优化方法
✅ 随机梯度下降法SGD✅ 交替最小二乘法ALS先固定 ( P ) 求 ( Q )再固定 ( Q ) 求 ( P )反复迭代✅ SVD 分解用于没有缺失值的场景
1.5. 实际推荐步骤
构造用户-物品评分矩阵 R R R矩阵分解 得到 P , Q P, Q P,Q评分预测 R ^ i j P i Q j T \hat{R}_{ij} P_i Q_j^T R^ijPiQjT按预测评分排序 为用户推荐他们没有评分过、预测评分最高的物品
二、XGBoost vs LightGBM的差异如何选择分裂点
见【搜广推校招面经十、九、六十二】
三、如果数据分布偏移如疫情前后出行规律变化如何调整模型
在现实场景中如疫情前后用户行为可能发生显著变化导致训练数据与当前预测环境存在**数据分布偏移Data Distribution Shift**问题。为应对这一挑战可以从以下几个方面调整模型
3.1. 数据层面的调整
增加新时期数据
收集疫情后或分布变化后的数据扩充训练集。保证训练数据涵盖当前的特征分布。
数据加权或重采样
对疫情前后的样本设置不同权重增强模型对现阶段数据的适应能力。使用重要性加权 (Importance Weighting)通过估计测试分布和训练分布之间的比值进行重加权。
数据漂移检测与特征选择
使用**KS检验、PCA投影、最大均值差异MMD**等方法检测哪些特征发生了分布变化。剔除不稳定特征仅保留稳定有效特征进行建模。
3.2. 模型训练策略调整
迁移学习Transfer Learning / 增量学习
在原模型基础上使用疫情后的少量标注数据进行微调fine-tuning。或从零开始对新数据重新训练若旧数据不再具有代表性。
联合训练Joint Training
将疫情前后的数据合并同时训练模型但引入领域标识Domain Indicator或多任务学习方式区分两个分布的数据。
四、Softmax为什么soft
Softmax 是一种函数常用于多分类模型的最后一层用于将一个向量映射为一个概率分布。公式如下 Softmax ( z i ) e z i ∑ j e z j \text{Softmax}(z_i) \frac{e^{z_i}}{\sum_{j} e^{z_j}} Softmax(zi)∑jezjezi 它的输入是一组实数 z 1 , z 2 , . . . , z n z_1, z_2, ..., z_n z1,z2,...,zn输出是 n n n 个值这些值都在 0 和 1 之间总和为 1表示每个类的概率。
4.1. Soft 的含义
“Soft” 是相对于 “Hard” 来说的。比如
Hard max 是只取最大值的位置为 1其他为 0 比如[2.1, 5.6, 3.3] → [0, 1, 0] Softmax 则是“柔和地”表达各个值的相对大小 比如[2.1, 5.6, 3.3] → [0.02, 0.91, 0.07] 也就是说Softmax 不是简单地做最大化max操作而是“soft”柔化了这个选择过程保留了其他选项的可能性。
4.2. Soft 的好处
可微分性相比 hard maxsoftmax 是光滑且可导的有利于梯度下降优化。表达不确定性当模型不确定时softmax 可以输出类似 [0.4, 0.3, 0.3] 的概率分布而 hard max 无法做到。避免信息丢失hard max 直接抹掉非最大值的信息softmax 则保留了不同选项之间的差异。 Softmax 之所以叫 “soft”是因为它是一种 “平滑的最大化”在输出概率的同时保留了对非最大值的“温柔态度”。