【推荐一个月跳槽1】LR算法原理
前述:我打算在两个月内转到BAT-TMD级公司做推荐算法的工作。 目前,相关公司正在开发一张。 动机是将来回南京,算法单位在南京也可以。
暂定主要学习以下内容。 中途夹杂面试经验。
LR算法GBDT算法XGboost算法Adaboost算法Word2Vec算法FM算法FFM算法DeepFM算法特征工程关联
今天第一天: LR算法: logistics回归不是回归。 回归解决连续值预测问题,分类解决离散值预测问题。 logitc回归是解决预测离散值问题。
首先,理解一些基本概念概率odds logit
事件a发生的概率=事件a发生的次数/所有结果发生的次数
Odds=事件发生的概率/不发生事件的概率=成功的概率/失败的概率
Odds的对数称为Logit
logit:logofOdds(log-it是it的自然对数,这里的it指的是Odds ) )。
下图是logit的模型化。
概率p的变化范围为[0,1 ],Odds的变化范围为[ 0,],对于Odds取自然对数,可以从[ 0,1 ]将p映射到(-,)。
如果在之间对概率或odds建模,则它们的值域是有限的。 logit模型将p映射到(-,),解决了值域问题,也保留了p的概率意义。
theta 是所要求的LR模型参数。 整理公式,在右边只留下概率p,可以得到以下模型。
下图为logistics回归的图像。
当Tx=0时,p=0.5;
Tx越小,p越趋向于0;
Tx越大,p越趋向于1;
回到第一个问题,预测是什么? 事件a发生的概率p,输入为样本x。 因此,我们的输出y可以定义为{ 0,1 },事件a可以定义为Y=1,事件a可以定义为不会引起Y=0。 概率p是Y=1的概率。 对于P0.5,Y=1,P=0.5,Y=0。 如下图所示
整理上面的两个公式
p(Y=1|x,)=h) x ) :在x,已知情况下输出y=1的概率
p(Y=0|x,)=1-h(x ) x ) :在x,已知情况下输出y=0的概率
以上两个公式表示在知道x、的情况下输出Y=0或Y=1的概率为,
p(y|x,)=h) x ) y* )1-h) x )1-y
两个假设:
y|x,服从伯努利分布
样品间独立
以上是样本x的概率函数,但通常有n个样本,相互独立,互不影响。 因此,要求的参数组在所有样本中都可以得到良好的结果。
因此,将各自的概率函数相乘得到联合概率密度。
h(x )和y的值越一致,即预测越准确时,该式的值越大,预测越偏离时,该式的值越小。 因此,为了使该式的值成为最大而需要求解的参数的组。 这也是最大似然函数的理解L(|x )=F ) x|),的l值变为最大与概率密度函数变为最大是相同的。 似然函数如下首先推导函数。 然后利用梯度下降的算法求出最小值。 虽然导出原最大似然函数非常困难,但我们知道函数对应的对数函数是凹凸、极值点、原函数相同的。 然后对数函数的求导比原函数方便一些,所以先获取对数似然函数。
求对数似然函数的导数
更新参数:
最后,损耗函数是对数似然函数*-1/m,并且下面是对数似然函数,需要加上系数-1/m。 对数似然函数越大,模型越好。 损失函数越小模型越好,所以加负号。