适用场景
- 在CTR预估模型中,通常需要对负样本进行采样,以提升训练效率
- 负样本采样会改变样本分布,从而导致预估均值出现偏差
问题描述
- 假设对负样本进行采样,此时数据分布(正负样本比例)会发生改变,为了保证预估均值,需要对模型进行修正
修正方式
- 修正方式一般有两种
训练时修正
推导
训练时修正推导
假设原始样本数,正样本数,负样本数分别为\(N,N_p,N_n\)
采样前:
- 令正样本概率为\(p = \frac{N_p}{N}\),则有\(1-p = \frac{N_n}{N}\)
- 进一步有:\(\frac{p}{1-p} = \frac{N_p}{N_n}\)
按照比例\(r\)对负样本进行采样后剩下负样本数为\(r\cdot N_n\):
- 同理有:\(\frac{p’}{1-p’} = \frac{N_p}{N_n/r} = r\cdot\frac{N_p}{N_n}\)
假定CTR的输出经过sigmoid激活函数输出概率值
为了保证预估时可以使用如下公式:
$$ p = \frac{1}{1+e^{-wx}} $$需要满足的训练公式为:
$$ p‘ = f(x) $$求解\(f\)的流程如下:
- 由sigmoid函数(\(p = \frac{1}{1+e^{-wx}}\))的定义可得:
$$ wx = ln \frac{p}{1-p} $$ - 又因为:
$$
\frac{p}{1-p} = \frac{N_p}{N_n} \\
\frac{p’}{1-p’} = \frac{1}{r}\cdot\frac{N_p}{N_n} \\
ln(\frac{p’}{1-p’}) = ln(\frac{1}{r}\cdot\frac{p}{1-p}) = ln(\frac{1}{r}) + ln(\frac{p}{1-p}) \\
$$ - 所以有:
$$ ln(\frac{p’}{1-p’}) = ln(\frac{1}{r}) + ln(\frac{p}{1-p}) = ln(\frac{1}{r}) + wx $$ - 于是有预估时的公式为:
$$ p’ = \frac{1}{1+e^{-(wx+ln(\frac{1}{r}))}} $$
- 由sigmoid函数(\(p = \frac{1}{1+e^{-wx}}\))的定义可得:
综上所述,训练时下面的式子训练:
$$ p’ = \frac{1}{1+e^{-(wx+ln(\frac{1}{r}))}} $$预估时可以按照下面的式子预估:
$$ p = \frac{1}{1+e^{-wx}} $$
训练后修正的推导
- 由两者的定义可以推导如下:
$$
\frac{p}{1-p} = \frac{N_p}{N_n} \\
\frac{p’}{1-p’} = \frac{1}{r}\cdot\frac{N_p}{N_n} \\
$$ - 进一步有:
$$
\frac{p’}{1-p’} = \frac{1}{r}\cdot\frac{p}{1-p} \\
\frac{p}{1-p} = r \cdot \frac{p’}{1-p’} = \frac{r \cdot p’}{1-p’} \\
$$ - 调整位置得到:
$$
\frac{1-p}{p} = \frac{1-p’}{r \cdot p’} \\
$$ - 即:
$$
\frac{1}{p} - 1 = \frac{1-p’}{r \cdot p’} \\
$$ - 进而有:
$$
\frac{1}{p} = \frac{r \cdot p’+1-p’}{r \cdot p’} \\
$$ - 最终得到:
$$
p = \frac{r \cdot p’}{r \cdot p’+1-p’} \\
p = \frac{ p’}{p’+\frac{1-p’}{r}}\\
$$ - 综上所述,训练时下面的式子训练:
$$ p’ = \frac{1}{1+e^{-wx}} $$ - 预估时可以按照下面的式子预估:
$$ p = \frac{ p’}{p’+\frac{1-p’}{r}} $$