【机器学习】详解回归(Regression)

2023-09-20 20:44:41


是什么的问题

  1. 回归分析(Regression Analysis) 是研究自变量与因变量之间数量变化关系的一种分析方法,它主要是通过因变量Y与影响它的自变量 X i ( i 1 , 2 , 3 … ) X_i(i1,2,3…) Xii1,2,3之间的回归模型,衡量自变量 X i X_i Xi对因变量Y的影响能力的,进而可以用来预测因变量Y的发展趋势。

请添加图片描述

  1. 损失函数(Cost Function/Lost Function) 用于估计模型的预测值和真实值之间的不一致程度,损失函数越小代表模型预测结果与真实值越相近。

定义线性回归的损失函数,可采用最小二乘法,通过最小化误差的平方和寻找数据的最佳函数匹配。
单个样本(example)的误差函数:
在这里插入图片描述
总体n的误差函数:
在这里插入图片描述线性回归模型的函数: y ^ = w 1 x 1 + w 2 x 2 + . . . + w d x d + b = W T X + b \hat{y}=w_1x_1+w_2x_2+...+w_dx_d+b=W^TX+b y^=w1x1+w2x2+...+wdxd+b=WTX+b

在训练模型时,我们希望寻找⼀组参数(w∗, b∗),这组参数能最⼩化在所有训练样本上的总损失。
在这里插入图片描述

  1. 如何找到最优的w,b来优化我们的模型?

用数学的方法就是把w,b看成未知变量,分别对其求偏导。

L ( w , b ) = ∑ i = 1 n ( W T X + b i − y i ) 2 L(w,b)=\sum_{i=1}^{n} (W^TX+bi-y_i)^2 L(w,b)=i=1n(WTX+biyi)2
因为我们求L最小时,w和b的值,去掉前面的非0正系数不影响。
参数w
在这里插入图片描述参数b:同上
在这里插入图片描述


案例说明

问题:预测宝可梦升级后的cp值
在这里插入图片描述Step1: model (设计网络模型)define a set of function
在这里插入图片描述
b是bias(偏置), w i w_i wi是weight(权重), X c p X_{cp} Xcp是我们输入的cp值
线性模型: y = b + w 1 x 1 + w 2 x 2 + . . . + w i x i y = b + w_1x_1 + w_2x_2 + ... + w_ix_i y=b+w1x1+w2x2+...+wixi
b和w的值是有很多个的,所以有a set of function,需要通过这个train data去找到这个最合适的function。

step 2: Goodness of function(函数的好坏)
在这里插入图片描述通过第一另外一个function:Loss来判断上面的function的好坏

在这里插入图片描述Loss function 是去衡量y的好坏,去判断我们找到的w,b的好坏

step 3: Best Funciton(Gradient Descent)
在这里插入图片描述很显然,就是求L分别对w,b的偏导,通过梯度下降的方式来找到最小的L。
单个参数的考虑:
在这里插入图片描述通过不断更新,使得L最小,会到达一个局部最优(local optimal),斜率为0或接近于0,这个时候就无法再更新w了,所以是不能找到全局最优(global optimal)。

俩个参数的考虑:

在这里插入图片描述在这里插入图片描述最后,通过上面的10个宝可梦的数据,得到参数b,w,然后进行测试:
在这里插入图片描述
怎样获得更好的结果呢?怎样让预测更加准确呢?
其实就是需要改变模型:(这里改成二次式)

多项式回归(Polynomial Regression), 多项式回归与线性回归的概念相同,只是它使用的是曲线而不是直线(线性回归使用的是直线)。多项式回归学习更多的参数来绘制非线性回归曲线。对于不能用直线概括的数据,它是有益的。多项式回归是将自变量x与因变量y之间的关系建模为n次多项式的一种线性回归形式。多项式回归拟合了x值与y相应条件均值之间的非线性关系,记为E(y |x)。

在这里插入图片描述
或者说还想更好,那么可以尝试从二次转化为三次

在这里插入图片描述四次:
在这里插入图片描述从这里开始,虽然换成了更复杂的Mode。但是测试的结果,average error变大了,results become worse…

五次:
在这里插入图片描述综上:
在这里插入图片描述模型model越复杂,包含的train data越多,在训练集上的误差越小。

在这里插入图片描述但是更加复杂的模型不一定能在测试数据中带来更好的表现。会出现【过拟合】,所以,我们要选择一个最适合我们的model而不是最复杂的model。因为,可能会导致过拟合。上图中最好的model是三次式的。

当增加更多的宝可梦数据时,会发现不仅仅只有一个cp值的影响,还有物种的影响,所以需要重新设计我们的model
在这里插入图片描述
重新设计的model,增加了物种因素:
在这里插入图片描述结果:
在这里插入图片描述上分类后得到的linear model,结果明显比原来的没有分类的好太多了。尝试增加更多因素,修改model:(量,高度,HP值)
在这里插入图片描述重新设计的model:
在这里插入图片描述最终结果训练误差小了很多,但是测试误差太大了,过拟合了。遇到这个情况需要引出一个新的概念:正则化(Regularization)

Back to step 2: Regularization(正则化) 正则化就是说给需要训练的目标函数加上一些规则(限制),让我们的函数尽量平缓,别过于膨胀,我们在梯度函数中加上 w e i g h t 2 weight^2 weight2这一项,这样就可以很好控制weight的大小。

在这里插入图片描述重新训练的结果:
在这里插入图片描述当λ=100时,达到这个模型的最佳测试Loss


更多推荐

typeof的作用

typeof是JavaScript中的一种运算符,用于获取给定值的数据类型。它的作用是返回一个字符串,表示目标值的数据类型。通过使用typeof运算符,我们可以在运行时确定一个值的类型,从而进行相应的处理或逻辑判断。常见的数据类型包括:"undefined":未定义的值"boolean":布尔值"number":数字"

Java的checked exception有意义吗?

1前言这种异常必须在编译前就try/catch,又不一定会抛异常,小项目中不明显,大项目中,会造成不必要代码臃肿和可读性降低,完全可在编译出错时,通过单元测试和调试,得到正确代码。这设计还有啥意义?CheckedException初衷很好,但事实上是没啥卵用设计。2初衷很好因为我们都知软件会有各种问题,严谨处理这些问题

【JavaScript精通之道】掌握数据遍历:解锁现代化遍历方法,提升开发效率!

​🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!​目录📚前言📘1.reduce方法📘2.forEach方法📘3.map方法📘4.for循环📘5.filter方法📘6.for...of循环📘7.Object.keys方法📘8.Object.va

ARTS 打卡 第一周,初试ARTS

前言认识三掌柜的想必都知道,我持续创作技术博客已经有6年时间了,固定每个月发布不少于6篇博文。同时,自己作为一名热爱分享的开发者,像ARTS这样的活动自然少不了我。由于我是打算挤在一起分享,之前都是做了本地文档记录,所以直接把内容整合起来即可,那么接下来就开启我的第一周打卡咯。ARTS是什么?ARTS其实是由四个部分组

ngx_memalign是在 Nginx 中使用的一个内存分配函数,它的作用是根据指定的对齐方式和大小,分配一块对齐的内存

ngx_memalignngx_memalign是在Nginx中使用的一个内存分配函数。它的作用是根据指定的对齐方式和大小,分配一块对齐的内存。这个函数在Nginx的内存管理系统中使用得比较广泛,尤其是在处理大块数据时,可以提高内存访问的效率。具体的函数原型如下:void*ngx_memalign(size_talig

Apache Spark 的基本概念

ApacheSpark是一种快速、可扩展、通用的数据处理引擎。它是一种基于内存的计算框架,支持分布式数据处理、机器学习、图形计算等多种计算任务。与传统的HadoopMapReduce相比,Spark具有更高的性能和更广泛的应用场景。Spark中的基本概念包括:1.ResilientDistributedDatasets

Javas | DecimalFormat类、BigDecimal类、Random类

目录:1.DecimalFormat类2.BigDecimal类3.Random类4.需求:编写程序,生成5个不重复的随机数1.DecimalFormat类DecimalFormat是NumberFormat的一个具体子类,用于格式十进制数字。/***关于数字的格式化*/publicclassDecimalFormat

滚雪球学Java(28):轻松掌握数组:访问和遍历技巧

🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!前言在Java编程中,数组是一种常用的数据结构。它在存储和处理数据时具有很高的效率,能够方便地进行访问和遍历。本文将介绍数组的访问和遍历技巧,帮助读者更加深入地了解Java数

单片机C语言实例:23、串口通讯

一、轮询发送程序实例1:#include<reg52.h>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include"delay.h"/*------------------------------------------------函数声明---------------------------

Vue记录(下篇)

Vuexgetters配置项*Count.vue<template><div><h1>当前求和为:{{$store.state.sum}}</h1><h3>当前求和的10倍为:{{$store.getters.bigSum}}</h3><selectv-model.number="n"><optionvalue="1"

vue+springboot,easyexcel的excel文件下载

文章目录1.效果展示1.1前端界面1.2下载的excel2.思路介绍3.前端代码展示4.后端代码展示5.核心代码解释1.效果展示excel文件单一sheet,多sheet导出本文主要介绍如何使用easyexcel,配合前端导出Excel文件。同时提供Excel的两种导出形式:单一sheet,多sheet。1.1前端界面

热文推荐