ML-分类与逻辑回归
布尔分类(binary classification)问题:
训练集:$S=\{(x^{(i)}, y^{(i)})\}$
输入:特征向量$x$
期望输出:$y\in\{0, 1\}$
这里使用的假设函数(hypotheses)不再是特征向量各分量的线性组合,而是:
$h_{\theta}(x) = g(\theta^Tx) = \frac{1}{1 + \text{exp}(-\theta^Tx)}$
这里$g(x)$即逻辑(logistic)函数或称S型(sigmoid)函数。
Note:尽管从$0-1$平滑增长的函数还有很多,但由于一些原因(我们以后将会看到),S型函数是一个相当合理的选择。
先考虑函数$g(x)$的导数:
$\frac{dg(x)}{dx} = \frac{1}{dx}d\frac{1}{1 + \text{exp}(-x)}$
$= \frac{e^{-x}}{(1 + e ^ {-x}) ^ 2}$
$=g(x)(1 - g(x))$
我们做出如下假定(assumptions):
$P(y = 1 | x; \theta) = h_\theta(x)$
$P(y = 0 | x; \theta) = 1 - h_\theta(x)$
合并两式,可以得到:
$p(y | x; \theta) = (h_\theta(x))^y(1 - h_\theta(x))^{1 - y}$
我们进一步假设$S$中训练样本都是相互独立的,那么关于参数$\theta$的似然函数可以写成:
$L(\theta) = p(\vec{y} | X; \theta)$
$=\prod_{i = 1}^{m}p(y^{(i)} | x^{(i)}; \theta)$
$=\prod_{i = 1}^{m}(h_\theta(x^{(i)}))^{y^{(i)}}(1 - h_\theta(x^{(i)}))^{1 - y^{(i)}}$
为了最大化$L(\theta)$,我们间接地最大化如下式子:
$l(\theta) = \text{log}L(\theta)$
$=\sum_{i = 1}^{m}y^{(i)}\text{log }h(x^{(i)}) + (1 - y^{(i)})\text{log}(1 - h(x^{(i)}))$
依旧考虑使用梯度下降更新$\theta$:
$\theta := \theta + \alpha\nabla_\theta l(\theta)$
Note:由于是最大化,因此这里梯度前的运算符使用$+$号
$\nabla_\theta l(\theta) = \sum_{i = 1}^m{y^{(i)}\cdot \frac{1}{h(x^{(i)})}\cdot \nabla_\theta h(x^{(i)})+(1 - y^{(i)})\cdot \frac{1}{1-h(x^{(i)})}\cdot \nabla_\theta(1 - h(x^{(i)}))}$
$=\sum_{i = 1}^m{\nabla_\theta h(x^{(i)})\cdot \frac{y^{(i)} - h(x^{(i)})}{h(x^{(i)})(1 - h(x^{(i)}))}}$
$=\sum_{i = 1}^m{\nabla_\theta g(\theta^Tx^{(i)})\cdot \frac{y^{(i)} - g(\theta^Tx^{(i)})}{g(\theta^Tx^{(i)})(1 - g(\theta^Tx^{(i)}))}}$
$=\sum_{i = 1}^m(y^{(i)} - g(\theta^Tx^{(i)}))x^{(i)}$
于是这样更新$\theta$:
$\theta := \theta + \alpha\sum_{i = 1}^m(y^{(i)} - g(\theta^Tx^{(i)}))x^{(i)}$
你或许会惊奇地发现,这里的更新规则与线性回归完全相同。
下面给出另一种最大化$l(\theta)$的方法。
牛顿迭代法求方程的实根:
对于函数$f:\mathbb{R}\rightarrow \mathbb{R}$,且存在某个实数$\theta$满足$f(\theta) = 0$,牛顿迭代法进行如下操作:
$\theta := \theta - \frac{f(\theta)}{f'(\theta)}$
来逼近$f$的根。
为了最大化$l(\theta)$,使用牛顿迭代逼近$l'(\theta)$的根。
即进行操:
$\theta := \theta - \frac{l'(\theta)}{l''(\theta)}$
在高维情形下,我们需要使用牛顿-拉弗森方法(Newton-Raphson method),更新方法如下:
$\theta := H^{-1}\nabla_\theta l(\theta)$
其中$H$是海森(Hessian)矩阵,定义方法如下:
$H_{ij}=\frac{\partial^2 l(\theta)}{\partial \theta_i \theta_j}$
通常情况下使用N-R方法更快(相较于梯度下降法)。
ML-分类与逻辑回归的更多相关文章
- CS229笔记:分类与逻辑回归
逻辑回归 对于一个二分类(binary classification)问题,\(y \in \left\{0, 1\right\}\),如果直接用线性回归去预测,结果显然是非常不准确的,所以我们采用一 ...
- 分类和逻辑回归(Classification and logistic regression)
分类问题和线性回归问题问题很像,只是在分类问题中,我们预测的y值包含在一个小的离散数据集里.首先,认识一下二元分类(binary classification),在二元分类中,y的取值只能是0和1.例 ...
- 斯坦福CS229机器学习课程笔记 part2:分类和逻辑回归 Classificatiion and logistic regression
Logistic Regression 逻辑回归 1.模型 逻辑回归解决的是分类问题,并且是二元分类问题(binary classification),y只有0,1两个取值.对于分类问题使用线性回归不 ...
- [Machine Learning] 逻辑回归 (Logistic Regression) -分类问题-逻辑回归-正则化
在之前的问题讨论中,研究的都是连续值,即y的输出是一个连续的值.但是在分类问题中,要预测的值是离散的值,就是预测的结果是否属于某一个类.例如:判断一封电子邮件是否是垃圾邮件:判断一次金融交易是否是欺诈 ...
- 机器学习算法笔记1_2:分类和逻辑回归(Classification and Logistic regression)
形式: 採用sigmoid函数: g(z)=11+e−z 其导数为g′(z)=(1−g(z))g(z) 如果: 即: 若有m个样本,则似然函数形式是: 对数形式: 採用梯度上升法求其最大值 求导: 更 ...
- Machine Learning--week3 逻辑回归函数(分类)、决策边界、逻辑回归代价函数、多分类与(逻辑回归和线性回归的)正则化
Classification It's not a good idea to use linear regression for classification problem. We can use ...
- ML(4)——逻辑回归
Logistic Regression虽然名字里带“回归”,但是它实际上是一种分类方法,“逻辑”是Logistic的音译,和真正的逻辑没有任何关系. 模型 线性模型 由于逻辑回归是一种分类方法,所以我 ...
- 逻辑回归(logic regression)的分类梯度下降
首先明白一个概念,什么是逻辑回归:所谓回归就是拟合,说明x是连续的:逻辑呢?就是True和False,也就是二分类:逻辑回归即使就是指对于二分类数据的拟合(划分). 那么什么是模型呢?模型其实就是函数 ...
- 【机器学习】Octave 实现逻辑回归 Logistic Regression
ex2data1.txt ex2data2.txt 本次算法的背景是,假如你是一个大学的管理者,你需要根据学生之前的成绩(两门科目)来预测该学生是否能进入该大学. 根据题意,我们不难分辨出这是一种二分 ...
- 线性回归,感知机,逻辑回归(GD,SGD)
线性回归 线性回归是一个回归问题,即用一条线去拟合训练数据 线性回归的模型: 通过训练数据学习一个特征的线性组合,以此作为预测函数. 训练目标:根据训练数据学习参数(w1,w2, ... , wn,b ...
随机推荐
- rabbitmq method之queue.declare
queue.declare即申请队列,首先对队列名作处理,若未指定队列名则随机生成一个,然后查询数据库队列是否已经创建,若创建完成则会申请队列返回 handle_method(#'queue.decl ...
- 使用dbghelp生成dump文件以及事后调试分析
前言 在产品的实际应用环境中,如果我们的程序在客户那里出现了问题,例如程序异常了,而这个时候的现象又不能还原或者很难还原重现,那么只有使用dump文件来保存程序的当前运行信息,例如调用堆栈等,同时使用 ...
- xtrabackup备份rds记录
在执行最后一步时 mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mys ...
- SVN迁项目
next -> 做为新项目检出,finish -> next -> finish -> 否,是
- PHP服务器配置环境变量
我们写的PHP应用程序,通常会分别在本地.开发.测试.RC.生产环境中运行,不同环境中全局变量各不相同.通常简单的部署做法是,每次部署到一个环境,都需要先修改对应的全局变量,然后再部署代码.如果部署频 ...
- (转)小心FPGA的JTAG口(上电和下电顺序)
同志们,根据ALTERA官方FAE(现场应用工程师)的强烈建议,请注意不要随意带电插拔你的JTAG下载接口,否则会损坏FPGA芯片的JTAG口信号管脚.现象:在排除了下载线的问题后,还是不能访问FPG ...
- linux------------centos防火墙
CentOS7默认的防火墙不是iptables,而是firewalle. 你可以用rpm -qa | grep iptables来查看,一般会出现两个一个是iptables 另一个是iptables. ...
- 自己写一个swap函数交换任意两个相同类型元素的值 对空指针的使用 字节大小的判断(二)了解原理
验证的代码: #include <stdio.h> int main(){ char c = 'z'; ) + (c << ) + () + 'a'; printf(" ...
- UEFI引导在GPT分区下安装win2008——抓住那只傲娇的win2008
上周遇到个客户DELL R520的服务器新采购了8块3T硬盘做备份服务器,raid配置5+1,一个磁21.8T.先用普通的装desktop OS的方法发现进去没raid盘,然后就按照官方的文档进入Li ...
- Centos下安装nginx rpm包
1 在nginx官方网站下载一个rpm包,下载地址是:http://nginx.org/en/download.html wget http://nginx.org/packages/centos/6 ...