机器学习之监督学习(一)

news2024/11/14 13:52:52

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

机器学习之监督学习(一)

  • 1.监督学习定义
  • 2.监督学习分类
    • 2.1回归 regression
    • 2.2 分类 classification
  • 3.线性回归 linear regression
    • 3.1 单特征线性回归
      • 补充一:梯度下降
    • 3.2 多特征线性回归
      • 补充二:正规方程 normal equation

1.监督学习定义

监督学习(supervised learning)是一种机器学习方法,在这种方法中,算法通过训练集中的输入数据(特征)和相应的输出标签(目标)来学习映射关系,从而能够对未见过的数据进行预测或分类。


2.监督学习分类

2.1回归 regression

回归的目标是根据输入数据预测连续的数值输出,输出标签是连续的实数,例如预测房价。

2.2 分类 classification

分类的目标是根据输入数据将样本分配到不同类别中,输出标签是离散的如有限的类别。例如垃圾邮件过滤。


3.线性回归 linear regression

3.1 单特征线性回归

案例:根据房子尺寸预测房价

符号定义
x:输入向量
y:输出/目标向量
m:训练数据量
(x,y): 训练集中的一个数据
(x(i),y(i)):训练集中第i个数据

线性回归模型
y ^ = f w , b ( x ) = w x + b \hat{y}=f_{w,b}(x) =wx+b y^=fw,b(x)=wx+b

代价函数 cost function
平均平方误差函数 squared error function
J ( w , b ) = 1 2 m ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 J(w,b)=\frac{1}{2m}\sum_{i=1}^{m}(\hat{y}^{(i)}-y^{(i)})^2 J(w,b)=2m1i=1m(y^(i)y(i))2
说明:
1、额外乘 1 2 \frac{1}{2} 21是为了便于后续求导
2、代价函数J是关于线性系数w和b的函数

训练目标:最小化代价J

训练思路:梯度下降 gradient descent


补充一:梯度下降

何为梯度下降?
先看看单变量梯度下降
一元函数中可以认为梯度即是导数,从下图中可以看出,我们从任意点出发,当该点导数大于0时,往左移动靠近极小值点,当该点导数小于0时,往右移动靠近极小值点。因此给出一种收敛到极小值点的方法: w − w − α ∂ J ( w ) ∂ w w-w-\alpha\frac{\partial{J(w)}}{\partial{w}} wwαwJ(w),其中 α \alpha α是学习率,用来控制每一次移动步距。当学习率太小时,收敛缓慢,当学习率太大时,由于步距大,可能造成远离极值点而无法收敛,故应该选择合适的学习率进行训练。进行足够多次梯度下降后,w近似取到极小值点。
在这里插入图片描述
再来看多变量梯度下降,这里以方便可视化的二元函数梯度下降为例,学过高数的我们知道梯度的定义为:
∇ f = [ f x , f y ] T \nabla{f}=[f_x,f_y]^T f=[fx,fy]T
即由两个偏导构成的梯度向量,当方向导数和梯度方向一致时,方向导数最大,方向相反时,方向导数最小。因此想要最快下降到山谷位置,应沿着梯度反方向走,用数学表述为(假设两个变量是w和b)
[ w , b ] T = [ w , b ] T − α ∇ f [w,b]^T=[w,b]^T-\alpha\nabla{f} [w,b]T=[w,b]Tαf
w = w − α ∂ J ∂ w , b = b − α ∂ J ∂ w w=w-\alpha\frac{\partial{J}}{\partial{w}},b=b-\alpha\frac{\partial{J}}{\partial{w}} w=wαwJ,b=bαwJ
在这里插入图片描述
对于多元函数,梯度下降表达式即
[ x 1 , x 2 . . . , x n ] T = [ x 1 , x 2 . . . , x n ] T − α [ ∂ J ∂ x 1 , ∂ J ∂ x 2 , . . . , ∂ J ∂ x n ] T [x_1,x_2...,x_n]^T=[x_1,x_2...,x_n]^T-\alpha[\frac{\partial{J}}{\partial{x_1}},\frac{\partial{J}}{\partial{x_2}},...,\frac{\partial{J}}{\partial{x_n}}]^T [x1,x2...,xn]T=[x1,x2...,xn]Tα[x1J,x2J,...,xnJ]T
梯度下降算法的起始点随机确定,但收敛的极值点不一定是全局极值点,有可能陷入局部极值点,一种解决的思路是多次随机生成起点进行多次梯度下降,比较每次极值进行比较获取全局极值。


对于上面线性回归模型中提到的成本函数,其3D图像是凹函数,即只有一个极值点,因此不必考虑陷入局部极值的问题。

求偏导过程如下,注意求导和求和可以互换,即先导再求和:

∂ ∂ w J ( w , b ) = ∂ ∂ w 1 2 m ∑ i = 1 m ( w x ( i ) + b − y ( i ) ) 2 = 1 2 m ∑ i = 1 m 2 ( w x ( i ) + b − y ( i ) ) x ( i ) = 1 m ∑ i = 1 m x ( i ) ( w x ( i ) + b − y ( i ) ) \frac{\partial}{\partial{w}}J(w,b)=\frac{\partial}{\partial{w}}\frac{1}{2m}\sum_{i=1}^{m}(wx^{(i)}+b-y^{(i)})^2\\=\frac{1}{2m}\sum_{i=1}^{m}2(wx^{(i)}+b-y^{(i)})x^{(i)}=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}(wx^{(i)}+b-y^{(i)}) wJ(w,b)=w2m1i=1m(wx(i)+by(i))2=2m1i=1m2(wx(i)+by(i))x(i)=m1i=1mx(i)(wx(i)+by(i))
∂ ∂ b J ( w , b ) = ∂ ∂ b 1 2 m ∑ i = 1 m ( w x ( i ) + b − y ( i ) ) 2 = 1 2 m ∑ i = 1 m 2 ( w x ( i ) + b − y ( i ) ) = 1 m ∑ i = 1 m ( w x ( i ) + b − y ( i ) ) \frac{\partial}{\partial{b}}J(w,b)=\frac{\partial}{\partial{b}}\frac{1}{2m}\sum_{i=1}^{m}(wx^{(i)}+b-y^{(i)})^2\\=\frac{1}{2m}\sum_{i=1}^{m}2(wx^{(i)}+b-y^{(i)})=\frac{1}{m}\sum_{i=1}^{m}(wx^{(i)}+b-y^{(i)}) bJ(w,b)=b2m1i=1m(wx(i)+by(i))2=2m1i=1m2(wx(i)+by(i))=m1i=1m(wx(i)+by(i))

关于学习率的选择

如果学习率太小,梯度下降速率太慢
如果学习率太大,可能无法收敛(发散)/无法抵达极小值点
可以绘制学习曲线cost-iteration,发现曲线下降太慢/没达到收敛时,说明学习率太小,适当增加学习率;当曲线上升(不收敛)时,说明学习率太大,适当减小学习率
推荐的学习率尝试是…0.003、0.01、0.03、0.1…,即以3倍的公比调整
在这里插入图片描述

代码实现:
一元线性回归梯度下降代码实现

3.2 多特征线性回归

案例:
根据房子尺寸、房间数量、楼层数、年龄预测房价
在这里插入图片描述

符号定义
x j 表示第 j 个特征, x ⃗ ( i ) 表示第 i 个数据, n 表示特征数量, m 表示数据量 , , x ⃗ j ( i ) 表示第 i 个数据第 j 个特征 x_j表示第j个特征,\vec{x}^{(i)}表示第i个数据,n表示特征数量,m表示数据量,,\vec{x}^{(i)}_j表示第i个数据第j个特征 xj表示第j个特征,x (i)表示第i个数据,n表示特征数量,m表示数据量,x j(i)表示第i个数据第j个特征

多元线性回归模型
w = [ w 1 , w 2 , . . . , w n ]     y ^ ( i ) = f w ⃗ , b ( x ⃗ ) = w ⃗ ⋅ x ⃗ + b w=[w_1,w_2,...,w_n]~~~\\ \hat{y}^{(i)}=f_{\vec{w},b}(\vec{x})=\vec{w}\cdot\vec{x}+b w=[w1,w2,...,wn]   y^(i)=fw ,b(x )=w x +b

代价函数 cost function
平均平方误差函数 squared error function
J ( w , b ) = 1 2 m ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 J(w,b)=\frac{1}{2m}\sum_{i=1}^{m}(\hat{y}^{(i)}-y^{(i)})^2 J(w,b)=2m1i=1m(y^(i)y(i))2

训练目标:最小化代价J

训练思路:梯度下降 gradient descent

n个特征,即参数包含n个w和1个b,共n+1个参数

先计算偏导:

∂ ∂ w j J ( w ⃗ , b ) = ∂ ∂ w j 1 2 m ∑ i = 1 m ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) 2 = 1 2 m ∑ i = 1 m 2 ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) x j ( i ) = 1 m ∑ i = 1 m x j ( i ) ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) \frac{\partial}{\partial{w_j}}J(\vec{w},b)=\frac{\partial}{\partial{w_j}}\frac{1}{2m}\sum_{i=1}^{m}(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)})^2\\=\frac{1}{2m}\sum_{i=1}^{m}2(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)})x_j^{(i)}=\frac{1}{m}\sum_{i=1}^{m}x_j^{(i)}(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)}) wjJ(w ,b)=wj2m1i=1m(w x (i)+by(i))2=2m1i=1m2(w x (i)+by(i))xj(i)=m1i=1mxj(i)(w x (i)+by(i))
∂ ∂ b J ( w ⃗ , b ) = ∂ ∂ b 1 2 m ∑ i = 1 m ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) 2 = 1 2 m ∑ i = 1 m 2 ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) = 1 m ∑ i = 1 m ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) \frac{\partial}{\partial{b}}J(\vec{w},b)=\frac{\partial}{\partial{b}}\frac{1}{2m}\sum_{i=1}^{m}(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)})^2\\=\frac{1}{2m}\sum_{i=1}^{m}2(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)})=\frac{1}{m}\sum_{i=1}^{m}(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)}) bJ(w ,b)=b2m1i=1m(w x (i)+by(i))2=2m1i=1m2(w x (i)+by(i))=m1i=1m(w x (i)+by(i))

更新参数:
w j = w j − α ∂ ∂ w j J ( w ⃗ , b ) ( j = 1 、 2... 、 n ) b = b − α ∂ ∂ b J ( w ⃗ , b ) w_j=w_j-\alpha\frac{\partial}{\partial{w_j}}J(\vec{w},b)(j=1、2...、n)\\b=b-\alpha\frac{\partial}{\partial{b}}J(\vec{w},b) wj=wjαwjJ(w ,b)(j=12...n)b=bαbJ(w ,b)

代码实现:
多元线性回归梯度下降代码实现

补充二:正规方程 normal equation

优化损失函数,除了梯度下降这种不断迭代直至收敛的算法外,从数学角度上还有一种暴力解法叫正规方程。

正规方程(Normal Equation)是用于求解线性回归模型参数的一种解析方法。它通过最小化误差平方和来找到最佳参数,不需要使用迭代优化方法如梯度下降。正规方程尤其适用于小规模数据集,因为它在大规模数据集上计算成本可能较高。

首先列出需要用到的线代知识:
①y是一维向量,则
y T y = ∣ ∣ y ∣ ∣ 2 = y ⋅ y y^Ty=||y||^2=y\cdot{y} yTy=∣∣y2=yy
②转置相关公式:
( A + B ) T = A T + B T ( A B ) T = B T A T (A+B)^T=A^T+B^T\\(AB)^T=B^TA^T (A+B)T=AT+BT(AB)T=BTAT
③p,q是一维列向量,则
p ⋅ q = p T q = q T p p\cdot{q}=p^Tq=q^Tp pq=pTq=qTp
④矩阵求导公式:
∂ ( A X ) ∂ X = A T \frac{\partial (AX)}{\partial X} = A^T X(AX)=AT
∂ ( X T A X ) ∂ X = ( A + A T ) X    [ A 对称时 = 2 A X ] \frac{\partial (X^T A X)}{\partial X} = (A + A^T) X~~[A对称时=2AX] X(XTAX)=(A+AT)X  [A对称时=2AX]

假设我们有一个线性回归模型:

y = X β + ϵ y = X\beta + \epsilon y=+ϵ

其中:
y 是目标变量向量( M × 1 M \times 1 M×1
X 是特征矩阵( M × ( N + 1 ) M \times (N+1) M×(N+1)),第一列通常为1,对应于截距项
β 是待估参数向量( ( N + 1 ) × 1 (N+1) \times 1 (N+1)×1
ϵ 是误差项向量( M × 1 M \times 1 M×1

则代价函数表示为
J ( β ) = ∣ ∣ y − X β ∣ ∣ 2 = ( y − X β ) T ( y − X β ) = ( y T − β T X T ) ( y − X β ) = y T y − y T X β − β T X T y + β T X T X β = y T y − 2 y T X β + β T X T X β J(\beta)=||y-X\beta||^2=(y-X\beta)^T(y-X\beta)=(y^T-\beta^TX^T)(y-X\beta)\\=y^Ty-y^TX\beta-\beta^TX^Ty+\beta^TX^TX\beta=y^Ty-2y^TX\beta+\beta^TX^TX\beta J(β)=∣∣y2=(y)T(y)=(yTβTXT)(y)=yTyyTβTXTy+βTXT=yTy2yT+βTXT
求导,令导数为0
∂ J ( β ) ∂ β = − 2 X T y + 2 X T X β = 0 → β = ( X T X ) − 1 X T y \frac{∂J(β)}{∂\beta}=-2X^Ty+2X^TX\beta=0\rightarrow\beta=(X^TX)^{-1}X^Ty βJ(β)=2XTy+2XT=0β=(XTX)1XTy

从最优参数向量的表达式可以看出,但矩阵规模较大时,计算成本很大,因此我们通常会在面对大规模数据集时选择梯度下降算法进行训练。

除此之外,我们还可以顺便证明一下平均平方损失函数是凸函数,如何判定凸函数,一般采用黑塞矩阵,是由目标函数在点X处的二阶偏导数组成的对称矩阵是否是半正定的,对J求二阶导:
J ′ ′ ( β ) = 2 X T X J^{''}(\beta)=2X^TX J′′(β)=2XTX
由于XTX为半正定矩阵,因此代价函数J的确是凸函数,计算出的极值即全局最值。

除此之外,正规方程法一个缺点是只适用于线性回归问题,而梯度下降在后续的逻辑回归、神经网络中都是我们优化算法的核心。

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

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

相关文章

Android 突破边界:解密google Partner机制获取Resource

在 Android 应用开发中,除了可以查找系统中的特定 APK 并获取其信息外,还可以通过 Partner 机制获取 Partner APK 的资源文件,同时这种机制也是一种跨进程的通信方式。本文将进一步探讨这些内容。 1.Partner apk注册特定的action广播 /** M…

Windows上编译GTest并执行测试用例

目录 0 背景1 环境2 生成GTest动态库2.1 下载最新GTest库2.2 编译GTest2.2.1 cmake gtest2.2.1.1 遇到问题:target参数不对2.2.1.2 遇到问题:xxx thread 编译报错 2.2.2 用VS2015编译依赖库 3 依赖库部署3.1 遇到问题 4 编写测试用例5 效果展示 0 背景 …

python中列表的复制亦有区别

python中 对列表的复制可以直接新变量名字等于原有列表名字,或者 创建新的列表从原有列表一个个复制进来。他们的区别在于下面 两个图中:

Codeforces 1304C - Air Conditioner(1500)

Air Conditioner 题面翻译 一个餐馆中有个空调,每分钟可以选择上调 1 1 1 个单位的温度或下调 1 1 1 个单位的温度,当然你也可以选择不变,初始的温度为 m m m 。 有 n n n 个食客,每个食客会在 t i t_i ti​ 时间点到达&am…

【maven】阿里云仓库配置

阿里云公共仓库的配置看起来有多种类型的仓库: 配置指南 我的maven是idea 自带的:D:\Program Files\JetBrains\IntelliJ IDEA 2022.3.1\plugins\maven\lib\maven3\</

突破编程 C++ 设计模式(组合模式)详尽攻略

在软件开发中&#xff0c;设计模式为程序员提供了解决特定问题的最佳实践。设计模式不仅提高了代码的可复用性和可维护性&#xff0c;还能帮助团队更好地进行协作。在这篇文章中&#xff0c;我们将深入探讨组合模式——一种结构型设计模式。 组合模式允许你将对象组合成树形结…

哪里能免费申请IP SSL证书

一、选择可信赖的证书颁发机构 首先&#xff0c;需要选择一个可信赖的证书颁发机构&#xff08;CA&#xff09;。知名的CA机构如JoySSL、Symantec、GlobalSign等提供IP SSL证书服务。这些机构能够提供符合国际标准的SSL证书&#xff0c;确保数据传输的安全性和服务器的身份验证…

Docker 安装 SqlServer

摘要&#xff1a;我们工作当中经常需要拉取多个数据库实例出来做集群&#xff0c;做测试也好&#xff0c;通过 Docker 拉取 SqlServer 镜像&#xff0c;再通过镜像运行多个容器&#xff0c;几分钟就可以创建多个实例&#xff0c;效率是相当的高。 1. docker 拉取镜像 注意&am…

C++与OpenCV联袂打造:智能视觉识别技术的实践与探索

C与OpenCV联袂打造&#xff1a;智能视觉识别技术的实践与探索 1. 环境设置与准备工作1.1 安装OpenCV和配置开发环境1.1.1 下载OpenCV1.1.2 安装OpenCVWindows系统Linux系统 1.1.3 配置OpenCV库 1.2 C编译器的选择与配置1.2.1 Windows系统1.2.2 Linux系统1.2.3 编译器配置 1.3 选…

浏览器中的开源SQL可视化工具:sqliteviz

sqliteviz&#xff1a; 在浏览器中&#xff0c;即刻开启数据可视化之旅。- 精选真开源&#xff0c;释放新价值。 概览 sqliteviz是一个专为数据可视化而设计的单页离线优先PWA&#xff0c;它利用了现代浏览器技术&#xff0c;让用户无需安装任何软件即可在本地浏览器中进行SQL…

助力外骨骼机器人动力学分析

目录 一、动力学分析 二、拉格朗日方程 三、参考文献 一、动力学分析 动力学是考虑引起运动所需要的力&#xff0c;使执行器作用的力矩或施加在操作臂上的外力使操作臂按照这个动力学方程运动。 目前机器人动力学分析中主要采用牛顿-欧拉动力学方程和拉格朗日动力学方程 […

Leetcode面试经典150题-13.罗马数字转整数

解法都在代码里&#xff0c;不懂就留言或者私信&#xff0c;这个是相对简单点的&#xff0c;感觉会在低职级面试的时候考 class Solution {/**罗马数字转整数还是比较简单的&#xff0c;基本思路&#xff1a;把罗马数字字符串转成字符数组同时创建一个int型数组&#xff0c;遍…

直线公理使初等数学一直将各异直线误为同一线 ——数集相等定义凸显初数一直将各异假R误为R

黄小宁&#xff08;通讯&#xff1a;广州市华南师大南区9-303 510631&#xff09; [摘要]任何图≌自己这一几何最起码常识凸显初等数学一直将无穷多各异直线&#xff08;平面&#xff09;误为同一线&#xff08;面&#xff09;。数集相等的定义凸显&#xff1a;初数应有几何起码…

linux文件——文件系统——文件系统深度理解、学习inode

前言&#xff1a;本篇内容讲解文件系统的细节问题。 在本篇内容中&#xff0c; 我们在学习文件系统的过程中&#xff0c; 我们可以理解inode的原理&#xff0c; 理解如何在文件系统的概念下新建文件&#xff0c; 删除文件&#xff0c; 查找文件&#xff0c; 修改文件等等问题。…

商圣集团:数字创新,引领智慧生活新篇章

在全球化经济不断演进的大潮中&#xff0c;数字经济已成为推动社会进步的关键引擎&#xff0c;重塑着我们的生产与生活模式。商圣集团&#xff0c;以服务社会、创新驱动为核心价值观&#xff0c;致力于利用数字化技术&#xff0c;为个人和企业带来高效、便捷的服务体验&#xf…

【高阶数据结构】秘法(一)——并查集:探索如何高效地管理集合

前言&#xff1a; 前面我们已经学习了简单的数据结构&#xff0c;包括栈与队列、二叉树、红黑树等等&#xff0c;今天我们继续数据结构的学习&#xff0c;但是难度上会逐渐增大&#xff0c;在高阶数据结构中我们要学习的重点是图等 目录 一、并查集的原理 二、并查集的基本操作…

嘉兴银行业绩上涨却市值下滑,新任行长背后的辛酸

撰稿|芋圆 2024年3月6日&#xff0c;秦山核电有限公司&#xff08;以下简称“泰山核电”&#xff09;在上海联合产权交易所转让其所持有的嘉兴银行股份有限公司&#xff08;下称“嘉兴银行”&#xff09;的全部股份630万股的&#xff0c;占嘉兴银行总股本的0.3272%&#xff0c…

【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;C 目录 前言 一、类的概念及定义 1. 类的定义格式 2. 访问限定符 二、类域 三、类的实例化--对象 1. 实例化的概念 2. 对象的内存大小 四、this指针 …

Vue——认识day02

此处接上一篇文章Vue——初识Vue开始&#xff0c;欢迎大家。 目录 1.MVVM模型 2.Object.defineproperty方法 3.数据代理简介 4.Vue中的数据代理 总结 1.MVVM模型 MVVM模型是一种软件架构模式&#xff0c;用于将用户界面&#xff08;View&#xff09;&#xff0c;业务逻辑&…

牛客周赛 Round 35 (A~G)

本次A~D较为简单&#xff0c;E是一道很好的构造题&#xff0c;FG主要就是考察组合数和约数个数 A.小红的字符串切割 思路 &#xff1a;签到题 void solve() {string s;cin>>s;int lens.size();cout<<s.substr(0,len/2)<<endl<<s.substr(len/2); }B.小…