机器学习 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.mzph.cn/diannao/83495.shtml

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

相关文章

img.dims() <= 2 in function ‘cv::matchTemplate报错

Mat src mat_ori;//imread(img_original);Mat src_template imread(img_template);cvtColor(src, src, COLOR_BGR2RGB);//不转换,matchTemplate将报错cvtColor(src_template, src_template,COLOR_BGR2RGB);//不转换,matchTemplate将报错 error: (-215…

NY321NY322美光闪存芯片NY323NY336

NY321NY322美光闪存芯片NY323NY336 在存储技术飞速发展的今天,美光科技的闪存芯片凭借其创新架构与高性能表现,已成为工业自动化、智能终端等领域的核心组件。本文将围绕技术解析、产品评测、行业趋势、应用案例及市场动态五大维度,深入探讨…

exit耗时高

背景:程序退出发现被强制退出,而不是正常的退出。正常退出是发送15信号,而异常退出是发送信号9,强制退出。退出机制是先发送信号15,然后6s内没有退出完成,会发送信号9。通过查看退出流程,是将初…

docker compose up -d 是一个用于 通过 Docker Compose 在后台启动多容器应用 的命令

docker compose 表示调用 Docker Compose 工具,用于管理基于 YAML 文件定义的多容器应用。 up 核心指令,作用是根据 docker-compose.yml 文件中的配置,创建并启动所有定义的服务、网络、卷等资源。 如果容器未创建,会先构建镜像&…

从辅助到协作:GitHub Copilot的进化之路

如果说现代程序员的标配工具除了VS Code、Stack Overflow之外,还有谁能入选,那一定是GitHub Copilot。从2021年首次亮相,到如今深度集成进开发者日常流程,这个“AI编程助手”已经不只是写几行自动补全代码的小帮手了,而…

局部放大maya的视图HUD文字大小的方法

一、问题描述: 有网友问:有办法局部放大maya的字体吗比如hud中currenttime打开之后画面右下角有个frame 想放大一下能做到吗? 在 Maya 中,可以通过自定义 HUD(Heads-Up Display)元素的字体大小来局部放大特…

C++中隐式的类类型转换知识详解和注意事项

一、隐式转换的基本概念 隐式类型转换(implicit conversion)指编译器在需要时自动在两种类型之间插入转换代码,无需显式调用。对于内置类型(如 int 到 double),转换由标准定义;对于用户自定义类…

【C++】18.二叉搜索树

由于map和set的底层是红黑树,同时后面要讲的AVL树(高度平衡二叉搜索树),为了方便理解,我们先来讲解二叉搜索树,因为红黑树和AVL树都是在二叉搜索树的前提下实现的 在之前的C语言数据结构章节中,我们讲过二叉树&#x…

Leaflet使用SVG创建动态Legend

接前一篇文章,前一篇文章我们使用 SVG 创建了带有动态文字的图标,今天再看看怎样在地图上根据动态图标生成相关的legend,当然这里也还是使用了 SVG 来生成相关颜色的 legend。 看下面的代码,生成了一个 svg 节点,其中…

Linux基础开发工具二(gcc/g++,自动化构建makefile)

3. 编译器gcc/g 3.1 背景知识 1. 预处理(进行宏替换/去注释/条件编译/头文件展开等) 2. 编译(生成汇编) 3. 汇编(生成机器可识别代码) 4. 连接(生成可执行文件或库文件) 3.2 gcc编译选项 格式 : gcc …

PostGIS实现栅格数据入库-raster2pgsql

raster2pgsql使用与最佳实践 一、工具概述 raster2pgsql是PostGIS提供的命令行工具,用于将GDAL支持的栅格格式(如GeoTIFF、JPEG、PNG等)导入PostgreSQL数据库,支持批量加载、分块切片、创建空间索引及金字塔概览,是栅格数据入库的核心工具。 二、核心功能与典型用法 1…

精益数据分析(64/126):移情阶段的用户触达策略——从社交平台到精准访谈

精益数据分析(64/126):移情阶段的用户触达策略——从社交平台到精准访谈 在创业的移情阶段,精准找到目标用户并开展深度访谈是验证需求的关键。今天,我们结合《精益数据分析》中的方法论,探讨如何利用Twit…

ORACLE RAC环境REDO日志量突然增加的分析

服务概述 CRM系统在7/11日出现REDO日志产生量突增,达到平时产生量的20倍以上,对数据同步已经造成了较大的影响。工程师接到故障申报后,及时进行响应,通过对相关日志等信息的深入分析,整理汇总此文档。 二、数据库REDO…

注册表设置windows背景护眼色

方法一: CtrlR,输入regedit打开注册表 HKEY_CURRENT_USER\Control Panel\Colors 右侧窗口Windows键值由255 255 255改为202 234 206。 方法二: 还是注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\DefaultColo…

回溯法理论基础 LeetCode 77. 组合 LeetCode 216.组合总和III LeetCode 17.电话号码的字母组合

目录 回溯法理论基础 回溯法 回溯法的效率 用回溯法解决的问题 如何理解回溯法 回溯法模板 LeetCode 77. 组合 回溯算法的剪枝操作 LeetCode 216.组合总和III LeetCode 17.电话号码的字母组合 回溯法理论基础 回溯法 回溯法也可以叫做回溯搜索法,它是一…

自己手写tomcat项目

一:Servlet的原理 在Servlet(接口中)有: 1.init():初始化servlet 2.getServletConfig():获取当前servlet的配置信息 3.service():服务器(在HttpServlet中实现,目的是为了更好的匹配http的请求方式) 4.g…

兰亭妙微:用系统化思维重构智能座舱 UI 体验

兰亭妙微设计专注于以产品逻辑驱动的界面体验优化,服务领域覆盖AI交互、智能穿戴、IoT设备、智慧出行等多个技术密集型产业。我们倡导以“系统性设计”为方法论,在用户需求与技术边界之间找到最优解。 此次智能驾驶项目,我们为某车载平台提供…

ubuntu安装google chrome

更新系统 sudo apt update安装依赖 sudo apt install curl software-properties-common apt-transport-https ca-certificates -y导入 GPG key curl -fSsL https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/google-chrom…

技术测评:小型单文件加密工具的功能解析

最近在测试一款名为OEMexe的文件加密工具,发现它确实有一些独特之处值得分享。这款软件体积非常小巧,仅209KB,属于绿色单文件版程序,无需安装即可直接运行。 主要特点 多格式支持:能够处理多种常见文件格式&#xff0…

Java-Objects类高效应用的全面指南

Java_Objects类高效应用的全面指南 前言一、Objects 类概述二、Objects 类的核心方法解析2.1 requireNonNull系列方法:空指针检查的利器2.2 equals方法:安全的对象比较2.3 hashCode方法:统一的哈希值生成2.4 toString方法:灵活的对…