Logistic Regression学习笔记
1.李航《统计学习方法》;
2.https://blog.csdn.net/laobai1015/article/details/78113214
3.http://www.cnblogs.com/bentuwuying/p/6616680.html
4.http://kyonhuang.top/Andrew-Ng-Deep-Learning-notes/#/Neural_Networks_and_Deep_Learning/神经网络基础
O、逻辑斯蒂回归的缘起
起源于线性回归。线性回归是一种回归分析技术,回归分析本质上就是一个函数值预测的问题,就是找出因变量和自变量之间的关系。回归分析的因变量应是连续变量,若因变量是离散变量,则问题转化为分类问题。
对于给定的数据集
,我们需要学习的模型为:

也就是说,我们要从已知的数据集T中学习到模型参数w,b。怎么学呢?
对于给定的样本(xi,yi),我们模型的预测值为
,两者之间的误差叫做损失,通常我们采取误差的平方作为损失函数,则在训练数据集T上,模型的损失函数为:

我们的目标是损失函数最小化,即:

上述这最后一步怎么求?我们可以用梯度下降法来求解上述最小化问题的数值解。关于梯度下降法,请参考:梯度下降原理及Python实现,和梯度下降(Gradient Descent)小结
以上是线性回归(Linear Regression),其“线性”二字的内涵在于它认为模型输出(y)是模型输入(x)的线性表达式。而且,线性模型也可以用于分类!
考虑二分类问题,我们有训练数据集
,我们需要一个模型,能够告诉我们P(y|x)。比如,这个模型告诉我们P(y=1|x1)=0.6,P(y=0|x1)=0.4,然后因为0.6>0.4,所以模型认为特征x1对应的预测值y为1.如何找到这个模型呢?
借用线性模型的思想,我们引入w,b,由于w·x+b取值是连续的,所以它不能拟合离散变量y(取值为0或1),但可以用它拟合同为连续变量的条件概率P(y=1|x)。
我们注意到,w·x+b取值范围是-∞~+∞,不符合概率取值范围0~1,因此得将w·x+b进行转换,使其映射到0~1的范围。函数可以实现转换,最理想的是单位阶跃函数:

但是阶跃函数不满足单调可导,也就不能用梯度下降法求解损失函数最小化的参数w,b。我们可以找一个可导、与阶跃函数形状相似的函数,对数概率函数(logistic function)就是这样一个替代函数:
,该函数也称sigmoid函数,该函数具有如下的特性:当x趋近于负无穷时,y趋近于0;当x趋近于正无穷时,y趋近于1;当x=1/2时,y=0. 可参考:http://www.cnblogs.com/maybe2030/p/5678387.html
一、逻辑斯蒂回归的概览
1.逻辑斯蒂回归是一种分类算法,最常用的二项逻辑斯蒂回归只适用于二分类问题;
2.逻辑斯蒂回归算法的思想就是:假定一件事情发生(Y=1)的对数几率是特征(x)的线性函数。或者说,在逻辑斯蒂回归模型中,输出Y=1的对数几率是由输入x的线性函数表示的。
3.二项逻辑斯蒂回归模型定义:
二项逻辑斯蒂回归模型是如下的条件概率分布:

说明:上述两个式子代表了所有逻辑斯蒂回归模型的通用表达式,具体模型之间的差别在于模型参数w和b。对于给定的输入实例x,按照上述两式可以求得P(Y=1|x)和P(Y=0|x)。逻辑斯蒂回归比较两个条件概率值的大小,将实例x分到概率值较大的那一类。
4.Logistic 回归可以看作是一个非常小的神经网络。下图是一个典型例子:(参考文献4)

二、逻辑斯蒂回归的流程
我们要使用逻辑斯蒂回归模型搭建一个分类器,首先得写出这个逻辑斯蒂回归模型,其次得写出模型好坏的评价函数(即代价函数cost function),最后是估计模型的参数w(b被融入到w中,即取w0=b,且将偏置项的变量x0设置为1)——即最小化损失函数来求得参数w。
1.对于给定的训练数据集
,首先我们初始化一个模型w,认为
。
显然对于训练数据(xi,yi),最好的模型是能够给出P(y=1|xi)=1,P(y=0|xi)=0这样的预测,显然这是不容易的。同时,由于我们一共有m条训练数据,我们必须要找到这样的模型,使得模型对全部训练数据集的整体预测效果最佳。
2.如何评价模型好坏?直观地理解就是比较各个训练样本的真实标签
和模型预测标签
之间的误差值的加总,而这个总误差不便于求导。因此我们另外从极大似然估计的角度去描述模型好坏,即使得所有训练数据最有可能发生的模型w,就是我们要找的模型。(摘自参考资料2)

因此得到:
................................(*)
3.最后就是最小化J(θ),逻辑斯蒂回归学习中通常采用的方法是梯度下降法和牛顿法。参考文献3。
对上述(*)式的J(θ)求θ的导数,可得:

根据梯度下降法,得到如下的更新公式:

三、总结
以上的1步就是给出逻辑斯蒂回归这一模型认为的判别函数集(模型参数未定,所以是一个函数集),第2步就是给出损失函数,就是给出了判断函数好坏的标准,第3步就是最小化损失函数来求得模型参数,就是挑选最好的函数的过程。
Logistic Regression学习笔记的更多相关文章
- 学习Logistic Regression的笔记与理解(转)
学习Logistic Regression的笔记与理解 1.首先从结果往前来看下how logistic regression make predictions. 设我们某个测试数据为X(x0,x1, ...
- Classification week2: logistic regression classifier 笔记
华盛顿大学 machine learning: Classification 笔记. linear classifier 线性分类器 多项式: Logistic regression & 概率 ...
- 机器学习5—logistic回归学习笔记
机器学习实战之logistic回归 test5.py #-*- coding:utf-8 import sys sys.path.append("logRegres.py") fr ...
- Stepwise regression 学习笔记
之前在 SPSS 中的回归分析算法中发现,在它里面实现的算法有 Enter 和 Stepwise 两种.Enter 很容易理解,就是将所有选定的自变量一起放入模型中,直接去计算包含所有自变量的整个模型 ...
- Sklearn--(SVR)Regression学习笔记
今天介绍一个机器学习包,sklearn.其功能模块有regression\classification\clustering\Dimensionality reduction\data preproc ...
- 编程作业2.1:Logistic regression
题目 在这部分的练习中,你将建立一个逻辑回归模型来预测一个学生是否能进入大学.假设你是一所大学的行政管理人员,你想根据两门考试的结果,来决定每个申请人是否被录取.你有以前申请人的历史数据,可以将其用作 ...
- [Machine Learning]学习笔记-Logistic Regression
[Machine Learning]学习笔记-Logistic Regression 模型-二分类任务 Logistic regression,亦称logtic regression,翻译为" ...
- ufldl学习笔记与编程作业:Logistic Regression(逻辑回归)
ufldl学习笔记与编程作业:Logistic Regression(逻辑回归) ufldl出了新教程,感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听 ...
- 学习笔记(七): Logistic Regression
目录 Calculating a Probability Model Training 1.Loss function for Logistic Regression 2.Regularization ...
随机推荐
- Python 调度算法 死锁 静动态链接(七)
1 select poll epoll的区别 基本上select有3个缺点: 连接数受限 查找配对速度慢 数据由内核拷贝到用户态 poll改善了第一个缺点 epoll改了三个缺点. (1)select ...
- windows 服务器时间同步失败处理方法
服务器的时间同步失败,通过命令行的形式进行处理. 1.编写时间命令行代码 w32tm /config /manualpeerlist:time.windows.com /syncfromflags:M ...
- Selenium2学习(十二)-- alert\confirm\prompt
前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决. alert\confirm\prompt ...
- JavaScript模块化编程之AMD - requireJS基础使用
JavaScript模块化编程之AMD requireJS基础使用 标签(空格分隔): JavaScript 参考文章 AMD规范 AMD是"Asynchronous Module Defi ...
- 1.GlusterFS 初识
一. GlusterFS 初始 1.1 分布式文件系统出现 计算机通过文件系统管理.存储数据,而现在数据信息爆炸的时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统的存储 ...
- FFT算法实现——基于GPU的基2快速傅里叶变换
最近做一个东西,要用到快速傅里叶变换,抱着蛋疼的心态,自己尝试写了一下,遇到一些问题. 首先看一下什么叫做快速傅里叶变换(FFT)(来自Wiki): 快速傅里叶变换(英语:Fast Fourier T ...
- C++11之std::future和std::promise和std::std::packaged_task
为什么C++11引入std::future和std::promise?C++11创建了线程以后,我们不能直接从thread.join()得到结果,必须定义一个变量,在线程执行时,对这个变量赋值,然后执 ...
- { ($0, Resolver($0.box)) }(Promise<T>(.pending)):闭包的定义与执行合一
public class func pending() -> (promise: Promise<T>, resolver: Resolver<T>) { return ...
- 【mysql案例】mysql5.6.14配置my.cnf多实例,mysql_install_db初始化不读取my.cnf配置文件
1.1.1. mysql5.6.14多实例my.cnf时,初始化不读取my.cnf配置文件 [环境描写叙述] 在多实例配置的/etc/my.cnf环境中,运行mysql_install_db后.启动M ...
- BZOJ4001:[TJOI2015]概率论(卡特兰数,概率期望)
Description Input 输入一个正整数N,代表有根树的结点数 Output 输出这棵树期望的叶子节点数.要求误差小于1e-9 Sample Input 1 Sample Output 1. ...