1. 简述 Logistic Regression
Logistic regression 用来解决二分类问题,
它假设数据服从伯努利分布,即输出为 正 负 两种情况,概率分别为 p 和 1-p,
目标函数 hθ(x;θ) 是对 p 的模拟,p 是个概率,这里用了 p=sigmoid 函数,
所以 目标函数 为:
为什么用 sigmoid 函数?请看:Logistic regression 为什么用 sigmoid ?
损失函数是由极大似然得到,
记:
则可统一写成:
写出似然函数:
取对数:
求解参数可以用梯度上升:
先求偏导:
再梯度更新:
常用的是梯度下降最小化负的似然函数。
2. 先来看常用的几种损失函数:
损失函数 | 举例 | 定义 | |
---|---|---|---|
0-1损失 | 用于分类,例如感知机 | 预测值和目标值不相等为1,否则为0 | |
绝对值损失 | |||
平方损失 | Linear Regression | 使得所有点到回归直线的距离和最小 | |
对数损失 | Logistic Regression | 常用于模型输出为每一类概率的分类器 | |
Hinge损失 | SVM | 用于最大间隔分类 | |
指数损失 | AdaBoost |
几种损失函数的曲线:
黑色:Gold Stantard
绿色:Hinge Loss中,当 yf(x)>1 时,其损失=0,当 yf(x)<1时,其损失呈线性增长(正好符合svm的需求)
红色 Log、蓝色 Exponential: 在 Hinge的左侧都是凸函数,并且Gold Stantard损失为它们的下界
要求最大似然时(即概率最大化),使用Log Loss最合适,一般会加上负号,变为求最小
损失函数的凸性及有界很重要,有时需要使用代理函数来满足这两个条件。
3. LR 损失函数为什么用极大似然函数?
因为我们想要让 每一个 样本的预测都要得到最大的概率,
即将所有的样本预测后的概率进行相乘都最大,也就是极大似然函数.对极大似然函数取对数以后相当于对数损失函数,
由上面 梯度更新 的公式可以看出,
对数损失函数的训练求解参数的速度是比较快的,
而且更新速度只和x,y有关,比较的稳定,为什么不用平方损失函数
如果使用平方损失函数,梯度更新的速度会和 sigmod 函数的梯度相关,sigmod 函数在定义域内的梯度都不大于0.25,导致训练速度会非常慢。
而且平方损失会导致损失函数是 theta 的非凸函数,不利于求解,因为非凸函数存在很多局部最优解。
什么是极大似然?请看简述极大似然估计