机器学习笔记02(多元线性回归logistics回归正则化)

2023-11-23 11:40

本文主要是介绍机器学习笔记02(多元线性回归logistics回归正则化),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 01 引言(多元线性回归)
    • 多元线性回归
        • 梯度下降
        • 梯度下降技巧01-特征缩放
        • 梯度下降技巧02-学习率与终止迭代条件
    • 用多项式回归模型
  • 02 Normal Equation法
        • 推导过程
    • Normal Equation法与梯度下降法比较
  • 03 logistics回归(Logistic Regression)
    • 开始
    • 分类问题引言
        • sigmoid函数
        • 判定边界
        • 逻辑回归函数回顾
        • 代价函数
        • 函数代码
        • 梯度下降
        • 简化的损失函数和梯度下降
        • 高级优化
        • 一对多分类
  • 04 正则化(Regularization)
    • 过拟合与欠拟合
    • 代价函数
    • 正则化线性回归
        • 梯度下降
        • 正规方程
    • 正则化的逻辑回归模型

01 引言(多元线性回归)

“多元线性回归本质上与单元变量线性回归没太大区别”
增添更多特征后,我们引入一系列新的注释:在这里插入图片描述
引入多元变量后,我们直接把原来的函数在这里插入图片描述
简写为在这里插入图片描述

多元线性回归

梯度下降

多元变量的线性回归的梯度下降与一元的没什么区别

梯度下降技巧01-特征缩放

在我们面对多维特征问题的时候,我们要保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。

以房价问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量,尺寸的值为0-2000平方英尺,而房间数量的值则是 0-5,以两个参数分别为横纵坐标,绘制代价函数的等高线图能,看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。

解决的方法是尝试将所有特征的尺度都尽量缩放到-1到 1之间。如图:
在这里插入图片描述在这里插入图片描述

梯度下降技巧02-学习率与终止迭代条件

梯度下降算法收敛所需要的迭代次数根据模型的不同而不同,我们不能提前预知,我们可以绘制迭代次数和代价函数的图表来观测算法在何时趋于收敛。

也有一些自动测试是否收敛的方法,例如将代价函数的变化值与某个阀值(例如 0.001进行比较,但通常看上面这样的图表更好。)如笔记01的代码的终止条件

学习率的选择
在这里插入图片描述

用多项式回归模型

02 Normal Equation法

到目前为止,我们都在使用梯度下降算法,但是对于某些线性回归问题,正规方程(Normal Equation)方法是更好的解决方案。如:
在这里插入图片描述在这里插入图片描述

推导过程

θ = ( X T X ) − 1 X T y \theta=\left(X^{T} X\right)^{-1} X^{T} y θ=(XTX)1XTy的推导过程:
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 其中:  h θ ( x ) = θ T X = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + … + θ n x n J(\theta)=\frac{1}{2 m} \sum\limits_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2} \text { 其中: } h_{\theta}(x)=\theta^{T} X=\theta_{0} x_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}+\ldots+\theta_{n} x_{n} J(θ)=2m1i=1m(hθ(x(i))y(i))2 其中hθ(x)=θTX=θ0x0+θ1x1+θ2x2++θnxn

将向量表达形式转为矩阵表达形式, 则有 J ( θ ) = 1 2 ( X θ − y ) 2 J(\theta)=\frac{1}{2}(X \theta-y)^{2} J(θ)=21(Xθy)2, 其中 X X X m m m n n n 列的矩阵
( m (m (m 为样本个数, n n n 为特征个数), θ \theta θ n n n 行 1 列的矩阵, y y y m m m 行 1 列的矩阵, 对 J ( θ ) J(\theta) J(θ) 进行如
下变换:
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 ) \begin{array}{c} J(\theta)=\frac{1}{2}(X \theta-y)^{T}(X \theta-y) \\ \quad=\frac{1}{2}\left(\theta^{T} X^{T}-y^{T}\right)(X \theta-y) \\ =\frac{1}{2}\left(\theta^{T} X^{T} X \theta-\theta^{T} X^{T} y-y^{T} X \theta-y^{T} y\right) \end{array} J(θ)=21(Xθy)T(Xθy)=21(θTXTyT)(Xθy)=21(θTXTXθθTXTyyTXθyTy)
接下来对
𝐽(𝜃)偏导,需要用到以下几个矩阵的求导法则 :
d A B d B = A T \frac{dAB}{dB}=A^T dBdAB=AT

d X τ A X d X = 2 A X \frac{dX^{\tau}AX}{dX}=2AX dXdXτAX=2AX

所以有 :
∂ J ( θ ) ∂ θ = 1 2 ( 2 X T X θ − X T y − ( y T X ) T − 0 ) = 1 2 ( 2 X T X θ − X T y − X T y − 0 ) = X T X θ − X T y \begin{array}{c} \frac{\partial J(\theta)}{\partial \theta}=\frac{1}{2}\left(2 X^{T} X \theta-X^{T} y-\left(y^{T} X\right)^{T}-0\right) \\ =\frac{1}{2}\left(2 X^{T} X \theta-X^{T} y-X^{T} y-0\right) \\ =X^{T} X \theta-X^{T} y \end{array} θJ(θ)=21(2XTXθXTy(yTX)T0)=21(2XTXθXTyXTy0)=XTXθXTy
令  ∂ J ( θ ) ∂ θ = 0 则有  θ = ( X T X ) − 1 X T y \begin{array}{l} \text { 令 } \frac{\partial J(\theta)}{\partial \theta}=0 \\ \text { 则有 } \theta=\left(X^{T} X\right)^{-1} X^{T} y \end{array}   θJ(θ)=0 则有 θ=(XTX)1XTy

Normal Equation法与梯度下降法比较

在这里插入图片描述

总结一下,只要特征变量的数目并不大,标准方程是一个很好的计算参数𝜃的替代方法。具体地说,只要特征变量数量小于一万,我通常使用标准方程法,而不使用梯度下降法

随着我们要讲的学习算法越来越复杂,例如,当我们讲到分类算法,像逻辑回归算法,我们会看到,实际上对于那些算法,并不能使用标准方程法。对于那些更复杂的学习算法,我们将不得不仍然使用梯度下降法。因此,梯度下降法是一个非常有用的算法,可以用在有大量特征变量的线性回归问题。或者我们以后在课程中,会讲到的一些其的算法,因为标准方程法不适合或者不能用在它们上。但对于这个特定的线性回归模型,标准方程法是一个比梯度下降法更快的替代算法。所以,根据具体的问题,以及你的特征变量的数量,这两种算法都是值得学习的。

03 logistics回归(Logistic Regression)

开始

步骤:
1.确定目标与条件
我是要进行分类吗?(二分类?多分类?)
二分类直接使用,多分类(需要修改)
条件

2.通过梯度下降算得

分类问题引言

分类问题中,预测的变量 𝑦 是离散的值

二元的分类问题:负向类(negative class)和正向类(positive class)

如果我们要用线性回归算法来解决一个分类问题,会出问题

在逻辑回归中,h(假设)的方程换了一个形式
希望我们的分类器的输出值在 0和 1之间,因此逻辑回归模型的假设是:
在这里插入图片描述
𝑋 代表特征向量𝑔 代表逻辑函数( logistic function)是一个常用的逻辑函数为是一个常用的逻辑函数为S形函数(形函数(Sigmoid function),公式为:在这里插入图片描述

sigmoid函数

该函数的图像为:
在这里插入图片描述

判定边界

现在讲下决策边界(decision boundary)的概念。这个概念能更好地帮助我们理解逻辑回归的假设函数在计算什么。

假设函数计算内容

在这里插入图片描述
在这里插入图片描述
现在假设我们有一个模型:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

逻辑回归函数回顾

在这里插入图片描述

代价函数

逻辑回归的代价函数与线性回归的不一样

在这里插入图片描述
在这里插入图片描述

这意味着我们的代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值。

在这里插入图片描述
在这里插入图片描述

函数代码
clc;clear;
x1 = 0.4999999999:-0.01:0
x2 = 0.5:0.01:0.99y1= -log(1-x1)
y2= -log(x2)
plot(x1,y1,'b*')
hold on
plot(x2,y2,'r-')

在这里插入图片描述
进一步简化
在这里插入图片描述

import numpy as np
def cost(theta, X, y):theta=np.matrix(theta)X = np.matrix(X)y = np.matrix(y)first = np.multiply(-y, np.log(sigmoid(X*theta.T)))second = np.multiply(( 1-y), np.log( 1-sigmoid(X*theta.T)))
return np. sum (first - second) /(len (X))
梯度下降

逻辑回归的梯度下降与线性回归的梯度下降是不一样的

在这里插入图片描述
梯度下降推导
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:虽然得到的梯度下降算法表面上看上去与线性回归的梯度下降算法一样,但是这里的 ℎ𝜃(𝑥)=𝑔(𝜃𝑇𝑋)与线性回归中不同,所以实际上是不一样的。另外,在运行梯度下降算法之前,进行特征缩放依旧是非常必要的。

一些梯度下降算法之外的选择:除了梯度下降算法以外,还有一些常被用来令代价函数最小的算法,这些算法更加复杂和优越,而且通常不需要人工选择学习率,通常比梯度下降算法要更加快速。这些算法有:
共轭梯度 Conjugate Gradient 局部优化法 (Broyden fletcher goldfarb shann,BFGS)和 有限内存局部优化法 (LBFGS)
fminunc是 matlab和 octave 中都带的一个最小值优化函数,使用时我们需要提供代价函数和每个参数的求导

简化的损失函数和梯度下降

找出一种稍微简单一点的方法来写代价函数,来替换我们现在用的方法。弄清楚如何运用梯度下降法,来拟合出逻辑回归的参数。

这就是逻辑回归的代价函数:
在这里插入图片描述
这个式子可以合并成:
在这里插入图片描述
就是这样,现在你知道如何实现逻辑回归,这是一种非常强大,甚至可能世界上使用最广泛的一种分类算法。

高级优化

学一些高级优化算法和一些高级的优化概念,利用这些方法,我们就能够使通过梯度下降,进行逻辑回归的速度大大提高,而这也将使算法更加适合解决大型的机器学习问题

一对多分类

有几种情况就制作几个分类器,每个分类器进行一次二分类,选择最高 的概率值,我们预测 𝑦就 是那个值

你现在知道了基本的挑选分类器的方法,选择出哪一个分类器是可信度最高效果最好的,
那么就可认为得到一个正确的分类,无论 𝑖值是多少,我们都有最高 的概率值,我们预测 𝑦就
是那个值。这就是多类别分类问题,以及一对多的方法,通过这个小方法,你现在也可以将
逻辑回归分类器用在多类分类的问题上。

04 正则化(Regularization)

过拟合与欠拟合

第一个模型是一个线性模型,欠拟合,不能很好地适应我们的训练集;第三个模型是一个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据。我们可以 看出,若给出一个新的值使之预测,它将表现的很差,是过拟合,虽然能非常好地适应我们的训练集但在新输入变量进行预测时可能会效果不好;而中间的模型似乎最合适。
在这里插入图片描述
问题是,如果我们发现了过拟合问题,应该如何处理?
在这里插入图片描述

代价函数

高次项导致了过拟合的产生,是高次项的系数小一点接近于0,可以解决过拟合问题

所以我们要做的就是在一定程度上减小=这些参数𝜃 的值,这就是正则化的基本方法

在这里插入图片描述

如上,我们决定要减少 𝜃3和 𝜃4的大小,我们要做的便是修改代价函数,在其中 𝜃3和 𝜃4 设置一点惩罚。这样做的话,我们在尝试最小化代价时也需要将这个惩罚纳入考虑中,并最终导致选择较小一些的 𝜃3和 𝜃4。

修改后的代价函数如下:
在这里插入图片描述

这是在明确惩罚对象的情况下设置的

但假如我们有非常多的特征,我们并不知道其中哪些特征我们要惩罚,我们将对所有的特征进行惩罚,并且让代价函数最优化的软件来选择这些惩罚的程度。这样的结果是得到了一个较为简单的能防止过 拟合问题的假设:
在这里插入图片描述
其中𝜆又称为正则化参数( Regularization Parameter)。 注:根据惯例,我们不对 𝜃0
行惩罚。经过正则化处理的模型与原模型的可能对比如下图所示:
在这里插入图片描述
如果选择的正则化参数λ过大 则会把所有的参数都最小化了 导致模型变成 ℎ𝜃(𝑥)=𝜃0,也就是上图中红色直线所示的情况,造成欠拟合

那为什么增加的一项𝜆=Σ𝑗=1n 𝜃𝑗2以使 𝜃的值减小呢?

因为如果我们令 𝜆 的值很大的话,为了使 代价函数尽可能的小,所有的 𝜃 的值(不包括 𝜃0)都会在一定程度上减小。
但若λ的值太大了 那么 𝜃(不包括 𝜃0)都会趋近于 0,这样我们所得到的只能是一条平行于 𝑥轴的直线。

所以对于正则化,我们要取一个合理的𝜆 的值,这样才能更好的应用正则化。

正则化线性回归

对于线性回归的求解,我们之前推导了两种学习算法:一种基于梯度下降,一种基于正规方程。

梯度下降

对于基于正则化的梯度下降 在这里插入图片描述
整理得到
在这里插入图片描述

正规方程

我们同样也可以利用正规方程来求解正则化线性回归模型,方法如下所示:
在这里插入图片描述
矩阵大小图中的矩阵尺寸为(𝑛+1)∗(𝑛+1)

正则化的逻辑回归模型

针对逻辑回归问题,我们在之前的课程已经学习过两种优化算法:我们首先学习了使用梯度下降法来优化代价函数 𝐽(𝜃),接下来学习了更高级的 优化算法,这些高级优化算法需要你自己设计代价函数 𝐽(𝜃)。

自己计算导数同样对于逻辑回归,我们也给代价函数增加一个正则化的表达式,得到代价函数:
在这里插入图片描述

import numpy as np
def costReg(theta, X, y, learningRate):theta=np.matrix(theta)X=np.matrix(X)y=np.matrix(y)first=np.multiply(-y, np.log(sigmoid(X-theta.T)))second=np.multiply((1-y), np.log(1-sigmoid(X theta.T)))reg=(learningRate/(2*len(x))*np.sum(np.power(theta[ : , 1:theta. shape[1]],2))
return np.sum(first-second) len (X))+reg

要最小化该代价函数,通过求导,得出梯度下降算法为:
在这里插入图片描述
注:看上去同线性回归一样,但是知道ℎ𝜃(𝑥)=𝑔(𝜃𝑇𝑋),所以与线性回归不同。

注意:

  1. 虽然正则化的逻辑回归中的梯度下降和正则化的线性回归中的表达式看起来一样,
    但由于两者的 ℎ𝜃(𝑥)不同所以还是有很大差别。
  2. 𝜃0不参与其中的任何一个正则化。

接下来的课程中,我们将学习一个非常强大的非线性分类器,无论是线性回归问题,还
是逻辑回归问题,都可以构造多项式来解决。你将逐渐发现还有更强大的非线性分类器,可
以用来解决多项式回归问题。我们接下来将学会,比现在解决问题的方法强大 N倍的学习
算法。

这篇关于机器学习笔记02(多元线性回归logistics回归正则化)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/417692

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件