Logistic Regression详解
来源:互联网 发布:中国软件国际地址 编辑:程序博客网 时间:2024/05/31 13:14
Logistic Regression(简称LR)作为一个经典的机器学习分类算法,由于其出众的分类效果和简单的模型,在学术界和工业界都占有重要的地位。此外,Logistic Regression构造目标函数的思路也很值得学习和借鉴。
一、二分类问题:
Logistic函数:
Logistic Regression的核心是Logistic函数,损失函数的构造也正是利用了Logistic函数的特点。Logistic函数形式如下:
从图中可以发现,当
损失函数:
Logistic Regression用“Logistic函数+线性模型”来预测0-1类别的概率:
其中
定义样本的标签为
很巧妙的,当
ti=1 时(类别1),P(t|w) 增加一项P(C1|xi) ;当ti=0 时(类别0),P(t|w) 增加一项P(C0|xi) 。这个小技巧已经被广泛应用,不得不佩服研究人员的智慧。
构造损失函数(Negative Log-Likelihood):也称为交叉熵(cross-entropy)误差函数,对
对损失函数进行拆分:
两幅Cost图很直观的展示了
求偏导:
最小化损失函数求
w ,通常可以使用梯度下降算法得到w 的局部最优值。对梯度下降算法的介绍可以参考我的另一篇博文: 深入了解梯度下降算法
损失函数对
至此,已经可以很容易写出二分类问题Logistic Regression分类器的代码了,在此不再赘述。
二、多类情况:
多分类问题的Logistic Regression与二分类问题很相似,多分类Logistic Regression用的是Softmax函数,但是在本质上Softmax函数和Logistic函数优化目标是一致的。
Softmax:
在实际中,常把偏置
类别预测:
符号定义说明:
- 向量
x1×d 是输入数据,整个训练集为Xn×d ,每一行是一个样本; - 矩阵
Wd×K 是投影矩阵,每一列对应于一个类别,共有K个类; - 数据的原始标签为
yn×1 ,对应于n 个样本。
损失函数:
把原始标签信息写成矩阵的形式
每个样本只属于一个类,所以可以得到(这个式子会在后面求偏导的时候用到):
似然函数:
构造损失函数(Negative Log-Likelihood):
这是多分类问题的交叉熵(cross-entropy)误差函数。
求偏导:
为了符号的简洁,记
损失函数对
有了偏导之后,就可以用梯度下降算法优化参数
和二分类问题的比较:
1、在构造损失函数时,多分类问题和二分类问题都是用的负对数似然作为目标函数。
2、优化方法相同,都可以用梯度下降算法寻找局部最优值。并且两种情况下偏导的结果也是惊人的一致,主要还是由于Softmax和Logistic函数本质上是一致的。
3、Softmax函数:
当
所以Softmax和Logistic函数主要的区别就在于Logistic函数固定为常数1,而Softmax是一个实数
三、参考资料:
[1] M.Bishop: Pattern Recognition and Machine Learning(PRML,机器学习圣经)
[2]Andrew Ng: Stanford Machine Learning(Coursera)
- Logistic Regression详解
- Logistic Regression详解
- 逻辑回归(Logistic Regression)详解
- LR(Logistic Regression)算法详解
- Logistic regression (逻辑回归)详解
- 逻辑回归-logistic regression 详解
- logistic regression
- logistic regression
- logistic regression
- Logistic Regression
- Logistic Regression
- logistic regression
- Logistic Regression
- Logistic Regression
- logistic regression
- Logistic regression
- Logistic Regression
- Logistic Regression
- 数据结构学习笔记——顺序存储结构
- 淘宝违规考试软件1.0
- linux系统的体系结构以及文件数据结构
- windows(win8)和linux(CentOS6)上的telnet的开启和使用
- iptables详解
- Logistic Regression详解
- Java 和 C 的入门案例
- IEEE floating point
- 解决zlib编译不过
- 让CPU使用为正弦曲线-编程之美1.1实现
- TextView的属性详解
- 图的DFS的非递归算法
- Android中ImageView.ScaleType属性值
- 关于 斜杠 反斜杠 双斜杠 双反斜杠