手记

Logistic Regression 为什么用极大似然函数

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 损失函数为什么用极大似然函数?

  1. 因为我们想要让 每一个 样本的预测都要得到最大的概率,
    即将所有的样本预测后的概率进行相乘都最大,也就是极大似然函数.

  2. 对极大似然函数取对数以后相当于对数损失函数,
    由上面 梯度更新 的公式可以看出,
    对数损失函数的训练求解参数的速度是比较快的,
    而且更新速度只和x,y有关,比较的稳定,

  3. 为什么不用平方损失函数
    如果使用平方损失函数,梯度更新的速度会和 sigmod 函数的梯度相关,sigmod 函数在定义域内的梯度都不大于0.25,导致训练速度会非常慢。
    而且平方损失会导致损失函数是 theta 的非凸函数,不利于求解,因为非凸函数存在很多局部最优解。

什么是极大似然?请看简述极大似然估计

0人推荐
随时随地看视频
慕课网APP