Logistic Regression and Classification
分类(Classification)与回归都属于监督学习,两者的唯一区别在于,前者要预测的输出变量\(y\)只能取离散值,而后者的输出变量是连续的。这些离散的输出变量在分类问题中通常称之为标签(Label)。
线性回归的策略同样也适用于分类吗?答案是否定的。下面结合例子简要说明理由。假设我们现在的任务是根据肿瘤大小判断是否为良性肿瘤,答案当然只有yes或no。我们用\(y=1\)表示良性肿瘤,用\(y=0\)表示恶性肿瘤。当然,如果你想用其他两个不同的值分别对应这两类肿瘤也是可以的。在下图所示的例子中,我们都使用线性回归的方式进行分类。在左图中,如果样本对应的输出值小于\(0.5\),我们视其为恶性肿瘤,否则为良性肿瘤,分类效果还不错;在右图中,良性肿瘤的大小范围变广了一些,线性模型要发生偏转,如果仍然用\(0.5\)作为分类的阈值(Threshold),误分类的样本所占比例就不少了。另外一方面,该分类问题中\(y\)只能取0或1两种值,而线性模型预测的值去可以远大于1或远小于0,极大地偏离输出变量的值。因此,我们认为用线性回归解决分类问题是不明智的。
![]() |
![]() |
接下来,我们以二分类为基础展开讨论。样本标签\(y\in\{0,1\}\),标签为1的样本称为正样本(Positive Samples),标签为0的样本称为负样本(Negative Samples)。我们希望假设函数\(h_\theta(x)\in[0,1]\),选用logistic函数。下图为logistic函数曲线图,定义域为\((-\infty,+\infty)\),在整个定义域上都连续可导,其一阶偏导如下:
\begin{align}g'(z)&=\frac{d}{dz}\frac{1}{1+e^{-z}}\\&=-\frac{1}{(1+e^{-z})^2}\cdot \frac{d(1+e^{-z})}{dz}\\&=\frac{e^{-z}}{(1+e^{-z})^2}\\&=\frac{1}{1+e^{-z}}\cdot\left(1-\frac{1}{1+e^{-z}}\right)\\&=g(z)(1-g(z))\end{align}

我们的假设函数形式如下:
\begin{equation}h_\theta(x)=g(\theta^Tx)=\frac{1}{1+\exp(-\theta^Tx)}\end{equation}
假设分类问题中的后验概率(posterior probability)形式如下:
\begin{equation}P(y=1|x;\theta)=h_\theta(x)\end{equation}
\begin{equation}P(y=0|x;\theta)=1-h_\theta(x)\end{equation}
综合公式(7)和公式(8),用更紧凑的形式表述:
\begin{equation}P(y|x;\theta)=h_\theta(x)^y(1-h_\theta(x))^{1-y}\end{equation}
假设所有样本相互独立,则似然函数为:\begin{align}L(\theta)&=P(\vec{y}|X;\theta)\\&=\prod_{i=1}^mP(y^{(i)}|x^{(i)};\theta)\\&=\prod_{i=1}^m(h_\theta(x^{(i)})^{y^{(i)}}(1-h_\theta(x^{(i)}))^{1-y^{(i)}}\end{align}
将公式(13)转换为对数似然函数的形式:
\begin{equation}\ell(\theta)=\log L(\theta)=\sum_{i=1}^m y^{(i)}\log h_\theta(x^{(i)})+(1-y^{(i)})\log(1-h_\theta(x^{(i)}))\end{equation}
对数似然函数\(\ell(\theta)\)对参数\(\theta\)求导:
\begin{equation}
\begin{array}{ll}
&\quad\frac{\partial\ell(\theta)}{\partial \theta_i}\\
&=\sum_{j=1}^m\left(y^{(j)}\frac{1}{g(\theta^Tx^{(j)})}-(1-y^{(j)})\frac{1}{1-g(\theta^Tx^{(j)})}\right)\\
&\quad\cdot\frac{\partial}{\partial\theta_i}g(\theta^Tx^{(j)})\\
&=\sum_{j=1}^m\left(y^{(j)}\frac{1}{g(\theta^Tx^{(j)})}-(1-y^{(j)})\frac{1}{1-g(\theta^Tx^{(j)})}\right)\\
&\quad\cdot g(\theta^Tx^{(j)})(1-g(\theta^Tx^{(j)}))\frac{\partial}{\partial\theta_i}\theta^Tx^{(j)}\\
&=\sum_{j=1}^m\left(y^{(j)}(1-g(\theta^Tx^{(j)})-(1-y^{(j)})g(\theta^Tx^{(j)})\right)x_i^{(j)}\\ &=\sum_{j=1}^m(y^{(j)}-h_\theta(x^{(j)}))x_i^{(j)}
\end{array}
\end{equation}
最后,我们可以采用梯度上升(Gradient Ascend)的策略迭代更新参数\(\theta\),以使对数似然函数收敛到最大值,更新规则如下:
\begin{equation}\theta_i=\theta_i+\alpha\sum_{j=1}^m(y^{(j)}-h_\theta(x^{(j)}))x_i^{(j)}\end{equation}
我在数据集ionosphere上做了实验,实验代码在这里下载。该数据集一共有351个样本,每个样本有35个属性,其中第35个属性为'b'或'g'(表示bad或good),是一个二分类问题。我将整个数据集抽取7成作为训练集,剩下的作为测试集,最终得到的正确率为\(91.509\%\)。代码中有两点要说明:1)代码中实际上还考虑了对参数\(\theta\)正则化处理,避免某些参数过大,我们将LGClassifier.m中的lambda设置为0即可屏蔽正则项,在lambda=0.1时,正确率是会有提升的;2)本文中的目标函数是求使似然函数最大的参数,但是我们利用的LBFGS工具包只针对使目标函数最小的优化,我们只需要在文中的目标函数前面添加负号即可将最大化问题等价转化为最小化问题;最后,在针对参数\(\theta\)求倒数的时候,也需要在前面添加负号。
Logistic Regression and Classification的更多相关文章
- Logistic Regression求解classification问题
classification问题和regression问题类似,区别在于y值是一个离散值,例如binary classification,y值只取0或1. 方法来自Andrew Ng的Machine ...
- 使用sklearn和caffe进行逻辑回归 | Brewing Logistic Regression then Going Deeper
原文首发于个人博客https://kezunlin.me/post/c50b0018/,欢迎阅读! Brewing Logistic Regression then Going Deeper. Bre ...
- More 3D Graphics (rgl) for Classification with Local Logistic Regression and Kernel Density Estimates (from The Elements of Statistical Learning)(转)
This post builds on a previous post, but can be read and understood independently. As part of my cou ...
- Some 3D Graphics (rgl) for Classification with Splines and Logistic Regression (from The Elements of Statistical Learning)(转)
This semester I'm teaching from Hastie, Tibshirani, and Friedman's book, The Elements of Statistical ...
- 李宏毅机器学习笔记3:Classification、Logistic Regression
李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...
- Logistic Regression Using Gradient Descent -- Binary Classification 代码实现
1. 原理 Cost function Theta 2. Python # -*- coding:utf8 -*- import numpy as np import matplotlib.pyplo ...
- Classification week2: logistic regression classifier 笔记
华盛顿大学 machine learning: Classification 笔记. linear classifier 线性分类器 多项式: Logistic regression & 概率 ...
- 机器学习理论基础学习3.3--- Linear classification 线性分类之logistic regression(基于经验风险最小化)
一.逻辑回归是什么? 1.逻辑回归 逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的. logistic回归也称为逻辑回归,与线性回归这样输出 ...
- Classification and logistic regression
logistic 回归 1.问题: 在上面讨论回归问题时.讨论的结果都是连续类型.但假设要求做分类呢?即讨论结果为离散型的值. 2.解答: 假设: 当中: g(z)的图形例如以下: 由此可知:当hθ( ...
随机推荐
- Timus 1746 Hyperrook
题意:在一个n维坐标系中,坐标的范围是0到m - 1,如果两个点坐标只有一个维度的坐标不同则可以相互移动,给出p个点,问任意两个点之间路径为d的个数是多少,答案与p取模. 解法:只需要考虑两个点之间不 ...
- 工作流设计 zt
工作流设计 业务流程管理模块是本平台的重要组成部分,要实现将已经发布的标准中规范化的流程转化为具体计算机中的流程从而实现流程的自动运转,将标准化成果与员工的日常工作紧密结合起来,具有重要意义. 业务流 ...
- UVAlive3662 Another Minimum Spanning Tree 莫队算法
就是莫队的模板题 /* Memory: 0 KB Time: 1663 MS Language: C++11 4.8.2 Result: Accepted */ #include<cstdio& ...
- Ubuntu、CentOS上运行.net桌面程序
1.mono->winform 2.wine->windows程序
- Adobe CS6系列PJ方法
PJ中国人都懂得... 今天舍友问我photoshop cs6的PJ方法,我想这个问题大家都会遇到把,我这就小介绍下啦,很简单的... 我这里用PSCS6来介绍,其它软件都是一样的.而且PJ文件都是一 ...
- openstack学习线路指导
原文链接: http://www.aboutyun.com/thread-7225-1-1.html 网上很多hadoop资料,openstack资料相对较少,这里整理一下,帮助初学者尽快入门. 首先 ...
- HDU5781--ATM Mechine(概率dp)
题意:Alice忘记了自己银行里存了多少钱,只记得在[0,k]之间.每次取钱如果余额足够就出钱,否则警告一次,警告超过w次就会把你抓起来,在不想被警察抓起来的前提下,Alice采取最优策略,求期望取钱 ...
- oracle强制使用索引
select /*+ INDEX(表名,索引名称) */ col_1,...from xxx
- 单独批次性任务采用MySQL定时器解决需求
有时候我们在开发的时候会遇到一些需求是在某个固定的时间段实现某些特殊功能,只做一次或者有规律的每分钟一次每小时一次,那么这个时候我们可以启用MySQL的定时器来帮忙解决该问题. 比如,有一个场景是要求 ...
- SqlLite ---.net连接数据库
初识SqlLite ---.net连接数据库 SqlLite以小巧和嵌入式闻名,以前只是听说,现在终于忍不住要尝试下. 先下载ADO.NET2.0 Provider for SQLite,下载完后 ...

