线性回归和Logistic回归
线性回归
- 假设存在线性相关关系:\(y=a+bx\)
均方误差是回归任务中最常用的性能度量指标。因此,其损失函数为:
\[
J(a,b)=\frac{1}{2m}\sum_{i=1}^{m}(y^{'(i)}-y^{(i)})^2=\frac{1}{2m}\sum_{i=1}^{m}(a+bx^{(i)}-y^{(i)})^2
\]
其中,\(y'\)为预测值,\(y\)为实际值。
\(J(a,b)\)中,\(x^{(i)}\)和\(y^{(i)}\)是常量参数(为\(m\)个样本各自的\(x\)和\(y\)值),而\(a\)和\(b\)是自变量。我们要做的,就是找到最好的\(a\)和\(b\),使得\(J(a,b)\)取值最小。
通用线性回归模型:利用线性函数对一个或多个自变量(\(x\)或\((x_1,x_2,\cdots,x_k)\))和因变量\(y\)之间的关系进行拟合的模型。
其函数形式为:
\[
f(x_1,x_2,\cdots,x_k)=a+b_1x_1+b_2x_2+\cdots + b_kx_k
\]
\(b\)直观表达了各属性在预测中的重要性。因此,线性模型有很好的可解释性(comprehensibility)。
对离散属性,若属性值间存在序关系,可通过连续化将其转化为连续值。例如,二值属性“高”、“矮”可转化为\(\{1.0,\ 0.0\}\)。三值属性“高”、“中”、“低”可转化为\(\{1.0,\ 0.5,\ 0.0\}\)。
若属性值间不存在序关系,假定有\(k\)个属性值,则通常可转化为\(k\)维向量。如“西瓜”、“南瓜”、“黄瓜”可转化为\((0,0,1),\ (0,1,0),\ (1,0,0)\)。若将无序属性连续化,则会不恰当地引入序关系。
用线性回归模型拟合非线性关系
设\(x_1=x^2\),\(x_2=x\),有:
\[
f(x_1,x_2)=a+b_1x^2+b_2x=a+b_1x_1+b_2x_2
\]
这时,就相当于拟合了一条二阶多项式对应的曲线。
梯度下降法
梯度下降法:从任意点开始,在该点对目标函数求导,沿着导数方向走一个给定步长,如此循环迭代,直至走到导数为0的位置,则达到极小值。
函数\(J\)分别对自变量\(a\)和\(b\)取偏微分:
\[
\frac{\partial J(a,b)}{\partial a}=\frac{1}{m}\sum_{i=1}^{m}((a+bx^{(i)})-y^{(i)})
\]
\[
\frac{\partial J(a,b)}{\partial b}=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}((a+bx^{(i)})-y^{(i)})
\]
- 任意给定\(a\)和\(b\)的初始值。
\[
a=0; b=0
\] - 用梯度下降法求解\(a\)和\(b\),伪代码如下:
\[
repeat\ until\ convergence \{
a = a - \alpha \frac{\partial J(a,b)}{\partial a},
b = b-\alpha \frac{\partial J(a,b)}{\partial b}
\}
\]
当下降的高度小于某个给定的阈值时,则停止下降。
上述伪代码又可表示为:
\[
repeat\ until\ convergence \{ \\
sumA = 0, \\
sumB = 0,\\
for i = 1 to m \{ \\
sumA = sumA + (a+bx^{(i)}-y^{(i)}), \\
sumB = sumB + x^{(i)}(a+bx^{(i)}-y^{(i)})
\}\\
a = a - \alpha \frac{sumA}{m},\\
b = b - \alpha \frac{sumB}{m}
\}
\]
- 超参数\(\alpha\):是梯度下降算法中的步长参数,必须人来手工指定。
- 如果训练程序是通过人工指定迭代次数来确定退出程序,则迭代次数也是一个超参数。
- 如果训练程序以模型结果与真实结果的整体差值小于某一个阈值为退出条件,则这个阈值就是超参数。
用\(\theta_0\)来替代\(a\),用\(\theta_1\)到\(\theta_n\)来代替\(b_1\)到\(b_n\),则线性回归模型变为:
\[
f(1,x_1,x_2,\cdots,x_n)=\theta_0 + \theta_1x_1+\theta_2x_2+\cdots + \theta_nx_n
\]
对应的目标函数为:
\[
J(\theta_0,\theta_1,\cdots,\theta_n)=\frac{1}{2m}\sum_{i=1}^{m}(y'^{(i)}-y^{(i)})^2
\]
梯度下降的实现过程为:
\[
repeat\ until\ convergence \{
\Theta = \Theta - \alpha \frac{\partial J(\theta)}{\partial \theta}
\}
\]
最小二乘法
令\(B=(b;a)\),将数据集表示为一个\(m\times (k+1)\)大小的矩阵\(X\),其中每一行对应一个示例。每行的前\(k\)个元素对应示例的属性值,最后一个元素恒为1。则有:
\[
J(B) = (Y-XB)^T(Y-XB)
\]
对\(B\)求导,得:
\[
\frac{\partial J}{\partial B}=2X^T(XB-Y)
\]
当\(X^TX\)为满秩矩阵时,令上式为零,可得:
\[
B^*=(X^TX)^{-1}X^TY
\]
而在现实中,\(X^TX\)经常不是满秩的,此时可解出多个\(B\),都能使均方误差最小化。选择哪一个解作为输出,将由学习算法的归纳偏好决定,如引入正则化(regularization)项。
线性回归用于分类(logistic regression,LR)
找一个单调可微函数将分类任务的真实标记\(y\)与线性回归模型的预测值联系起来。引入对数几率函数(logistic function)
\[h=\frac{1}{1+e^{-z}}\]
可得到:\[h(x)=\frac{1}{1+e^{-w^Tx+b}}\]
- 可直接对分类可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题。
- 可得到近似概率的预测。
一般而言,当\(y>0.5\)时,\(x\)被归类为真或阳性;否则,当\(y \leq0.5\)时,\(x\)被归类为假或阴性。
因此,LR典型的应用于二分类问题上。
该模型函数在\(y=0.5\)附近非常敏感,自变量取值稍有不同,因变量取值就会有很大差异,所有不用担心出现大量因细微特征差异而被归错类的情况。
- 任何事情,上来先做个线性回归,即使无法得出结论,也不会消耗太多资源。
- 非线性模型对于计算量的需求远大于线性模型。
目标函数
求解LR目标函数的过程,就是对LR模型函数进行极大似然估计的过程。
\(h(x)\)实际上是\(x\)为阳性的分布概率,所以,才会在\(h(x)>0.5\)时将\(x\)归于阳性。即\(h(x)=P(y=1)\)。反之,样例是阴性的概率为:\(P(y=0)=1-h(x)\)。
它们由训练数据\(x\)所限定,因此,
\[
P(y=1|x)=h(x); \\ P(y=0|x)=1-h(x)
\]
根据二项分布公式,可得:
\[
P(y|x)=h(x)^y(1-h(x))^{(1-y)}
\]
假设训练集有\(m\)个数据,那么其联合概率为:
\[
L(\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)})}
\]
求取\(\theta\)的值,就是让\(L(\theta)\)达到最大。
求对数,得到对数似然函数:
\[
l(\theta)=log(L(\theta))=\sum_{i=1}^m[y^{(i)}log(h_{\theta}(x^{(i)}))+(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))]
\]
求出让\(l(\theta)\)最大值的\(\theta\)。
由于,我们需要的是目标函数具有最小值,因此,设定:
\[
J(\theta)=-l(\theta)
\]
\(J(\theta)\)为负对数似然函数,为LR的目标函数。
如何求解\(\theta\)
- 通过对\(J(\theta)\)求导获得下降方向——\(J'(\theta)\);
- 根据预设的步长\(\alpha\),更新参数\(\theta:=\theta-\alpha J'(\theta)\);
- 重复以上两步直到逼近最优值,满足终止条件。
\[
\frac{\partial J(\theta)}{\partial \theta_j}=\sum_{i=1}^{m}[h_{\theta}(x^{(i)})-y^{(i)}]x_j^{(i)};\ j = 1,2,\cdots,n
\]
LR处理多分类问题
把二分类问题分成多次来做。
假设一共有\(n\)个类别,就构造\(n\)个LR分类模型。第一个模型用来区分label_1
和non-label_1
;第二个模型用来区分label-2
和non-label_2
;第\(n\)个模型用来区分label_n
和non_label_n
。
使用时,每个输入数据都被这\(n\)个模型同时预测。最后,哪个模型得出了Positive结果,且预测值最大,就是该数据最终的结果。
线性回归和Logistic回归的更多相关文章
- 回归——线性回归,Logistic回归,范数,最大似然,梯度,最小二乘……
写在前面:在本篇博客中,旨在对线性回归从新的角度考虑,然后引入解决线性回归中会用到的最大似然近似(Maximum Likelihood Appropriation-MLA) 求解模型中的参数,以及梯度 ...
- 对线性回归,logistic回归和一般回归的认识
原文:http://www.cnblogs.com/jerrylead/archive/2011/03/05/1971867.html#3281650 对线性回归,logistic回归和一般回归的认识 ...
- 对线性回归,logistic回归和一般回归
对线性回归,logistic回归和一般回归 [转自]:http://www.cnblogs.com/jerrylead JerryLead 2011年2月27日 作为一个机器学习初学者,认识有限,表述 ...
- 机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)
本文介绍了机器学习中基本的优化算法—梯度下降算法和随机梯度下降算法,以及实际应用到线性回归.Logistic回归.矩阵分解推荐算法等ML中. 梯度下降算法基本公式 常见的符号说明和损失函数 X :所有 ...
- 线性回归,logistic回归和一般回归
1 摘要 本报告是在学习斯坦福大学机器学习课程前四节加上配套的讲义后的总结与认识.前四节主要讲述了回归问题,回归属于有监督学习中的一种方法.该方法的核心思想是从连续型统计数据中得到数学模型,然后将该数 ...
- 线性回归、Logistic回归、Softmax回归
线性回归(Linear Regression) 什么是回归? 给定一些数据,{(x1,y1),(x2,y2)…(xn,yn) },x的值来预测y的值,通常地,y的值是连续的就是回归问题,y的值是离散的 ...
- 在matlab中实现线性回归和logistic回归
本文主要讲解在matlab中实现Linear Regression和Logistic Regression的代码,并不涉及公式推导.具体的计算公式和推导,相关的机器学习文章和视频一大堆,推荐看Andr ...
- 1.线性回归、Logistic回归、Softmax回归
本次回归章节的思维导图版总结已经总结完毕,但自我感觉不甚理想.不知道是模型太简单还是由于自己本身的原因,总结出来的东西感觉很少,好像知识点都覆盖上了,但乍一看,好像又什么都没有.不管怎样,算是一次尝试 ...
- 线性回归,logistic回归分类
学习过程 下面是一个典型的机器学习的过程,首先给出一个输入数据,我们的算法会通过一系列的过程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计,也被称为构建一个模型.就如同上面的线性 ...
- 机器学习之线性回归以及Logistic回归
1.线性回归 回归的目的是预测数值型数据的目标值.目标值的计算是通过一个线性方程得到的,这个方程称为回归方程,各未知量(特征)前的系数为回归系数,求这些系数的过程就是回归. 对于普通线性回归使用的损失 ...
随机推荐
- 痞子衡嵌入式:常用的数据差错控制技术(1)- 重复校验(Repetition Code)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式里数据差错控制技术-重复校验. 在嵌入式应用里,除了最核心的数据处理外,我们还会经常和数据传输打交道.数据传输需要硬件传输接口的支持 ...
- SpringCloud学习(二):微服务入门实战项目搭建
一.开始使用Spring Cloud实战微服务 1.SpringCloud是什么? 云计算的解决方案?不是 SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具 ...
- Java开发笔记(七十七)使用Optional规避空指针异常
前面在介绍清单用法的时候,讲到了既能使用for循环遍历清单,也能通过stream流式加工清单.譬如从一个苹果清单中挑选出红苹果清单,采取for循环和流式处理都可以实现.下面是通过for循环挑出红苹果清 ...
- Java 学习笔记 网络编程 使用Socket传输文件 CS模式
Socket的简单认识 Socket是一种面向连接的通信协议,Socket应用程序是一种C/S(Client端/Server端)结构的应用程序 Socket是两台机器间通信的端点. Socket是连接 ...
- 【开源】Netty轻松实现聊天室,附带数据记录,聊天历史
阅读本文约“2.5分钟” 听说快七夕······ 不对,这不是今天的主题,嘿嘿. 今天说说一个小的网页聊天室,功能如下 群聊无限制 记录用户群聊信息 下次登录显示聊天历史 消息发送速度(光速) 聊天历 ...
- SQL中# 与$ 的区别
区别: (1)#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是id,则解析成的sql为order by "id&quo ...
- RESTful api风格介绍
RESTful 接口是目前来说比较流行的一种接口,平常在开发中会非常常见. 有过和后端人员对接接口的小伙伴都应该知道,我们所做的大多数操作都是对数据库的四格操作 “增删改查” 对应到我们的接口操作分别 ...
- splay详解(一)
前言 Spaly是基于二叉查找树实现的, 什么是二叉查找树呢?就是一棵树呗:joy: ,但是这棵树满足性质—一个节点的左孩子一定比它小,右孩子一定比它大 比如说 这就是一棵最基本二叉查找树 对于每次插 ...
- 如何使用apache的ab压力测试小工具传参数
前言: windows下安装的phpstudy软件里集成的apache带了ab工具,所以可以不用单独下载.其他的操作系统下的安装或部署这里就不介绍了! 一. 使用windows的cmd进入apache ...
- 用webpack打包加密静态配置文件
webpack处理静态文件,如json.xml等配置文件,可以采用 copy-webpack-plugin 插件直接复制到打包后的文件夹下,但如果想采用一些手段隐藏一下这些配置文件的内容怎么办呢? 虽 ...