吴恩达机器学习COURSE1 WEEK3
COURSE1 WEEK3
逻辑回归
逻辑回归主要用于分类任务
只有两种输出结果的分类任务叫做二元分类,例如预测垃圾邮件,只能回答是或否
实际上,在逻辑回归中,我们要做的任务就类似于在数据集中画出一个这样的曲线,用来作为类别的界限
在上图中,由于我们用的是线性回归模型,最终的输出是是一个连续的离散的值,而我们的二分类任务是输出0和1,代表不是和是,因此还需要将上图中的输出加入到 s i g m o i d sigmoid sigmoid函数中,映射到 [ 0 , 1 ] [0,1] [0,1]区间内
基本流程如下所示:
逻辑回归方程定义式
f w ⃗ , b ( x ⃗ ) = 1 1 + e − ( w ⃗ ⋅ x ⃗ + b ) f_{\vec w, b}(\vec x) = \frac{1}{1+e^{-(\vec w \cdot \vec x + b)}} fw,b(x)=1+e−(w⋅x+b)1
观察 S i g m o i d Sigmoid Sigmoid函数,我们可以观察到:
- 当输入值小于0,即 z < 0 → w x + b < 0 z <0 \to wx+b < 0 z<0→wx+b<0时,最终的输出趋近于0,代表负类
- 当输入值大于0,即 z > 0 → w x + b > 0 z >0 \to wx+b > 0 z>0→wx+b>0时,最终的输出趋近于1,代表正类
因此,我么可以找到决策边界,即 w ⃗ ⋅ x ⃗ + b = 0 \vec w\cdot \vec x + b = 0 w⋅x+b=0
而对于更复杂的数据,我们可以使用特征工程的方法对输入进行多项式变换组合,以满足实际的需求
逻辑回归中的损失函数
逻辑回归中不再使用平方误差函数,因为通过观察我们逻辑回归的函数定义式,带有指数项比较复杂,因此带入平方误差损失函数中,图像如下,
即是一个非凸的函数,存在很多局部最优的地方,容易使得我们的梯度下降算法效果不理想
在逻辑回归中,使用的是交叉熵损失函数,可以用来衡量预测的结果与实际的结果的一致性程度
L ( f w ⃗ , b ( x ⃗ ( i ) ) , y ( i ) ) = { − log ( f w ⃗ , b ( x ⃗ ( i ) ) ) i f y ( i ) = 1 − log ( 1 − f w ⃗ , b ( x ⃗ ( i ) ) ) i f y ( i ) = 0 L(f_{\vec w,b}(\vec x^{(i)}), y^{(i)})= \left\{ \begin{aligned} -\log (f_{\vec w,b}(\vec x^{(i)})) \ \ \ \ if \ y^{(i)} = 1 \\ -\log (1-f_{\vec w,b}(\vec x^{(i)})) \ \ \ \ if \ y^{(i)} = 0 \end{aligned} \right. L(fw,b(x(i)),y(i))={−log(fw,b(x(i))) if y(i)=1−log(1−fw,b(x(i))) if y(i)=0
如下函数图像 − l o g ( 1 − f ) -log(1-f) −log(1−f) ,可以发现,当 y ( i ) = 0 y^{(i)} = 0 y(i)=0时
- 如果预测的结果 y ^ = 0 \hat y = 0 y^=0,那么损失值会为0
- 如果预测结果 y ^ = 1 \hat y = 1 y^=1,那么损失值特别大
如下函数图像 − l o g ( f ) -log(f) −log(f) ,可以发现,当 y ( i ) = 1 y^{(i)} = 1 y(i)=1时
- 如果预测的结果 y ^ = 0 \hat y = 0 y^=0,那么损失值会为特别大
- 如果预测的结果 y ^ = 1 \hat y = 1 y^=1,那么损失值为0
因此,通过这种损失函数,可以发现其是一个凸函数,因此可以使用梯度下降得到一个可靠的答案
由于我们处理的是一个二分类任务,即 y y y 要么取 0 要么取 1 ,因此,我们的损失函数还可以简化为:
L ( f w ⃗ , b ( x ⃗ ( i ) ) , y ( i ) ) = − y ( i ) log ( f w ⃗ , b ( x ⃗ ( i ) ) ) − ( 1 − y ( i ) ) log ( 1 − f w ⃗ , b ( x ⃗ ( i ) ) ) L(f_{\vec w,b}(\vec x^{(i)}), y^{(i)})=- y^{(i)}\log (f_{\vec w,b}(\vec x^{(i)})) - (1-y^{(i)})\log (1-f_{\vec w,b}(\vec x^{(i)})) L(fw,b(x(i)),y(i))=−y(i)log(fw,b(x(i)))−(1−y(i))log(1−fw,b(x(i)))
因此,当 y ( i ) = 1 y^{(i)} = 1 y(i)=1时,前面的式子有效,当 y ( i ) = 0 y^{(i)} = 0 y(i)=0时,后面的式子有效
逻辑回归中的梯度下降
参数的更新
同样,在逻辑回归中,也可以使用向量化的操作来加快梯度下降的收敛速度
过拟合问题
在训练过程中,经常会遇到过拟合的问题,导致模型的性能不好
过拟合与欠拟合
欠拟合
由于模型使用的不当等因素,使得模型不饿能很好的拟合训练集,算法无法捕捉训练数据中的重要特征模式,例如在预测房价时,如果我们使用线性模型,且不使用特征工程的方法时,就可能会出现欠拟合的现象
模型的泛化能力
模型的泛化能力是指模型的性能比较好,能够适用于大多数数据,即使在它一千从未见到过的全新示例上也能做出良好的预测
过拟合
过拟合是指我们的模型可能过于复杂,非常适合训练数据,在训练集上的表现性能非常优秀,但是在新的数据集上,不能做出良好精确的预测,这种模型不能进行推广到其他数据集上
过拟合与欠拟合的现象也会出现在分类任务里
解决过拟合的方法
-
收集更多的数据进行训练,即使用大量的数据样例进行训练
-
观察是否可以使用更少的特征,减少一些多项式特征的使用
可以通过将特征前的参数设置为0来去除该特征
-
加入正则化项——鼓励学习算法缩小参数值,而不必要求参数为0
可以保留所有特征,但只是防止特征产生过大的影响,有时也会导致过拟合
正则化技术时实际应用中一种非常常用的方法
正则化
正则化的方法就是对损失函数进行适当的修改,即对特征进行惩罚
例如我们的模型函数如下所示
f = w 1 x + w 2 x 2 2 + w 3 x 3 + w 4 x 4 + b f = w_1x + w_2x_2^2 + w_3x^3 + w_4x^4 + b f=w1x+w2x22+w3x3+w4x4+b
损失函数如下所示:
min 1 2 m ∑ i = 1 m ( f ( x ( i ) ) − y ( i ) ) 2 \min \frac{1}{2m}\sum_{i=1}^{m}(f(x^{(i)}) - y^{(i)})^2 min2m1i=1∑m(f(x(i))−y(i))2
由于 x 3 x^3 x3和 x 4 x^4 x4的出现,可能会导致我们的模型出现过拟合的现象,因此我们要对这两个特征的系数,即 w 3 w_3 w3和 w 4 w_4 w4进行正则化惩罚,从而,将损失函数改变如下:
min 1 2 m ∑ i = 1 m ( f ( x ( i ) ) − y ( i ) ) 2 + 1000 w 3 2 + 1000 w 4 2 \min \frac{1}{2m}\sum_{i=1}^{m}(f(x^{(i)}) - y^{(i)})^2 + 1000w_3^2 + 1000w_4^2 min2m1i=1∑m(f(x(i))−y(i))2+1000w32+1000w42
因此通过模型的不断训练, w 3 w_3 w3 和 w 4 w_4 w4 就会变得比较小,使得我们的模型具有较好的泛化能力
且一般而言,我们只对特征前的参数进行正则化处理,而不对偏置 b b b 进行正则化处理
而在实际中,往往会有成千的特征,而我们不知道哪些特征是重要的,因此正则化的典型实现方式就是惩罚所有的特征
正则化通用公式:
J ( w ⃗ , b ) = min 1 2 m ∑ i = 1 m ( f ( x ( i ) ) − y ( i ) ) 2 + λ 2 m ∑ j = 1 n w j 2 J(\vec w, b) = \min \frac{1}{2m}\sum_{i=1}^{m}(f(x^{(i)}) - y^{(i)})^2 + \frac{\lambda}{2m}\sum_{j=1}^{n}w_j^2 J(w,b)=min2m1i=1∑m(f(x(i))−y(i))2+2mλj=1∑nwj2
其中, λ \lambda λ 是正则化参数
当 λ \lambda λ 非常大时,我们的模型参数 w j w_j wj 都趋近于0,此时模型的输出就等于偏置 b b b,出现欠拟合现象
当 λ \lambda λ非常小时( λ = 0 \lambda = 0 λ=0),就相当于没有做正则化操作,此时我们的模型就会出现过拟合现象
因此,我们的任务就是要选择一个合适的正则化参数
用于线性回归的正则化
使用正则化后,我们的损失函数分为了两个部分:
- 损失项
- 正则化项
因此,使用梯度下降更新参数的表达式变为:
w j = w j − α ∂ ∂ w j = w j − α [ 1 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) x j ( i ) + λ m w j ] w_j= w_j-\alpha \frac{\partial}{\partial w_j} = w_j - \alpha[\frac{1}{m}\sum_{i=1}^{m}(f_{\vec w, b}(\vec x^{(i)})-y^{(i)})x_j^{(i)} + \frac{\lambda}{m}w_j] wj=wj−α∂wj∂=wj−α[m1i=1∑m(fw,b(x(i))−y(i))xj(i)+mλwj]
而偏置 b b b 的更新公式不变
用于逻辑回归的正则化
对于逻辑回归,加入正则化后,损失函数变为:
J ( w ⃗ , b ) = − 1 m ∑ i = 1 m [ y ( i ) log ( f w ⃗ , b ( x ⃗ ( i ) ) ) − ( 1 − y ( i ) ) log ( 1 − f w ⃗ , b ( x ⃗ ( i ) ) ) ] + λ 2 m ∑ j = 1 n w j 2 J(\vec w,b)=-\frac{1}{m}\sum_{i=1}^{m}[ y^{(i)}\log (f_{\vec w,b}(\vec x^{(i)})) - (1-y^{(i)})\log (1-f_{\vec w,b}(\vec x^{(i)}))] + \frac{\lambda}{2m}\sum_{j=1}^nw_j^2 J(w,b)=−m1i=1∑m[y(i)log(fw,b(x(i)))−(1−y(i))log(1−fw,b(x(i)))]+2mλj=1∑nwj2
使用梯度下降时,参数更新的变化和线性回归一样:
w j = w j − α ∂ ∂ w j = w j − α [ 1 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) x j ( i ) + λ m w j ] w_j= w_j-\alpha \frac{\partial}{\partial w_j} = w_j - \alpha[\frac{1}{m}\sum_{i=1}^{m}(f_{\vec w, b}(\vec x^{(i)})-y^{(i)})x_j^{(i)} + \frac{\lambda}{m}w_j] wj=wj−α∂wj∂=wj−α[m1i=1∑m(fw,b(x(i))−y(i))xj(i)+mλwj]
相关文章:

吴恩达机器学习COURSE1 WEEK3
COURSE1 WEEK3 逻辑回归 逻辑回归主要用于分类任务 只有两种输出结果的分类任务叫做二元分类,例如预测垃圾邮件,只能回答是或否 实际上,在逻辑回归中,我们要做的任务就类似于在数据集中画出一个这样的曲线,用来作为…...
白骑士的PyCharm教学高级篇 3.1 性能分析与优化
系列目录 上一篇:白骑士的PyCharm教学进阶篇 2.5 数据库连接与管理 在软件开发中,性能分析与优化是提高程序运行效率和用户体验的重要环节。PyCharm提供了强大的性能分析工具,帮助你识别和优化代码中的性能瓶颈。本文将详细介绍PyCharm中的代…...
swiper横向轮播(阶梯式滚动轮播)未生效
问题描述 版本问题 使用swiper4以上的版本可以解决该问题,4以上的swiper采用了this指向。...

基于arcpro3.0.2的北斗网格生成简介
基于arcpro3.0.2的北斗网格生成简介 采用2000坐标系、可基于行政区范围 软件可生成第一级到第十级北斗网格经纬跨度 等分 约赤道处距离 第一级 6X4度 60 和A~V 660 km 第二级 30X30分 12X8 …...
网络流算法:最大流问题
引言 最大流问题是网络流中的一个经典问题,其目标是在给定的流网络中找到从源点到汇点的最大流量。最大流问题在交通运输、计算机网络、供应链管理等领域有广泛的应用。本文将详细介绍最大流问题的定义、解决方法以及具体算法实现。 目录 最大流问题的定义Ford-F…...
C++从入门到入土(四)--日期类的实现
目录 前言 日期类的实现 日期的获取 日期的比较 const成员函数 日期的加减 日期的加等 日期的减等 日期的加减 日期的加加减减 日期的相减 流插入和提取的重载 友元 友元的特点 日期类代码 总结 前言 前面我们介绍了C中类和对象的相关知识和六个默认成员函数&…...

【香橙派系列教程】(七)香橙派下的Python3安装
【七】香橙派下的Python3安装 为接下来的Linux图像识别智能垃圾桶做准备。 图像处理使用京东SDK只支持pyhton和Java接口,目的是引入C语言的Python调用,感受大厂做的算法bug 此接口是人工智能接口,京东识别模型是通过训练后的模型,…...
贝叶斯优化算法(Bo)与门控循环单元(GRU)结合的预测模型(Bo-GRU)及其Python和MATLAB实现
### 背景 随着时间序列数据在各个领域(如金融、气象、医疗等)应用的日益广泛,如何准确地预测未来的数据点成为了一个重要的研究方向。长短期记忆网络(LSTM)和门控循环单元(GRU)作为深度学习模型…...

人工智能时代,程序员当如何保持核心竞争力?
目录 前言 一.AI辅助编程对程序员工作的影响 二.程序员应重点发展的核心能力 三.人机协作模式下的职业发展规划 结束语 前言 随着AIGC(如chatgpt、midjourney、claude等)大语言模型接二连三的涌现,AI辅助编程工具日益普及,程序…...

LMDrive 端到端闭环自动驾驶框架
LMDrive,一种新颖的语言引导的端到端闭环自动驾驶框架。LMDrive独特地处理和整合多模态传感器数据与自然语言指令,使车辆能够在现实的指令设置中与人类和导航软件进行交互。 LMDrive由两个主要部分组成: 1)一个视觉编码器&#x…...
P2045 方格取数加强版
Description 给定一个 n n n \times n nn 的矩阵,从左上角出发,可以往右或者往下走,每到达一个方格,就取走上面的数(取过后格子上的数会清零),一共要走 k k k 次,求取到的数之和…...
【Bigdata】OLAP的衡量标准
这是我父亲 日记里的文字 这是他的生命 留下留下来的散文诗 几十年后 我看着泪流不止 可我的父亲已经 老得像一个影子 🎵 许飞《父亲写的散文诗》 OLAP(联机分析处理)系统的衡量标准主要集中在以下几个方面:…...

关于DDOS攻击趋势及防护措施
随着互联网技术的飞速发展,网络安全问题日益成为企业不可忽视的重要议题。分布式拒绝服务(DDoS)攻击作为其中的典型代表,以其强大的破坏力和难以防范的特性,给企业的网络安全带来了巨大挑战。今天我们就来了解下当前DD…...
Apache Flink:一个开源流处理框架
文章目录 引言官网链接Flink 原理概述核心概念 基础使用环境搭建编写 Flink 程序注意事项 高级使用窗口操作状态后端复杂事件处理(CEP)与 Kafka 集成 优点结论 引言 Apache Flink 是一个开源流处理框架,专为高吞吐量、低延迟的实时数据处理设…...

Nginx 学习笔记
1. Nginx简介 Nginx 是一个高性能的Http和反向代理服务器。也是一个IMAP/POP3/SMTP等邮件代理服务器。 特点: 占有内存少并发能力强安装非常的简单配置文件非常简洁(还能够支持perl语法)Bug非常少启动特别容易,并且几乎可以做到…...

软甲测试定义和分类
软件测试定义 使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验他是否满足规定的需求或弄清预期结果与实际结果之间的差别 软件测试目的 为了发现程序存在的代码或业务逻辑错误 – 第一优先级发现错误为了检验产品是否符合用户需求 – 跟用户要求实…...

Vue 3+Vite+Eectron从入门到实战系列之(二)一Elementplus及VueRouter的配置
为了后续开发方便,在没有 UI 设计师配合的情况下,让我们的界面更加美观,我们使用 elementplus 组件库,并配置路由。 删除不需要的默认文件夹及文件,src 配置如下 实现效果 安装 elementplus,vue-router npm install element-plus --save npm install vue-router --save在…...

STL-list
1.list 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。 3. l…...
2024 7.29~8.4 周报
一、上周工作 2024 7.22~7.28周报-CSDN博客 二、本周计划 修改论文 三、完成情况 3.1 论文修改 3.1.1 摘要 问题:所写问题是一般性的深度网络问题(过拟合),并没有针对FWI的问题(边缘不清晰、深层不清晰、速度慢…...

随身助手271个可用api接口网站php源码(随身助手API)
源码简介: 随身助手API,本次更新了271个可用接口,现在开源给大家使用,无后门无加密,放心使用。 {“标题”:”看图猜成语接口”,”小标题”:”随身助手API”,”地址”:”tianyi/LookIdiom.php”,”状态”:”正常”} {…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...

高抗扰度汽车光耦合器的特性
晶台光电推出的125℃光耦合器系列产品(包括KL357NU、KL3H7U和KL817U),专为高温环境下的汽车应用设计,具备以下核心优势和技术特点: 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计,确保在…...