推荐系统的算法基础

1.数学基础

1.1 线性代数

  • 向量点积
    点积的定义:

A ⋅ B = ∑ i = 1 n a i b i A·B= \displaystyle \sum_{i=1}^n a_ib_i AB=i=1naibi
点积的几何意义是A和B的模乘以二者的夹角余弦函数

点积的意义就是测量两个向量同向的程度

  • 余弦相似度
    c o s θ = A ⋅ B ∣ ∣ A ∣ ∣ × ∣ ∣ B ∣ ∣ cos\theta = {A·B \over ||A|| \times||B||} cosθ=A×BAB
    余弦相似度的取值范围为[-1,1],值越大表示越相似。

  • 向量叉乘
    在三维几何中,向量a和向量b的叉乘结果是一个向量,其实为法向量,该向量垂直于a向量和b向量构成的平面。
    向量叉乘的意义就是测量两个向量的垂直程度。

  • 矩阵乘法

  • 矩阵点乘

  • 内积/外积

    • 内积(Inner Product) 是向量中对应位置的元素相乘,得到相同维度的向量。
    • 外积(outer Product)

u ⨂ v = u v T = [ u 1 u 2 u 3 u 4 ] [ v 1 v 2 v 3 ] u\bigotimes v = uv^T = \left[ \begin{matrix} u_1 \\ u_2 \\ u_3 \\ u_4 \end{matrix} \right]\left[ \begin{matrix} v_1 & v_2 & v_3 \end{matrix} \right] uv=uvT=u1u2u3u4[v1v2v3]

1.2 概率与统计

  • 条件概率

P ( B ∣ A ) = P ( A B ) / P ( A ) P(B|A)= P(AB)/P(A) P(BA)=P(AB)/P(A)

  • 联合概率
    多个事件同时发生的概率,联合概率公式:

P ( A B ) = P ( A ) × P ( B ∣ A ) P(AB)=P(A)\times P(B|A) P(AB)=P(A)×P(BA)

  • 边缘概率
    单个事件的概率被称为边缘概率

  • 极大似然估计
    极大似然估计提供了一种给定观察数据来评估模型参数的方法,即“模型已定,参数未知”。通过若干次实验,观察其结果,利用实验结果得到某个能够使样本出现的概率最大的参数值,则称其为极大似然估计。

  • 分布函数

    • 0-1分布
    • 二项分布
    • 泊松分布
    • 几何分布
    • 均匀分布
    • 指数分布
    • 正态分布

1.3 损失函数

损失函数(Loss Function)用于估计模型的预测值$f(x)$与真实值 Y Y Y的不一致程度,它是一个非副实值函数,通常使用 L ( Y , f ( x ) L(Y,f(x) L(Y,f(x)来表示。损失函数越小,模型的健壮性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数的重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下这样:

θ ∗ = a r g m i n 1 N ∑ i = 1 N L ( y i , f ( x i ; θ i ) ) + λ Φ ( θ ) \theta ^* = argmin{1\over N} \displaystyle \sum_{i=1}^N L(y_i,f(x_i;\theta_i))+\lambda \Phi(\theta) θ=argminN1i=1NL(yi,f(xi;θi))+λΦ(θ)

  • 均方损失
    最小二乘法是一种线性回归方法,将回归问题转化为凸优化问题。最小二乘法的基本原理是,最优拟合曲线应该使所有点到回归直线的距离和最小。通常用欧几里得距离进行距离的度量。

L ( Y , f ( x ) ) = ∑ N ( Y − f ( x ) ) 2 L(Y,f(x))=\sum_N (Y-f(x))^2 L(Y,f(x))=N(Yf(x))2

  • log对数损失函数
    逻辑回归的损失函数就是对数损失函数。

  • 指数损失函数
    AdaBoost就是使用指数损失函数。指数损失函数的标准形式如下:

L ( Y , f ( x ) ) = e x p [ − y f ( x ) ] L(Y,f(x))=exp[-yf(x)] L(Y,f(x))=exp[yf(x)]

1.4 优化方法

优化问题指的是,给定目标函数 L ( Y , f ( x ) ) L(Y,f(x)) L(Y,f(x),需要找到一组参数 X X X,使得 L ( Y , f ( x ) ) L(Y,f(x)) L(Y,f(x)的值最小。常见的优化方法主要包含两类:梯度法和牛顿法。

  • SGD

  • 动量

  • Nesterov动量

  • AdaGrad

  • Adam

  • L-BFGS

1.5 评价方法

  • 混淆矩阵
\ 正类P 负类n
正类P TP FP
负类n FN TN
  • 根据混淆矩阵可计算以下分类指标:

    • 精确率 precision = TP/(TP+FP)
      模型判断为正的所有样本中有多少是真正的正样本

    • 召回率 recall = TP/P
      真正的正样本被预测准确的比例

    • 准确率 accuracy= (TP+TN)/(P+N))
      预测正负样本的准确比例

    • 综合评价指标 F-Measure
      F = ( α 2 + 1 ) P × R α 2 ( P + R ) F= {(\alpha^2+1)P\times R \over \alpha^2 (P+R)} F=α2(P+R)(α2+1)P×R
      α = 1 \alpha = 1 α=1时,就是 F 1 F_1 F1,当 F 1 F_1 F1分数较高时则说明实验方法比较有效。

  • ROC曲线
    平面的横坐标是False Positive Rate(FPR),纵坐标是True Positive Rate(TPR)。
    AUC的值就是处于ROC曲线下方的那部分的面积。通常AUC的值介于0.5到1.0之间,较大的AUC值代表了较好的性能。

ROC曲线最理想的情况就是,按照Score值降序排列样本,TPR值从0开始逐步增加到1.0,而FPR值始终保持0,即前面都是预测为正样本且都是正类样本;而TPR为1.0后,后面的FPR从0开始逐步增加到1.0,而TPR保持1.0,即后面都是预测为负样本且是负类样本,最终该ROC曲线下的面积就是单位面积1,所以AUC为1。
ROC曲线最糟糕的情况就是,ROC曲线是从0到1的一条直线,即FPR和TPR在每次划分时都相等,这时ROC曲线下的面积就是0.5,AUC即为0.5。

2.推荐系统介绍

  • 召回模型常见算法
算法类型 常见算法 算法特点
内容相似 word2vec 挖掘相似物品
LDA
FastText
LSF-SCNN
LSTM
行为相似 ItemCF 挖掘相似用户或者行为的物品
UserCF
关联规则
深度学习 DNN 挖掘用户可能感兴趣的物品
  • 排序模型常见算法
算法类型 常见算法 算法特点
线性模型 LR "刀耕火种"
FM
特征交叉+LR/FM
树模型 决策树 自动特征交叉
随机森林
GBDT
XGBoost
GBDT+LR
集成学习 树模型集成学习 “十八般武艺”
GCForest
非线性模型 DNN “记忆与泛化”
Wide&Deep
FNN
PNN
DeepFM
NFM
AFM
DCN
DIN

3.推荐算法工具

3.1 Sklearn

3.1.1 SKlearn介绍

  • 分类
    • 线性
    • 决策树
    • SVM
    • KNN
    • 朴素贝叶斯
    • 集成分类算法:
      • 随机森林
      • AdaBoost
      • GradientBoosting
      • Bagging
      • ExtraTrees
  • 回归
    • 线性
    • 决策树
    • SVM
    • KNN
    • 朴素贝叶斯
    • 集成回归算法:
      • 随机森林
      • AdaBoost
      • GradientBoosting
      • Bagging
      • ExtraTrees
  • 聚类
    • K-means
    • 层次聚类
    • DBSCAN
  • 降维
    • LDA
    • PC

3.1.1 SKlearn建模流程

  • 数据集
  • 数据预处理
  • 选择模型并训练
  • 模型评分
  • 模型的保存与恢复

3.2 Spark MLlib

3.3 Tensorflow

3.4 Notebook介绍

  • Zeppelin Notebook

常用于Hive和Spark数据分析任务

  • Jupyter Notebook

常用于Python和Tensorflow数据分析任务

猜你喜欢

转载自blog.csdn.net/weixin_44127327/article/details/108471808