当前位置: 首页 > ai >正文

机器学习 day04

文章目录

  • 前言
  • 一、线性回归的基本概念
  • 二、损失函数
  • 三、最小二乘法


前言

通过今天的学习,我掌握了机器学习中的线性回归的相关基本概念,包括损失函数的概念,最小二乘法的理论与算法实现。


一、线性回归的基本概念

要理解什么是线性回归,就要先理解什么是回归。

回归是通过训练带标签的样本数据得到模型参数,对连续型数据进行预测。

像这样的式子: y = w x + b y=wx+b y=wx+b就是一个线性回归模型,在实际的应用场景中往往不能找到某一个方程满足所有特征,这时我们就需要使用计算机根据实际的数据求解得到最优(也就是最接近真实值)的方程式作为模型完成预测任务。

例如,如果我们将数据描绘在坐标轴上:
在这里插入图片描述
线性回归的任务就是找到一条最佳直线拟合所有点。

二、损失函数

我们想通过线性回归,找到一条最优的直线拟合所有数据,有许多方式确定这条最优直线,这里我们使用损失函数进行评估。

对于线性回归而言,我们使用均方误差作为损失函数,即实际数据点数据到拟合直线的竖直距离的平方再求和。用公式可以表达为:
e ˉ = 1 n ∑ i = 1 n ( y i − w x i − b ) 2 \bar e = \frac{1}{n} \textstyle\sum_{i=1}^{n}(y_{i}-w x_{i} - b)^{2} eˉ=n1i=1n(yiwxib)2
其中,每一个w值都会对应一个loss,我们要求的即是使得loss最小时的w值。

如果只有单个特征参数w,我们可以使用以前学习过的数学方法,如韦达定理,求导等直接解出;但如果有多个w值,我们就需要使用最小二乘法和梯度下降的思想进行求解了。

要推导接下来的最小二乘法和梯度下降,需要结合矩阵求导和矩阵除法的公式:
在这里插入图片描述

三、最小二乘法

假设一共有多个特征,即组成损失函数的是一个多元二次方程,即:
h ( x ) = w 1 x 1 + w 2 x 2 + w 3 x 3 + w 4 x 4 + w 5 x 5 + w 6 x 6 + w 7 x 7 + w 8 x 8 + w 0 x 0 h(x)=w_1x_1+w_2x_2+w_3x_3+w_4x_4+w_5x_5+w_6x_6+w_7x_7+w_8x_8+w_0x_0 h(x)=w1x1+w2x2+w3x3+w4x4+w5x5+w6x6+w7x7+w8x8+w0x0

l o s s = [ ( h 1 ( x ) − y 1 ) 2 + ( h 2 ( x ) − y 2 ) 2 + . . . ( h n ( x ) − y n ) 2 ] / n = 1 n ∑ i = 1 n ( h ( x i ) − y i ) 2 = 1 n ∣ ∣ ( X W − y ) ∣ ∣ 2 = 1 2 ∣ ∣ ( X W − y ) ∣ ∣ 2 这就是最小二乘法公式 ∣ ∣ A ∣ ∣ 2 是欧几里得范数的平方 也就是每个元素的平方相加 loss=[(h_1(x)-y_1)^2+(h_2(x)-y_2)^2+...(h_n(x)-y_n)^2]/n\\=\frac{1}{n} \textstyle\sum_{i=1}^{n}(h(x_{i})-y_{i})^{2}\\=\frac{1}{n}||(XW-y)||^2\\=\frac{1}{2}||(XW-y)||^2 这就是最小二乘法公式 \\ ||A||^2 是欧几里得范数的平方\,也就是每个元素的平方相加 loss=[(h1(x)y1)2+(h2(x)y2)2+...(hn(x)yn)2]/n=n1i=1n(h(xi)yi)2=n1∣∣(XWy)2=21∣∣(XWy)2这就是最小二乘法公式∣∣A2是欧几里得范数的平方也就是每个元素的平方相加

由于我们是研究使得loss最小时的w值而非关心loss具体的值,所以我们将n改为2,这可以便于后续求导运算

接下来,我们对loss的矩阵形式进行化简和求导(此处不再赘述),最终可以得到最后可以得到w值组成的矩阵W:
W = ( X T X ) − 1 X T y W=(X^TX)^{-1}X^Ty W=(XTX)1XTy
通过以上的式子,我们可以精确地求出每一个w值,我们将这种方法称为最小二乘法。

API用法:sklearn.linear_model.LinearRegression()

  • 该函数返回模型的参数和偏置项,即coef_,intercept_
# 线性回归(最小二乘法)
from sklearn.linear_model import LinearRegression
import numpy as np
data=np.array([[0,14,8,0,5,-2,9,-3,399],[-4,10,6,4,-14,-2,-14,8,-144],[-1,-6,5,-12,3,-3,2,-2,30],[5,-2,3,10,5,11,4,-8,126],[-15,-15,-8,-15,7,-4,-12,2,-395],[11,-10,-2,4,3,-9,-6,7,-87],[-14,0,4,-3,5,10,13,7,422],[-3,-7,-2,-8,0,-6,-5,-9,-309]])
x,y = data[:,:-1],data[:,-1]model = LinearRegression(fit_intercept=True) # 可指定偏置项
model.fit(x,y)x_new=[[0,14,8,0,5,-2,9,-3]]
w = model.coef_
b = model.intercept_
# y_pred = model.predict(x_new)
# y_pred = w@x_new.T + b
y_pred = np.sum(w*x_new) + b
print(y_pred)

tips:由于该模型使用最小二乘法,需要进行逆矩阵的计算,在计算机中逆矩阵的运算会消耗大量的算力和内存空间,所以在实际应用中我们使用接下来介绍的梯度下降来求解参数。


THE END

http://www.xdnf.cn/news/6815.html

相关文章:

  • 线性dp练习(碱基配对)
  • 【OpenCV】基本数据类型及常见图像模式
  • java中的循环结构
  • MySQL——4、表的约束
  • 【Java】应对高并发的思路
  • 使用Spring Boot和Spring Security构建安全的RESTful API
  • 第8讲、Multi-Head Attention 的核心机制与实现细节
  • Github 2025-05-17 Rust开源项目日报 Top10
  • Bitmap原理及Hive去重方式对比
  • 网络流量分析 | Zeek(上)
  • 消息的简介
  • jvm安全点(二)openjdk17 c++源码垃圾回收安全点信号函数处理线程阻塞
  • IntraWeb 16.0.2 + Bootstrap 4 居中布局实战(附源码+效果图)
  • 常见的实时通信技术(轮询、sse、websocket、webhooks)
  • pnpm 与 npm 的核心区别
  • 单细胞转录组(4)Cell Ranger
  • nodejs快速入门到精通1
  • 2025年PMP 学习十七 第11章 项目风险管理 (11.1~11.4)
  • 从神经架构到万物自动化的 AI 革命:解码深度学习驱动的智能自动化新范式
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.7)
  • jvm安全点(三)openjdk17 c++源码垃圾回收之安全点结束,唤醒线程
  • WPS PPT设置默认文本框
  • 三层固定实体架构:高效实现图上的检索增强生成(RAG)
  • CANoe CAPL TCP DoIP通信问题
  • 使用 Kotlin 和 Jetpack Compose 开发 Wear OS 应用的完整指南
  • 【Linux笔记】nfs网络文件系统与autofs(nfsdata、autofs、autofs.conf、auto.master)
  • 【DAY21】 常见的降维算法
  • 目标跟踪相关综述文章
  • 25、DeepSeek-R1论文笔记
  • 从数据分析到数据可视化:揭开数据背后的故事