线性回归、岭回归、lasso回归与逻辑回归LR_我想静静,的博客-程序员宝宝_逻辑回归lasso

技术标签: 机器学习  

线性回归

回归是监督学习的一个重要问题,回归用于预测输入变量和输出变量之间的关系。回归模型是表示输入变量到输出变量之间映射的函数。
回归问题的学习等价于函数拟合:使用一条函数曲线使其很好的拟合已知函数且很好的预测未知数据。

回归问题按照输入变量的个数可以分为一元回归和多元回归;按照输入变量和输出变量之间关系的类型,可以分为线性回归和非线性回归。
一元回归: y = a x + b y = ax + b y=ax+b
多元回归: h 0 ( x ) = ∑ i = 0 n θ i x i = θ T x h_{0}(x)= \sum _{i=0}^{n}\theta _{i}x_{i}= \theta ^{T}x h0(x)=i=0nθixi=θTx

应用场合

线性回归的应用场合大多是回归分析,一般不用在分类问题上,原因可以概括为一下两个:

1)回归模型是连续模型,即预测出的值都是连续值(实数值),非离散值;

2)线性回归在整个实数域内敏感度一致,预测结果受样本噪声的影响比较大。

求解

最小二乘法

假设模型结果与测量值误差满足,均值为0的高斯分布,即正态分布。这个假设是靠谱的,符合一般客观统计规律。
ϵ i = y i − h θ ( x i ) \epsilon _i = y_i-h_{\theta}(x_i) ϵi=yihθ(xi)
p ( ϵ i ) = p ( y i ∣ x i ; θ ) = 1 2 π δ e x p ( − ( y i − h θ ( x i ) ) 2 2 δ 2 ) p(\epsilon _i ) = p(y_{i}|x_{i};\theta)=\frac{1}{\sqrt{2\pi}\delta}exp(-\frac{( y_i-h_{\theta}(x_i))^2}{2\delta ^2}) p(ϵi)=p(yixi;θ)=2π δ1exp(2δ2(yihθ(xi))2)
似然函数:
L ( θ ) = ∏ i = 1 m p ( y i ∣ x i ; θ ) L(\theta)= \prod _{i=1}^{m}p(y_{i}|x_{i};\theta) L(θ)=i=1mp(yixi;θ)
取对数:在这里插入图片描述
需要极大似然估计,即最后一项的后半部分最小,即得到损失函数:

损失函数:平方损失函数 J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 2 ( X θ − y ) T ( X θ − y ) J(\theta)= \frac{1}{2}\sum _{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^{2}=\frac{1}{2}(X \theta -y)^{T}(X \theta -y) J(θ)=21i=1m(hθ(x(i))y(i))2=21(Xθy)T(Xθy)
最小化目标函数: 由于目标函数连续,那么 θ \theta θ 取值一定为目标函数的驻点,所以我们求导寻找驻点。

求导可得: ∇ θ J ( θ ) = ∇ θ ( 1 2 ( X θ − y ) T ( X θ − y ) ) = ∇ θ ( 1 2 ( θ T X T − y T ) ( X θ − y ) ) = ∇ θ ( 1 2 ( θ T X T X θ − θ T X T y − y T X θ + y T y ) ) = 1 2 ( 2 X T X θ − X T y − ( y T X ) T ) = X T X θ − X T y \nabla_{\theta}J(\theta)=\nabla_{\theta}(\frac{1}{2}(X \theta -y)^{T}(X \theta -y))= \nabla _{\theta}(\frac{1}{2}(\theta ^{T}X^{T}-y^{T})(X \theta -y)) \\ =\nabla_{\theta}(\frac{1}{2}(\theta ^{T}X^{T}X \theta - \theta ^{T}X^{T}y-y^{T}X \theta +y^{T}y)) \\ =\frac{1}{2}(2X^{T}X \theta -X^{T}y-(y^{T}X)^{T})=X^{T}X \theta -X^{T}y θJ(θ)=θ(21(Xθy)T(Xθy))=θ(21(θTXTyT)(Xθy))=θ(21(θTXTXθθTXTyyTXθ+yTy))=21(2XTXθXTy(yTX)T)=XTXθXTy
矩阵求导可参考:
标量、向量与矩阵的求导https://blog.csdn.net/weixin_42764932/article/details/113107265
向量、矩阵求导的重要公式https://blog.csdn.net/weixin_42764932/article/details/113107962

解得: θ = ( X T X ) − 1 X T y \theta=(X^{T}X)^{-1}X^{T}y θ=(XTX)1XTy

然鹅有解的前提是 X T X X^{T}X XTX是可逆的

梯度下降法

θ = θ − α ⋅ ∂ J ( θ ) ∂ θ \theta= \theta - \alpha \cdot \frac{\partial J(\theta)}{\partial \theta} θ=θαθJ(θ)
∂ ∂ θ j J ( θ ) = ∂ ∂ θ j 1 2 ( h θ ( x ) − y ) 2 = ( h θ ( x ) − y ) x j \frac{\partial}{\partial \theta _{j}}J(\theta)= \frac{\partial}{\partial \theta _{j}}\frac{1}{2}(h_{\theta}(x)-y)^{2}=(h_{\theta}(x)-y)x_{j} θjJ(θ)=θj21(hθ(x)y)2=(hθ(x)y)xj

  1. BGD:所有n个样本的平均损失

  2. SGD:单个样本处理

  3. mini-batch:多个样本处理

由于在线性回归中,目标函数收敛而且为凸函数,是有一个极值点,所以局部最小值就是全局最小值。

加入正则化

前面说了解析解是 θ = ( X T X ) − 1 X T y \theta=(X^{T}X)^{-1}X^{T}y θ=(XTX)1XTy

并且有解的前提是 X T X X^{T}X XTX是可逆的

X T X X^{T}X XTX不可逆或为了防止过拟合,我们可以增加lambda扰动 θ = ( X T X + λ I ) − 1 X T y \theta=(X^{T}X+ \lambda I)^{-1}X^{T}y θ=(XTX+λI)1XTy

按着求解过程倒回去,可以得到带有正则化项的损失函数

从另一个角度来看,这相当与给我们的线性回归参数增加一个惩罚因子,这是必要的,我们数据是有干扰的,不正则的话有可能数据对于训练集拟合的特别好,但是对于新数据的预测误差很大。

加入 L1 或 L2 正则化,让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。

可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什幺影响,一种流行的说法是『抗扰动能力强』。

岭回归Ridge regression

岭回归(ridge regression)其实就是在标准线性回归的基础上加入L2 正则化(regularization)
J = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j 2 J= \frac{1}{2}\sum _{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^{2}+ \lambda \sum _{j=1}^{n}\theta _{j}^{2} J=21i=1m(hθ(x(i))y(i))2+λj=1nθj2
L2约束就是一个圆,

要求的就是在约束的条件下寻找最小的损失。所以其实就是找约束的图形和等值线的交点。
在这里插入图片描述
ridge 更容易使得权重接近 0,但由于交点在坐标轴(某维度值为零)的概率较小,所以没有让参数稀疏化的作用,但可以让参数变小,减缓过拟合。

lasso回归lasso regression

lasso回归其实就是在标准线性回归的基础上加入L1 正则化(regularization)
J = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∣ ∣ w ∣ ∣ 1 J=\frac{1}{2}\sum _{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^{2}+ \lambda ||w||_{1} J=21i=1m(hθ(x(i))y(i))2+λw1
在这里插入图片描述
而L1损失的交点更容易在坐标轴上,所以更容易让参数稀疏化

正是由于 lasso 容易使得部分权重取 0,所以可以用其做 feature selection,lasso 的名字就指出了它是一个 selection operator。权重为 0 的 feature 对回归问题没有贡献,直接去掉权重为 0 的 feature,模型的输出值不变。

从贝叶斯角度理解这俩回归

给定观察数据D, 贝叶斯方法通过最大化后验概率估计参数w。
p(D|w)是似然函数(likelihood function): 参数向量w的情况下,观测数据D出现的概率

p(w)是参数向量的先验概率(prior)

对于似然函数部分有:
在这里插入图片描述
对后验概率取对数有

当先验概率分布满足正态分布的时候
在这里插入图片描述
在这里插入图片描述
可以看到,似然函数部分对应于损失函数(经验风险),而先验概率部分对应于正则项。L2正则,等价于参数w的先验概率分布满足正态分布。

当先验概率分布满足拉普拉斯分布的时候
在这里插入图片描述
在这里插入图片描述
L1正则,等价于参数w的先验概率分布满足拉普拉斯分布。

在这里插入图片描述

对比拉普拉斯分布和高斯分布,可以看到拉普拉斯分布在0值附近突出;而高斯分布在0值附近分布平缓,两边分布稀疏。对应地,L1正则倾向于产生稀疏模型,L2正则对权值高的参数惩罚重。

逻辑回归LR

逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型。

LR本质上还是线性回归,其实仅为在线性回归的基础上,套用了一个逻辑函数sigmoid。

逻辑曲线在z=0时,十分敏感,在z>>0或z<<0处,都不敏感,将预测值限定为(0,1)。

在这里插入图片描述
逻辑回归不是回归,是分类

交叉熵损失(极大似然损失)

满足二项分布 p ( y = 1 ∣ x ; w ) = π ( x ) , p ( y = 0 ∣ x ; w ) = 1 − π ( x ) p(y=1|x;w)= \pi(x),p(y=0|x;w)=1- \pi(x) p(y=1x;w)=π(x),p(y=0x;w)=1π(x)
{ p ( y = 1 ∣ x ; w ) = e x p ( w T x ) 1 + e x p ( w T x ) p ( y = 0 ∣ x ; w ) = 1 1 + e x p ( w T x ) \left\{ \begin{matrix} p(y=1|x;w)= \frac{exp(w^{T}x)}{1+exp(w^{T}x)}\\ \\p(y=0|x;w)= \frac{1}{1+exp(w^{T}x)}\\ \end{matrix} \right. p(y=1x;w)=1+exp(wTx)exp(wTx)p(y=0x;w)=1+exp(wTx)1

则对于单个样本,其后验概率为:
p ( y i ∣ x i ; w ) = ( e x p ( w T x i ) 1 + e x p ( w T x i ) ) y i ( 1 1 + e x p ( w T x i ) ) 1 − y i p(y_{i}|x_{i};w)=(\frac{exp(w^{T}x_{i})}{1+exp(w^{T}x_{i})})^{y_{i}}(\frac{1}{1+exp(w^{T}x_{i})})^{1-y_{i}} p(yixi;w)=(1+exp(wTxi)exp(wTxi))yi(1+exp(wTxi)1)1yi

似然函数:
L ( w ) = ∏ i = 1 m p ( y i ∣ x i ; w ) = ∏ i = 1 m ( π ( x i ) ) y i ( 1 − π ( x i ) ) 1 − y i L(w)= \prod _{i=1}^{m}p(y_{i}|x_{i};w)=\prod _{i=1}^{m}( \pi(x_i))^{y_i}(1-\pi(x_i))^{1-y_i} L(w)=i=1mp(yixi;w)=i=1m(π(xi))yi(1π(xi))1yi
对数似然函数:
l o g ( L ( W ) ) = ∑ i = 1 m ( y i l o g π ( x i ) + ( 1 − y i ) l o g ( 1 − π ( x i ) ) ) log(L(W)) = \sum_{i=1}^{m}(y_i log \pi(x_i) + (1-y_i)log(1- \pi(x_i))) log(L(W))=i=1m(yilogπ(xi)+(1yi)log(1π(xi)))
对对数似然函数求最大值,得到 w w w 的极大似然估计值 w ′ w' w

梯度下降法

损失函数:

J ( W ) = − 1 m ( ∑ i = 1 m ( y i l o g π ( x i ) + ( 1 − y i ) l o g ( 1 − π ( x i ) ) ) ) J(W) =-\frac{1}{m}( \sum_{i=1}^{m}(y_i log \pi(x_i) + (1-y_i)log(1- \pi(x_i)))) J(W)=m1(i=1m(yilogπ(xi)+(1yi)log(1π(xi))))

优缺点

优点:

1)预测结果是介于0和1之间的概率

2)可以适用于连续性和类别性自变量

3)容易使用和解释

缺点:

1)对模型中自变量多重共线性较为敏感,例如两个高度相关自变量同时放入模型,可能导致较弱的一个自变量回归符号不符合预期,符号被扭转。需要利用因子分析或者变量聚类分析等手段来选择代表性的自变量,以减少候选变量之间的相关性;

2)预测结果呈“S”型,因此从kog(odds)向概率转化的过程是非线性的,在两端随着log(odds)值的变化,概率变化很小,边际值太小,slope太小,而中间概率的变化很大,很敏感,导致很多区间的变量变化对目标概率的影响没有区分度,无法确定阈值。

区别与联系以及其他常见问题

  1. 线性回归,采用的是平方损失函数。而逻辑回归采用的是 对数 损失函数
  2. 过拟合问题问题起源?如何解决?
    模型太复杂,参数过多,特征数目过多。
    方法:
    1) 减少特征的数量,有人工选择,或者采用模型选择算法
    2) 正则化,即保留所有特征,但降低参数的值的影响。正则化的优点是,特征很多时,每个特征都会有一个合适的影响因子。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42764932/article/details/113121870

智能推荐

ftp服务器有些文件粘贴不上,ftp服务器文件有的上传不了_诗语情柔的博客-程序员宝宝

ftp服务器文件有的上传不了 内容精选换一换内网下载镜像失败基本上都是由于DNS配置问题导致的,可以采用以下两种方法进行修改。方法一:编辑“/etc/resolv.conf”文件,在/etc/resolv.conf中新增一个内网DNS服务器地址,具体的内网DNS地址请参见华为云提供的内网DNS地址是多少?。新增的DNS服务器地址必须位于所有原有的DNS服务器地址之前。DNS配置操作创建加密镜像分为...

ubuntu16.06(64位)下搭建nuc972开发环境_磨刀的天使的博客-程序员宝宝

首先从新唐的网上下载linux下的BSP,按照说明安装开发环境。      安装 官方指定必须的包:       sudo apt-get install patch libc6-dev libncurses5-dev minicom        安装BSP包,请按官方的《NUC970 Linux BSP 使用手册》安装。       我在安装过程中遇到了以下的问题。

黑马程序员——foundation框架(一)_zhang2292的博客-程序员宝宝

------- android培训、java培训、期待与您交流! ----------字符串比较#import void test(){ NSString *str = @"abc"; NSString *str1 [email protected]"ABc"; //取出每个字符的ASCII码值,比较ASCII码值大小 //compare 默认的区分大小写

DataStructure_第二章 线性表 ( 单链表 / 循环链表 / 双向链表 及 静态链表 的分析及其实现 )_就是爱吃肉ro的博客-程序员宝宝_已知某顺序表的头指针地址为0x0001,元素大小固定为1kb

第二章目录0x0000 线性表的概念线性表的概念及抽象数据类型定义0x0001 线性表的顺序存储0x0010 线性表的链式存储1. 单链表0x0000 线性表的概念线性表的概念及抽象数据类型定义0x0001 线性表的顺序存储0x0010 线性表的链式存储1. 单链表还没来得及调试, 可能有问题, 此坑待填!/*** * @Author : acmaker...

前端用echarts-gl实现旋转的3D地球_X 前端成长记的博客-程序员宝宝_echarts球体旋转原理

通过echarts-gl中的globe来实现一个3D地球需要引用的js:echarts.min.jsecharts-gl.min.jsworld.js废话不多,代码如下:&lt;div id="earth" style="width: 600px;height:600px;"&gt;&lt;/div&gt; &lt;script&gt; var dom = document.getElementById("earth") var myChart = echarts.init

UVA 10369 最小生成树_MissAnnLucky的博客-程序员宝宝

最小生成树的模板题,注意保存S个用到的最大的边长。#include#include#include#include#include#includeusing namespace std;int x[505],y[505];typedef struct node{ int x,y; double dis; bool operator <(const

随便推点

amoeba高可用mysql_amoeba for mysql 使用说明_weixin_39610353的博客-程序员宝宝

在使用一个工具之前还是要先了解一下这个东西的一些细节,也就是说连这个东西是什么都不清楚就盲目去用了,那是不严谨的,起码都不知道这东西是否合适用在后面的生产环境,不合适再牛的技术就就是个屁!Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专...

aforge 相机标定_c# – Aforge.net相机捕获并将图像保存到目录_一念前尘的博客-程序员宝宝

大家.我已经被困在这里处理这些错误了好几天,但我仍然无法弄明白.我的猜测:我认为我的代码存在一些问题,因为我在使用它之后没有正确处理对象,(我不太熟悉释放资源,线程的这些概念).我通过参考人们在youtube上做了什么来获得这些代码,但是尽管我做了完全相同的事情,但我的代码并没有很好地解决.情况:我有两个图片框,左边一个可以拍摄我的视频,右边一个拍快照,如果你按下button1,你将启动视频,cl...

ALSA框架_Fireworks_light的博客-程序员宝宝

概述Alsa是Advanced Linux Sound Architecture的缩写,即高级Linux声音架构,在Linux 2.6的内核版本后,Alsa目前已经成为了linux的主流音频体系结构。除了 alsa-driver,ALSA 包含在用户空间的 alsa-lib 函数库,具有更加友好的编程接口,并且完全兼容于 OSS,开发者可以通过这些高级 API 使用驱动,不必直接与内核驱动 API 进行交互。Alsa-utils:包含各种通用的 ALSA 命令行工具,如 amixer、aplay、are

crc32c_hintonic的博客-程序员宝宝_crc-32c

// Copyright (c) 2011 The LevelDB Authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file. See the AUTHORS file for names o

推荐文章

热门文章

相关标签