彻底学会系列:一、机器学习之线性回归(一)

1.基本概念(basic concept)

线性回归: 有监督学习的一种算法。主要关注多个因变量和一个目标变量之间的关系。
因变量: 影响目标变量的因素: X 1 , X 2 . . . X_1, X_2... X1,X2... ,连续值或离散值。
目标变量: 需要预测的值: t a r g e t target target y y y
因变量和目标变量之间的关系: 即模型,model

1.1连续值(continuous value)

连续值是可以在一个区间范围内取任意值的变量。例如,身高、体重、温度、时间等都是连续值
在这里插入图片描述

1.2离散值(discrete value)

离散值是只能取有限个数值或者可数值的变量。例如,学生人数、家庭成员数、考试分数等都是离散值
在这里插入图片描述

1.3简单线性回归(simple linear regression)

简单线性回归对应的公式: y = w x + b y = wx + b y=wx+b
y y y 是目标变量即未来要预测的值
x x x 是影响 y y y 的因素
w , b w,b w,b 是公式上的参数即要求的模型, w w w就是斜率, b b b就是截距
一元一次方程:
在这里插入图片描述
一元二次方程:
在这里插入图片描述

1.4多元线性回归(multiple linear regression)

现实生活中,往往影响结果 y 的因素不止一个,有可能是 n 个, X 1 , X 2 , X n . . . X_1,X_2,X_n... X1,X2,Xn...
多元线性回归公式:

y ^ = w 1 X 1 + w 2 X 2 . . . w n X n + b \hat y = w_1X_1 + w_2X_2 ... w_nX_n + b y^=w1X1+w2X2...wnXn+b

b是截距,也可以表示成:

y ^ = w 1 X 1 + w 2 X 2 . . . w n X n + w 0 \hat y = w_1X_1 + w_2X_2 ... w_nX_n + w_0 y^=w1X1+w2X2...wnXn+w0

使用向量来表示:

y ^ = W T X \hat y = W^TX y^=WTX

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression# 转化矩阵
x1 = np.random.randint(-150, 150, size=(300, 1))
x2 = np.random.randint(0, 300, size=(300, 1))# 斜率和截距,随机生成
w = np.random.randint(1, 5, size=2)
b = np.random.randint(1, 10, size=1)# 根据二元一次方程计算目标值y,并加上"噪声"
y = x1 * w[0] + x2 * w[1] + b + np.random.randn(300, 1)
fig = plt.figure(figsize=(9, 6))
ax = plt.subplot(111, projection='3d')
ax.scatter(x1, x2, y)  # 三维散点图
ax.view_init(elev=10, azim=-20)  # 调整视角
#
X = np.concatenate([x1, x2], axis=1)
model = LinearRegression()
model.fit(X, y)
w_ = model.coef_.reshape(-1)
b_ = model.intercept_print('一元一次方程真实的斜率和截距是:\n', w, b)
print('通过scikit-learn求解的斜率和截距是:\n', w_, b_)x = np.linspace(-150, 150, 100)
y = np.linspace(0, 300, 100)
z = x * w_[0] + y * w_[1] + b_
ax.plot(x, y, z, color='green')plt.show()

在这里插入图片描述

1.5 最优解(optimal solution)

y y y: 真实值(actual value)
y ^ \hat y y^: 预测值(predicted value), 根据因变量 X 1 , X 2 . . . X_1,X_2... X1,X2...和计算出来的参数w,b得到
e r r o r error error: 误差,预测值和真实值的差距( ε \varepsilon ε
最优解: 尽可能的找到一个模型使得整体的误差最小,通常叫做损失 Loss,通过损失函数Loss Function计算得到。

from sklearn.linear_model import LinearRegressionX = np.linspace(0, 10, num=30).reshape(-1, 1)
w = np.random.randint(1, 5, size=1)
b = np.random.randint(1, 10, size=1)y = X * w + b + np.random.randn(30, 1)
plt.scatter(X, y)model = LinearRegression()
model.fit(X, y)
w_ = model.coef_
b_ = model.intercept_print('一元一次方程真实的斜率和截距是:\n', w, b)
print('通过scikit-learn求解的斜率和截距是:\n', w_, b_)plt.plot(X, X.dot(w_) + b_, color='green')
plt.show()

在这里插入图片描述

1.6 高斯密度函数 (Gaussian Density Function):

高斯密度函数(Gaussian Density Function)也被称为正态分布或钟形曲线,是统计学中最常用的概率分布之一。其概率密度函数(Probability Density Function, PDF)的表达式如下:

f ( x ; μ , σ 2 ) = 1 2 π σ exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) \ f(x; \mu, \sigma^2) = \frac{1}{\sqrt{2\pi}\sigma} \exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)  f(x;μ,σ2)=2π σ1exp(2σ2(xμ)2)

其中,(x) 是变量, μ \mu μ 是均值, σ 2 \sigma^2 σ2是方差。

  • μ \mu μ 表示分布的均值,决定了曲线的中心位置。
  • σ 2 \sigma^2 σ2 是方差,决定了曲线的宽度或分布的离散程度。标准差 σ \sigma σ是方差的平方根。

高斯密度函数的特征包括:

  1. 钟形曲线形状: 高斯分布呈现出典型的钟形曲线,对称分布在均值周围。

  2. 68-95-99.7 规则: 大约68% 的数据在均值的一个标准差范围内,95% 在两个标准差范围内,99.7% 在三个标准差范围内。

  3. 均值和方差唯一决定分布: 高斯分布的均值和方差是唯一确定整个分布的两个参数。
    在这里插入图片描述

1.8 最大似然估计(Maximum Likelihood Estimation)

是一种用于估计模型参数的统计方法。它基于概率论的观点,寻找使观测数据出现的概率最大的参数值。通常记为 L ( θ ∣ d a t a ) L(θ∣data) L(θdata),其中 θ 是待估计的参数,为了方便计算,通常取似然函数的对数,得到对数似然函数(Log-Likelihood),记为 ℓ ( θ ∣ data ) \ell(\theta | \text{data}) (θdata)

公式:
Likelihood Function:  L ( θ ∣ data ) = ∏ i = 1 n P ( X i ; θ ) \text{Likelihood Function: } L(\theta | \text{data}) = \prod_{i=1}^{n} P(X_i; \theta) Likelihood Function: L(θdata)=i=1nP(Xi;θ)
Log-Likelihood Function:  ℓ ( θ ∣ data ) = ∑ i = 1 n log ⁡ P ( X i ; θ ) \text{Log-Likelihood Function: } \ell(\theta | \text{data}) = \sum_{i=1}^{n} \log P(X_i; \theta) Log-Likelihood Function: (θdata)=i=1nlogP(Xi;θ)

其中, X i X_i Xi 表示每个观测数据点。

1.7 最小二乘法(Least Squares Method)

是一种用于拟合数据和估计模型参数的优化方法。其核心思想是通过最小化观测数据的残差平方和来找到最优的模型参数。这种方法常用于线性回归和其他模型拟合问题

J ( θ ) = 1 2 ∑ i = 1 n ( h θ ( x i ) − y i ) 2 J(\theta) = \frac{1}{2} \sum_{i=1}^{n} (h_\theta(x_i) - y_i)^2 J(θ)=21i=1n(hθ(xi)yi)2

其中, h θ ( x i ) h_\theta(x_i) hθ(xi) 是模型对样本 x i x_i xi 的预测 y ^ \hat y y^ y i y_i yi 是实际观测值。

1.8正规方程 (Normal Equations)

正规方程是用于求解线性回归模型参数的一种解析方法(解方程的一种方法)

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

其中, ( X T X ) − 1 (X^T X)^{-1} (XTX)1 是矩阵 X T X X^T X XTX 的逆矩阵, X T X^T XT X X X的转置矩阵, y y y 是实际观测值。

1.9均方误差(Mean Squared Error, MSE)

MSE是一个用于衡量模型预测与实际观测值之间的差异的指标。对于线性回归模型,MSE定义如下:

MSE = 1 n ∑ i = 1 n ( h θ ( x i ) − y i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (h_\theta(x_i) - y_i)^2 MSE=n1i=1n(hθ(xi)yi)2

其中, h θ ( x i ) h_\theta(x_i) hθ(xi) 是模型对第 i 个样本的预测值, y i y_i yi是实际观测值,n 是样本数量。MSE计算的是平方误差的平均值,其值越小,表示模型对数据的拟合程度越好。

总结:

均方误差 (MSE):

  • 用于度量模型预测值与实际观测值之间的平方差的平均值。
  • 是一种评估模型性能的指标,越小越好。

最小二乘法 (Least Squares Method):

  • 是一种用于估计线性回归模型参数的方法。
  • 通过最小化均方误差或其他损失函数来找到最优参数。
  • 目标是找到参数,使得模型对观测值的预测误差最小。

通俗理解:
MSE是评估模型好不好,预测准不准用的。最小二乘法是求解方程参数 w 1 , w 2 . . . w_1,w_2... w1,w2...用的

彻底学会系列:一、机器学习之线性回归(二)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【React】redux状态管理、react-redux状态管理高级封装模块化

【React】react组件传参、redux状态管理 一、redux全局状态管理1、redux概述2、redux的组成1.1 State-状态1.2 Action-事件1.3 Reducer1.4 Store 3、redux入门案例1.1 前期准备1.2 构建store1.2.1 在src下新建store文件夹1.2.2 在store文件夹下新建index.ts文件1.2.3 在index.t…

MySQL 图书管理系统

1.需求分析 1.1项目需求分析简介 1.1.1信息需求分析 (1) 图书信息:包括书籍编号,书籍名称,出版社,作者,库存量,出版日期,价格,库存,剩余量,类别等&#xf…

JPEG图像的压缩标准(1)

分3个博客详细介绍JPEG图像的压缩标准,包含压缩和解压缩流程,熵编码过程和文件存储格式。 一、JPEG压缩标准概述 JPEG压缩标准由国际标准化组织 (International Organization for Standardization, ISO) 制订,用于静态图像压缩。JPEG标准包…

MVC框架学习

大一的时候写过一个mvc框架的跑酷游戏,但是那时候基础不扎实,没学明白也没听懂。现在深入的学习一下 以下内容参考:MVC 模式 | 菜鸟教程 (runoob.com) MVC 模式 MVC 模式代表 Model-View-Controller(模型-视图-控制器&#xff…

vue3 之 商城项目—一级分类

整体认识和路由配置 场景:点击哪个分类跳转到对应的路由页面,路由传对应的参数 router/index.js import { createRouter, createWebHashHistory } from vue-router import Layout from /views/Layout/index.vue import Home from /views/Home/index.vu…

智慧自助餐饮系统(SpringBoot+MP+Vue+微信小程序+JNI+ncnn+YOLOX-Nano)

一、项目简介 本项目是配合智慧自助餐厅下的一套综合系统,该系统分为安卓端、微信小程序用户端以及后台管理系统。安卓端利用图像识别技术进行识别多种不同菜品,识别成功后安卓端显示该订单菜品以及价格并且生成进入小程序的二维码,用户扫描…

transformer剪枝论文汇总

文章目录 NN Pruning摘要实验 大模型剪枝LLM-PrunerSparseGPT LTPVTPWidth & Depth PruningPatch SlimmingDynamicViTSPViTDynamicBERTViT SlimmingFastFormersNViTUVCPost-training pruning NN Pruning 《Block Pruning For Faster Transformers》 《为更快的transformer…

Django学习记录02

1.请求与响应 1.1get与post的区别 get 一般是从url输入地址,会调用get请求 post 一般是内部数据传输# get请求 def something(request):# req是一个对象,封装了用户发送过来的所有请求相关数据# 1.获取请求方式 http://localhost:8000/something# pri…

Go 语言 for 的用法

For statements 本文简单翻译了 Go 语言中 for 的三种用法,可快速学习 Go 语言 for 的使用方法,希望本文能为你解开一些关于 for 的疑惑。详细内容可见文档 For statements。 For statements with single condition 在最简单的形式中,只要…

centos7编译安装redis

一、环境 系统:CentOS Linux release 7.9.2009 (Core) redis版本:redis 6.0.6 二、安装及部署 当前最新稳定版本是redis 6.0.6 国内网址:http://www.redis.cn redis下载列表:http://download.redis.io/releases/ 下载 wge…

机器学习--K-近邻算法常见的几种距离算法详解

文章目录 距离度量1 欧式距离(Euclidean Distance)2 曼哈顿距离(Manhattan Distance)3 切比雪夫距离 (Chebyshev Distance)4 闵可夫斯基距离(Minkowski Distance)5 标准化欧氏距离 (Standardized EuclideanDistance)6 余弦距离(Cosine Distance)7 汉明距离(Hamming Distance)【…

14.scala隐式转换

目录 概述实践代码执行结果 结束 概述 隐式转换:偷偷的(隐式)对现有功能进行增强(转换) 实践 代码 package com.fun.scalaimport java.io.File import scala.io.Sourceobject ImplicitApp {def main(args: Array[String]): Unit {// implicit 2 to 等价 &…

K8S之Pod常见的状态和重启策略

Pod常见的状态和重启策略 常见的Pod状态PendingPodScheduledUnschedulablePodInitializingImagePullBackOffInitializedRunningErrorCrashLoopBackOffTerminatingSucceededFailedEvictedUnknown Pod的重启策略使用Always重启策略使用Never重启策略使用OnFailure重启策略(常用) …

go消息队列RabbitMQ - 订阅模式-direct

1.发布订阅 在Fanout模式中,一条消息,会被所有订阅的队列都消费。但是,在某些场景下,我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。 在Direct模型下: 队列与交换机的绑定,不能…

NuxtJs安装Sass后出现ERROR:Cannot find module ‘webpack/lib/RuleSet‘

最近了解NuxtJs时,发现问题比较多,对于初学者来说是件比较头痛的事。这次是安装sass预处理器,通过命令安装后,出现了ERROR:Cannot find module webpack/lib/RuleSet 错误,于是根据之前经验,对版…

解析spritf和sscanf与模拟常用字符串函数strchr,strtok(二)

今天又来继续我们的字符串函数的文章,这也是最后一篇了。希望这两篇文章能让各位理解透字符串函数。 目录 strchr strtok sprintf和sscanf strchr strchr 是一个用于在字符串中查找特定字符首次出现位置的函数。以下是解析和模拟实现 strchr 函数的示例&…

在Visual Studio中引用和链接OpenSceneGraph (OSG) 库

在Visual Studio中引用和链接OpenSceneGraph (OSG) 库,按照以下步骤操作: 构建或安装OSG库 下载OpenSceneGraph源代码(如3.0版本)并解压。使用CMake配置项目,为Visual Studio生成解决方案文件。通常您需要设置CMake中的…

Bee+SpringBoot稳定的Sharding、Mongodb ORM功能(同步 Maven)

Hibernate/MyBatis plus Sharding JDBC Jpa Spring data GraphQL App ORM (Android, 鸿蒙) Bee 小巧玲珑!仅 860K, 还不到 1M, 但却是功能强大! V2.2 (2024春节・LTS 版) 1.Javabean 实体支持继承 (配置 bee.osql.openEntityCanExtendtrue) 2. 增强批…

Spring Boot + 七牛OSS: 简化云存储集成

引言 Spring Boot 是一个非常流行的、快速搭建应用的框架,它无需大量的配置即可运行起来,而七牛云OSS提供了稳定高效的云端对象存储服务。利用两者的优势,可以为应用提供强大的文件存储功能。 为什么选择七牛云OSS? 七牛云OSS提供了高速的…

PCIE Order Set

1 Training Sequence Training Sequence是由Order Set(OS) 组成,它们主要是用于bit aligment,symbol aligment,交换物理层的参数。当data_rate 2.5GT or 5GT 它们不会被扰码(scramble),当date_rate 8GT or higher 根据特殊的规则…