回归——线性回归,Logistic回归,范数,最大似然,梯度,最小二乘……
写在前面:在本篇博客中,旨在对线性回归从新的角度考虑,然后引入解决线性回归中会用到的最大似然近似(Maximum Likelihood Appropriation-MLA)
求解模型中的参数,以及梯度下降法解决MLA。然后分析加入不同范数(L0, L1, L2)对线性回归的影响。其次,另外一个重点是Logistic回归,他们分别用来
做回归和分类。线性回归与Logistic回归的区别,以及由Logistic回归引出的SoftMax回归及其用途。
一。线性回归
(1)残差
对于线性回归模型,我们一般使用二次损失函数,其形式为:
有时我们会直接使用它,然后用梯度下降的方法直接解决,但是它是怎么推导出来的呢?
这里使用一种新的思路:
假设对于一个房屋的数据集,一幢房子的价格可能会受其面积,几居室,交通因素,楼层等因素的影响,假设最终价格与这些因素都是线性的关系。我们的目标
是拟合出一条直线(超平面),可以由这些feature得出预测的房屋价格。图示如下:
这样实际的数据点与拟合出的直线之间会有一定的距离,我们称之为残差。而且可以证明(通过中心极限定理),残差ε(i)(0<=i<=m)是独立同分布的
(independently and identically distribution -IID),服从均值为0,方差为某定值σ2的高斯分布。即:
(2)最大似然估计
因为数据点也是独立同分布的,因此我们可以用联合概率分布来计算似然概率:
然后,下面都是套路啊。。。连乘计算太困难,所以取对数。。。
红框中的都是常数,因此可以省略不考虑,所有就得到了我们的lost function。加上1/2是因为方便后面求导。
(3)用最小二乘法解MLA的参数θ
假设我们的数据是由M个N维样本组成的矩阵X,注意另外还有一维常数项,全为1.
则目标函数为:
可以看到,J(θ)是关于θ的二次函数,且二次项系数大于0,则我们可以直接求导然后求其导数的驻点就可以得到整个函数的最小值了。
则 θ = (xTx)-1 XTy
为防止xTx不可逆,我们有时需要加入一个扰动项:
θ = (xTx + λI)-1 XTy
在最小二乘法的线性回归中,我们的目标方程是:
但是,有时候训练出来的模型会太复杂而导致过拟合,因此需要加入一定的惩罚项(正则项Regularization):
L0: θ(i) (0 <= i <= M)中非零的个数;
L1: ∑i=0M = |θ(i)| 即θ绝对值的和;
L2: ∑i=0M = (θ(i))2 即θ的平方和。
在实际的应用中,因为平方项比较好求导,所以L2用的最广泛。
加入正则项的目标函数为:
则,θ = (xTx + λI)-1 XTy
以上就是用最小二乘法解决MLA参数问题的解法。
(4)用梯度下降法解MLA的参数θ
目标函数为:
- 初始化θ(随机初始化);
- 沿着负梯度方向迭代,更新后的θ使J(θ)更小:θj = θj - α (∂J(θ) / ∂θ)
批量梯度下降:
随机梯度下降:
批量 VS 随机:
每次迭代都要用所有的数据 VS 随机选择一个数据就可以来做更新
一个非常非常需要注意的地方:
线性回归中的线性指的是:这里的线性是指参数是线性的,与数据x无关!!!
二。Logistic回归
(1)引出
一个大胆的想法:用线性回归来做分类如何?比如既然都是找一条超平面,我们何不用训练出来的回归直线来做分类。如下图中右上角的图片所示,如果函数值小于0.5为A类,如果大于0.5为B类。
然而,理想很丰满,现实很骨感。实际是不可以的!
如下图中右下角的图片,如果有一个非常严重的离群点,则会导致我们的回归线网离群点方向偏移,这样会导致很多错误分类,从而完全无法分类。
虽然线性回归无法解决分类问题,但是我们可以使用它的变种——Logistic回归来解决!!
引入sigmoid函数:
则最大似然(联合概率分布)为:注意 y = 0 / 1, 所以中,只会有一项存在。
接下来依然是套路。。取对数,求偏导。
所以,Logistic回归的参数学习规则为:
批量梯度上升 VS 随机梯度上升
(与线性回归模型非常相像,只不过一个是梯度下降,一个梯度上升)
三。SoftMax回归
既然Logistic回归可以解决二分类的问题,那么我们可能又会问:对于多分类问题,除了OVA 及 OVO外是否有一种方法可以直接实现多分类呢?
Of course!!一种基于Logistic回归的soft Max回归可以实现多分类。
基本的思路是:对于每个样本,我们不认为它仅仅属于一个类,而是将它属于每个类的概率大小纪录下来,最终将其分入概率最大的一个类中。
这样,参数θ由一维向量变成了一个矩阵,我们仍然可以使用批量梯度下降和随机梯度下降的方法来估计参数。
另外,除了分类,Logistic也是推荐系统中一个强有力的工具。
[总结]
我们分类了线性回归通过线性模型中残差的概念引出来,然后通过最大似然估计得出了它的目标函数。
在求解目标函数时,我们可以使用最小二乘的方法来直接估计,也可以使用梯度下降的方法来迭代估计。同时,为了防止过拟合,我们又介绍了范数/正则项(L0,L1,L2)及他们的区别。
求解完线性回归的问题,我们有考虑能否用回归来解决分类问题。这样,便引入了Logistic回归。他的求解过程与线性回归非常相似,只是加了一个sigmoid函数,而且解参数时使用的是梯度上升。
解决完二分类问题后希望可以直接解决多分类问题,所以引入了softMax回归,它仅仅是Logistic回归的矩阵版本,求解过程几乎一样。
最后需要注意的一点是:线性模型指的是对参数θ/w是线性的,而不是说数据x必须是线性的!!!切记切记。
最后给出手写版的Linear Regression 和 Logistic Regression的直观对比:
回归——线性回归,Logistic回归,范数,最大似然,梯度,最小二乘……的更多相关文章
- 机器学习之线性回归---logistic回归---softmax回归
在本节中,我们介绍Softmax回归模型,该模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签 可以取两个以上的值. Softmax回归模型对于诸如MNIST手写数字分类等问题 ...
- 从Softmax回归到Logistic回归
Softmax回归是Logistic回归在多分类问题上的推广,是有监督的. 回归的假设函数(hypothesis function)为,我们将训练模型参数,使其能够最小化代价函数: 在Softmax回 ...
- Softmax回归 softMax回归与logistic回归的关系
简介 在本节中,我们介绍Softmax回归模型,该模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签 可以取两个以上的值. Softmax回归模型对于诸如MNIST手写数字分 ...
- 『科学计算』通过代码理解线性回归&Logistic回归模型
sklearn线性回归模型 import numpy as np import matplotlib.pyplot as plt from sklearn import linear_model de ...
- 第三集 欠拟合与过拟合的概念、局部加权回归、logistic回归、感知器算法
课程大纲 欠拟合的概念(非正式):数据中某些非常明显的模式没有成功的被拟合出来.如图所示,更适合这组数据的应该是而不是一条直线. 过拟合的概念(非正式):算法拟合出的结果仅仅反映了所给的特定数据的特质 ...
- 机器学习之逻辑回归(logistic回归)
前言 以下内容是个人学习之后的感悟,转载请注明出处~ 逻辑回归 一.为什么使用logistic回归 一般来说,回归不用在分类问题上,因为回归是连续型模型,而且受噪声影响比较大 ...
- SPSS—回归—二元Logistic回归案例分析
数据分析真不是一门省油的灯,搞的人晕头转向,而且涉及到很多复杂的计算,还是书读少了,小学毕业的我,真是死了不少脑细胞, 学习二元Logistic回归有一段时间了,今天跟大家分享一下学习心得,希望多指教 ...
- 对线性回归,logistic回归和一般回归的认识
原文:http://www.cnblogs.com/jerrylead/archive/2011/03/05/1971867.html#3281650 对线性回归,logistic回归和一般回归的认识 ...
- 线性回归,logistic回归和一般回归
1 摘要 本报告是在学习斯坦福大学机器学习课程前四节加上配套的讲义后的总结与认识.前四节主要讲述了回归问题,回归属于有监督学习中的一种方法.该方法的核心思想是从连续型统计数据中得到数学模型,然后将该数 ...
随机推荐
- Javascript之回调函数(callback)
1.回调函数定义: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方 ...
- 关于IE6/7的 inline-block
今天在写代码的时候使用了inline-block,但是很意外的在IE6/7下此属性不给力~~ 但是由于我既需要他是个内联数据,又要设置它的宽度设置block,所以只能使用inline-block. 所 ...
- JS 字符串转日期格式 日期格式化字符串
/** * @author 陈维斌 http://www.cnblogs.com/Orange-C/p/4042242.html%20 3 * 如果想将日期字符串格式化,需先将其转换为日期类型Date ...
- TI CC2541的串口输出.
http://blog.csdn.net/feilusia/article/details/47431659 基本上看上面这个博客的. 重点是: 1. 关闭流控, 在npi.h里面, 将 #defin ...
- LUA之面向对象
Account = { balance=0, withdraw = function (self, v) self.balance = self.balance - v end } function ...
- ubuntu下搭建JAVA开发环境【转】
转自:http://jingyan.baidu.com/article/86fae346b696633c49121a30.html JAVA开发环境是一种跨平台的程序设计语言,可以在windows.L ...
- JS 动态加载脚本 执行回调_转
关于在javascript里面加载其它的js文件的问题可能很多人都遇到过,但很多朋友可能并不知道怎么判断我们要加载的js文件是否加载完成,如果没有加载完成我们就调用文件里面的函数是不会成功的.本文讲解 ...
- 【原创】纯干货,Spring-data-jpa详解,全方位介绍。
本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求.这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring ...
- CentOS下使用Percona XtraBackup对MySQL5.6数据库innodb和myisam的方法
Mysql卸载从下往上顺序 [root@localhost /]# rpm -e --nodeps qt-mysql-4.6.2-26.el6_4.x86_64[root@localhost /]# ...
- Oracle中左右外连接详解
数据表的连接有: 1.内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2.外连接: 包括 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两 ...