第二章.线性回归以及非线性回归—岭回归

news2024/10/6 22:31:49

第二章.线性回归以及非线性回归

2.12 岭回归(Ridge Regression)

1.前期导入:

1).标准方程法[w=(XTX)-1XTy]存在的缺陷:

  • 如果数据的特征比样本点还多,数据特征n,样本个数m,如如果n>m,则计算 (XTX)-1 时会出错,因为 (XTX) 不是满秩,所以不可逆

2).解决标准方程法缺陷的方法:

  • 为了解决这个问题,统计学家们引入了岭回归的概念:w=(XTX+λI)-1XTy
  • 参数说明:
    λ:岭系数
    I:单位矩阵(对角线上全为1,其他元素都为0)

2.矩阵公式:

1).矩阵转置公式

公式
(mA)T = mAT
(A+B)T = AT+ BT
(AB)T = BTAT
(AT)T = A

2).矩阵求导公式

对X求偏导

公式
(XT) ’ = I
(AXT) ’ = A
(XTA) ’ = A
(AX) ’ = AT
(XA) ’ = AT
(XTAX) ’ = (A +AT)X
(XTAX) ’ =2AX(A为对称矩阵)

3.岭回归公式分析:

1).L2正则化的代价函数:

在这里插入图片描述

2).L2正则化用矩阵表示:

在这里插入图片描述

3).对θ求偏导:

在这里插入图片描述
注:λI = λ

4.岭回归模型的使用场景:

1).定义:

  • 岭回归最早是用来处理特征数多于样本的情况,现在也用于在估计中加入偏差,从而得到更好的估计,同时也可以解决多重共线性的问题,岭回归是一种偏估计。

2).岭回归代价函数:

在这里插入图片描述

3).岭回归求解:

在这里插入图片描述

  • 参数说明:
    λ:岭系数
    I:单位矩阵(对角线上全为1,其他元素都为0)

4).λ值选取的方法:

  • 各回归系数的岭估计基本稳定
  • 残差平方和增加不太多

在这里插入图片描述

  • 图像的描述:y轴:每条线代表一个参数的变化,x轴:代表λ的参数值,λ越大,参数越接近于0

4.longley数据集的介绍:

  • longley数据集是强共线性的宏观经济数据,包含GNP deflator(GNP 平减指数)、GNP(国民生产总值)、Unemployed(失业率)、ArmedForces(武装力 量)、Population(人口)、year(年份),Emlpoyed(就业率)。
  • Longley数据集存在严重的多重共线性问题,在早期经常用来检验各种算法或者计算集的计算精度。

5.实战1: 标准方程法—岭回归:

1).CSV中的数据:

  • longley.csv

2).代码

import numpy as np
from numpy import genfromtxt

# 读取数据
data = genfromtxt('D:\\Data\\longley.csv', delimiter=',')

# 数据切片
x_data = data[1:, 2:]
y_data = data[1:, 1, np.newaxis]

# 给样本增加偏置项
X_data = np.concatenate((np.ones((16, 1)), x_data), axis=1)


# 岭回归标准方程法求解回归参数
def weights(xArr, yArr, lam=0.2):
    xMat = np.mat(xArr)
    yMat = np.mat(yArr)
    # 矩阵乘法
    xTx = xMat.T * xMat
    rxTx = xTx + lam * np.eye(xMat.shape[1])
    # 判断矩阵是否为可逆矩阵
    if np.linalg.det(rxTx) == 0.0:
        print('This matrix cannot do inverse')
        return

    ws = rxTx.I * xMat.T * yMat
    return ws


ws = weights(X_data, y_data)
print('系数:', ws.reshape(1, ws.shape[0]))

# 预测值
pred = np.mat(X_data) * np.mat(ws)
print('预测值:', pred.reshape(1, pred.shape[0]))

3).结果展示:

①.数据

在这里插入图片描述

5.实战2: sklearn—岭回归:

1).CSV中的数据:

  • longley.csv

2).代码

import numpy as np
from numpy import genfromtxt
import matplotlib.pyplot as plt
from sklearn import linear_model

# 导入数据
data = genfromtxt('D:\\Data\\longley.csv', delimiter=',')

# 数据切片
x_data = data[1:, 2:]
y_data = data[1:, 1]

# 生成50个值:岭回归的备选值
alphas_to_test = np.linspace(0.001, 1, 50)

# 创建模型:alphas:岭回归系数 store_cv_values:岭回归的误差值
model = linear_model.RidgeCV(alphas=alphas_to_test, store_cv_values=True)

# 拟合线性模型
model.fit(x_data, y_data)

# 岭系数
coeff = model.alpha_
print('岭系数:', coeff)

# Loss值
loss = model.cv_values_.shape
print('Loss值的形状:', loss)

pred = model.predict(x_data[:])
print('预测值:', pred)

# 画图:岭系数跟loss的关系
plt.plot(alphas_to_test, model.cv_values_.mean(axis=0))

# 选取的岭系数值的位置
plt.plot(coeff, min(model.cv_values_.mean(axis=0)), 'ro')

plt.show()

3).结果展示:

①.数据

在这里插入图片描述

②.图像

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/168394.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5种气血不足的面相

我们常用“气色好”形容人良好的健康状态,反之,气血不足就是不健康的表现。想知道自己是否气血不足,可以从以下几种表现中判断。眼白黄:所谓人老珠黄,就是指眼白的颜色变得浑浊、发黄、有血丝,很可能气血不…

网络编程基础(1)

1 OSI七层模型(理论) 七层模型,亦称OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层…

cycle_gan使用教程

junyanz/pytorch-CycleGAN-and-pix2pix: Image-to-Image Translation in PyTorch (github.com) 如果是用cycle_gan 数据集 /数据集文件夹名,下面四个子文件名 testA testB trainA trainB trainA是A风格图片,trainB是B风格图片。 训练参数 test…

CCF BDCI | 算能赛题决赛选手说明论文-04

基于TPU平台实现人群密度估计 队名:innovation 陈照照 数据科学与大数据技术20级 台州学院 中国-瑞安 479253198qq.com董昊数据科学与大数据技术20级 台州学院 中国-杭州 donghaowifi163.com陈晓聪数据科学与大数据技术20级 台州学院 中国-宁波 2637491…

Golang -- openwechat微信发送消息、自动回复

开篇 马上就要到农历新年了,不妨写一段代码准时为好友们送上祝福。 该 Demo 使用开源项目 openwechat ,实现获取好友列表、为好友发送消息、图片或文件,接收来自好友或群组的消息并设置自动回复等功能。 openwechat Github地址 openwechat 文…

管道(匿名,有名)

文章目录Linux 进程间通信的方式管道匿名管道有名管道Linux 进程间通信的方式 管道 管道特点 管道其实是一个在内核内存中维护的缓冲器,这个缓冲器的存储能力是有限的,不同的操作系统大小不一定相同管道拥有文件的特质:读操作、写操作 匿名管…

线扫相机DALSA-变行高拍照

CamExpert在线阵模式中默认的Buffer设置是Fixed Length。在这种设置下,在一帧采集结束前所接收到的新的帧触发信号都会被忽略。在有的应用中,需要新一帧的外触发信号能够中断当前帧的采集,开始新的一帧。这需要将Buffer设为Variable Length。…

【云原生】k8s之HPA,命名空间资源限制

内容预知 1.HPA的相关知识 2.HPA的部署运用 2.1 进行HPA的部署设置 2.2 HPA伸缩的测试演示 (1)创建一个用于测试的pod资源 (2)创建HPA控制器,进行资源的限制,伸缩管理 (3)进入其中一个pod容器仲&#xf…

Redhat OpenStack使用命令行发放云主机

OpenStack中各大组件的作用Glance:负责管理镜像(镜像的上传、删除、下载)Swift:提供镜像存储的空间Nova:负责配额的修改、启动云主机(实例)、创建密钥对、绑定弹性IP等Keystone:提供…

jQuery(二):属性、元素、尺寸位置操作、事件

jQuery属性操作内容文本值元素操作尺寸、位置操作事件注册事件处理事件对象拷贝对象属性操作 1.获取固有属性语法 prop(‘‘属性’’) 固有属性就是html自带的,例如a元素里面的 href ,input 元素里面的 type。 2.设置固有属性语法 prop(‘‘属性’’, …

Python NumPy 搜索 数组

前言NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍Python NumPy 搜索 数组…

Linux小黑板(8)管道

"让我们,笑吧"一、什么是通信?管道是属于进程间通信的一个实现方式。再讲管道之前呢,我们先来说说什么叫做进程间通信。我们日常生活中,给自己的家人、朋友给一个call,或者弹一条微信、QQ等等,从而让人家能够知道我们想…

Databend 开源周报第 76 期

英文版移步:https://databend.rs/blog/2023-01-11-databend-weekly Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。即刻体验云服务:https://app.databend.com 。 What’s New 探索 Databend 本周新进展,遇到更贴近你心意的…

vue 中由浅拷贝引发问题的一些场景

在工作的过程中踩了很多的由浅拷贝导致的坑,今天总结在这里,希望对大家有所帮助 1. 组件中直接抛出一个引用类型变量 🌰举个例子 (ps: 以下代码为伪代码,主要展示逻辑用) 子组件(uploadImg&a…

线 程 同 步、线程的死锁问题

线程同步: 模拟售票程序出现问题:当多个线程同时访问共享数据时,产生无序、重复、超额售票等多线程安全问题 解决:将多个线程需要访问的共享数据,包装起来视为一个整体,确保一次只有一个线程执行流访问共享…

春节福利丨神策数据 2022 年数字化营销资料打包全送

2022 年,神策数据出品多份行业研究报告,覆盖银行、证券、零售、教育、电商、融合媒体等多个行业,帮助更多企业通过多视角洞见紧握数字化营销的方向和趋势,用方法论结合落地实践驱动企业数字化经营。01B2B 电商数字化运营聚焦四类 …

【自学Python】Python查找字符串位置

Python查找字符串位置 大纲 Python查找字符串位置教程 在开发过程中,很多时候我们有在一个 字符串 中查找另一个字符串位置的需求,在 Python 中,在一个字符串中查找另一个字符串的位置我们使用 index() 函数。 index() 函数的功能与 find(…

力扣(78.90)补9.22

78.子集 感觉不太难&#xff0c;但是就是不会写。感觉回溯里有很多细节问题。 class Solution { private: vector<vector<int>> res; vector<int> num; void back(vector<int>& nums,int index,int end){ res.push_back(num); …

【JavaEE初阶】第三节.多线程基础篇

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 一、认识线程 二、多线程程序 2.1 第一个Java多线程程序 2.2 怎么样观察线程的详细情况 2.3 sleep方法 2.4 run 和 start 方法的区别是什么 三、创…

在springboot中配置热部署

今天什么节日也不是&#xff0c;那就祝大家今天快乐。 热部署 所谓热部署&#xff0c;就是在应用正在运行的时候升级软件&#xff0c;却不需要重新启动应用。对于Java应用程序来说&#xff0c;热部署就是在运行时更新Java类文件。在以往&#xff0c;我们对java代码进行修改之后…