1 Supervised Machine Learning Regression and Classification

文章目录

  • Week1
    • OverView
    • Supervised Learning
    • Unsupervised Learning
    • Linear Regression Model
    • Cost function
    • Gradient Descent
  • Week2
    • Muliple Feature
    • Vectorization
    • Gradient Descent for Multiple Regression
    • Feature Scaling
    • Gradient Descent
    • Feature Engineering
    • Polynomial Regression
  • Week3

本系列参考视频:吴恩达的machine-learing 可去coursera官网查看
链接
然后就是比较偏向的是个人笔记,具体就是个人的理解能力以及复盘能力有所差异,这边仅当做个参考,做个笔记式的学习。

这边有看到有别的up进行搬运,这边就也一并粘贴出来:
链接

Week1

OverView

首先对于前三节P1,P2,P3
个人觉得不甚重要,主要介绍的就是关于机器学习的工作,应用,等一系列用途。这比较平淡,就没什么重点。

而我总结一下就是:当你编程的时候,你并不知道如何去定义一个编程思想的时候,你所用的就可以是机器学习,比如说,你想编程一个程序,让这个程序可以识别猫或者狗,这对于你纯编程而言,你并不知道如何去做,因为一张图片实际上到编程中,就是一堆的数字,像素点构成,而你不知道他们之间满足什么条件,他们是猫,他们之间满足什么条件,他们是狗,这是非常难的,用传统的算法方法进行识别,但这用机器学习就可以做到,这就是机器学习

Supervised Learning

什么是监督学习呢?
在他的ppt当中他是这么说的:
在这里插入图片描述
对于监督学习来说,他是有准确答案的,我们期望我们输入x,他就可以固定的输出这个y,而我们想要让机器学习的就是他们之间的这种mapping 映射关系,从而我们输入x,他能通过他学到的mapping关系进行映射出对应的y,替我们人类做出抉择。

而相同的对于监督学习来说,他一般是存在两种类型的任务:

  1. Regression
    在这里插入图片描述

就比如说预测房价的这个例子,我们给出一堆的x,也就是已知数据,然后让机器去学习其中的规律,最后比如说得到一条拟合曲线,也就是图中的蓝色线,可能是直线,也可能是曲线,看机器如何去识别出以及人类的算法采用的模型二者相关产生的拟合的曲线,然后我们在训练之后,我们仅仅需要输入x,就能得到对应的预测y-hat。值得关注的是关于回归问题,一般回归的值是一个连续值。
2. Classification
在这里插入图片描述
而对于分类问题而言,一般我们是让他通过分类得到一个值,而这个值一般都是离散值,比如0,1,2这样子的,并且每一个sparse都对应代表一个类别,或者输出一个概率值。

而我们想要做到的事情就是,我们还是想要让其学习到两种分类的边界的线,让我们可以明确分类,注意这个和聚类问题的区别,这边的分类是固定选项的,我们希望将其分成我们所固定好的label。
在这里插入图片描述
小的总结:
在这里插入图片描述
对于监督学习,实际上就是学习的data是一个有明确答案的data,然后一般分为regression和classification两类,前者预测出来的是一个具体的number,后者则是categories。

Unsupervised Learning

在这里插入图片描述
无监督学习和监督学习相比之下最为重要的差别就是无监督学习她学习的是没有标签 也就是文中的unlabeled的数据,或者就是说只有输入x,但是没有一个准确的y。

而对于无监督学习来说,它比较常见的任务如下:

  1. clustering
    聚类问题,用处一般挺多的,也是很流行的一种方式,他和分类问题其实很像,但是差别就是对于分类问题我们知道需要分成什么类,比如分成猫,分成狗,但是对于聚类来说,我们就不能知道到底需要分成什么类别,举个例子,我们希望根据网站用户的购买商品的情况,将用户划分成10类,在分类之前,我们并不知道这一类别的具体的属性,没办法做出label,也就无从训练,只能根据机器自己去学习,自己去分类。
    在这里插入图片描述
  2. dimensionality reduction
    降维 这边先不进行解释,之后特征工程处自然会懂得。
  3. anomaly detection
    异常检测,这实际上和二分类也很像,也需要区分,区别实际上和聚类问题差不多,需要知道的关键的区别就是:在训练的时候的数据是否存在label,那么就有人说了,那我们没有标签,那如何去判断到底是不是有异常呢?比较经典的做法其实就是按分位值来进行判断,这个就等待后续的解释,这边先略,有兴趣也可以去查找一下。

Linear Regression Model

线性回归模型或者线性分类模型,实际上就是我们的一种算法,我们认为我们的数据之间满足一种正相关的简单关系,线性关系,(但事实上不可能这么简单的,方便理解),然后我们通过数据去不断调整y = wx + b中w和b的值,最后得到一个好的w和b的值。

而对于简单的线性回归模型来说,数据一般采用如下图右侧的表格进行展示(当然可能有更多个特征,但在这里先不进行讨论。)
在这里插入图片描述
我们的任务或者说我们的目标就是根据右侧的表格中的数据,最后得出这条拟合曲线。

在这里插入图片描述
而对于这张图的理解就是,实际上是为了引出目标函数(代价函数)的相关知识,这边先介绍一点,我们训练或者初始化出来的一条y=wx+b这条函数(直线),我们拿去带入x,预测对应的y,我们称这个y叫做y-hat(estimated估值),而我们所指的y就是对应x的真实值,taget或者真实的y。

Cost function

现在我们已经知道了y=wx+b,但对于w和b的值我们完全是随机出来的,或者我们仅能随手画出一条较为可能拟合的曲线,这样听起来很不机器,换句话来说就是我们缺少一个评价标准,这个评价标准来评价这条拟合曲线的好坏。

这就引出了cost function 这一个函数来评估曲线的好坏:
在这里插入图片描述
也就是上文中的J(也称作loss损失函数),m的作用是避免点越多损失越大,所以除掉样本总数,2是方便运算用的(之后求梯度方便),y-hat就是预测值,y就是准确值。

而我们做的所有的目标就是为了利用数据集data求取在数据集当中使J最小的w和b,如此之后,在我们输入x之后进行预测的y-hat实际上就会使最为准确的值。
在这里插入图片描述

Gradient Descent

现在的问题就是有了评价标准J,之后我们应该如何通过J这个评价函数(目标函数,损失函数)去反向更新w和b,让新的w和b会使得J这个函数更小呢?现在提出的梯度下降就是来解决这个问题的。

我们来看一个比较生活化的例子:
在这里插入图片描述
对于这个图来说他的高度代表的就是J,损失,他的x和y轴代表的就是参数w和b,那么假设我们初始化的w和b让我们站在一个较高的位置,也就是那个小人所站在的位置,那么此时我们该怎么下山呢?沿着梯度下降(梯度也就是沿着我们向四周360看一圈,沿着最陡的方向去走,这样子下山的速度是最快的)这也就是我们下山的策略,也是我们梯度下降的原理。

此时的公式自然就是:
在这里插入图片描述
对于右半部分的求偏导就是梯度的具体体现,alpha就是学习率。

而至于代码上的实现:
在这里插入图片描述
需要注意的是,我们代码上的实现需要做到w和b的同时更新,不能像右边的式子,w先更新完后,我们拿着更新之后的w去更新b,这虽然也有效果,但明显不是我们想要的,追求完美的我们肯定不会这么做,hh。

而对于梯度下降更为数学的理解:
在这里插入图片描述
当梯度>0的时候,w = w- alpha乘一个大于0的数,所以他向小走,自然更接近谷底,当他<0的时候相反,也是朝谷底走,最后自然会落到谷底。(而假设我们的alpha是固定的,那么他的下降你会发现他的梯度是越来越小的,到达最底梯度为0,也就是此时他也就停下脚步,这时候你就会发现此后不论怎么走,他都是w = w - alpha*0 也就是w=w 做到了真正的停下脚步),至于alpha我们可以这么认为,alpha就是用来控制w变化的速率的,跳的快或者慢,当很大的时候,他可能跳不到谷底,当很小的时候他可能动的太慢,效果太差,这就算一个超参数,需要人为的去调整,当然之后也会有一些别的方法去做到优化,这边不细说。
在这里插入图片描述

但是有时候我们会发现其实我们落到的是一个局部最低点,并不是全局最低点,梯度下降只能做到帮助我们落到局部最优,至于是不是全局最优不一定,这取决于初始化,当然后面也会有相关的方法去优化,这边也不细说,重点是关于局部最优的理解:
在这里插入图片描述
就比如上图中,我们落到了黄点处,但此时w = w - alpha*梯度 此时梯度已经为0了,所以w已经不动了,但是真实的最低点时左边的那个最低点,这实际上也就是梯度下降的一个问题所在,之后adam什么的方法也是重点在解决这个问题,先不用了解。

然后就是现在还要了解的一点就是batch
在这里插入图片描述
实际上机器学习是拿一个batch,一个batch的数据来进行训练的,并不是一个数据一个数据来进行的训练,因为如果一个数据一个数据来,这实际上就很可能会受到极端数据的影响。

Week2

Muliple Feature

实际上我们的生活中不可能存在仅有一个特征的东西,一般是多种特征来共同决定,在之前的例子当中我们y = w * x + b ,但现在我们需要进行修改一下,比如说之前的预测住房的价格的我们选取的只有和size相关,但实际上他和很多因素相关:
在这里插入图片描述
这也就是行向量 我们最后的price = 多个x共同决定
在这里插入图片描述
画成线性代数,用dot product(点乘)来表示的话就是如下:
在这里插入图片描述
而对于这种多x的线性模型我们称之为:multiple linear regression

Vectorization

使用numpy进行计算的话:实际上很简单,直接使用np.dot()接口即可
在这里插入图片描述
而这个相比于前面的计算,他完成了并行计算,他比正常的算法流程来得更快,具体的计算原理这边不细说,只需要关注的是,我们在深度学习,机器学习当中一般使用的都是类numpy的矩阵计算库,不论是torch还是tf的矩阵表示,这边的计算方式都是使用cpu或gpu的计算运算。

Gradient Descent for Multiple Regression

其实也很简单:
在这里插入图片描述
这边就放一张图,不细说,实际上和之前的算法一样的流程,只是多求导几轮。

Feature Scaling

这边其实可以参照我的相关的引申介绍:链接

特征缩放是为了做到在一些情况下多个特征,但是其值的差距过大引起的某些维度的更新过慢的情况。

简单举个例子:
在这里插入图片描述
还是对于之前的那个预测房价的例子,x1是面积,x2是bedrooms的数量,我们此时会发现在整个数据集当中,我们的每一次训练x1的值是非常的大的,x2的值则是相对非常的小的,这样子会变成什么情况呢?

首先我们知道对于w的更新首先也取决于x的值:
在这里插入图片描述
在某一个w更新的过快,某一个w更新的太慢,最后的效果见下:
在这里插入图片描述
实际上就会让较大的那一个在真实点疯狂抖动,这是很不利于梯度下降的。

于是就诞生了特征缩放这一个概念:
比较常用的特征缩放就是归一化(mean normalization/maxmin normalization)和标准化(z-score)

在这里插入图片描述
在这里插入图片描述
而这两种方法之下,其实最常用的还是下面的这个标准化,第一种方法将数据缩放到0-1之间但易受到异常点的影响,第二种方法则还好,他把数据缩放到-1到1之间。

而对于什么时候需要进行特征缩放,对于数据本身就已经在很小的范围内,我们没必要进行特征缩放,但当数据范围很大或者很小,或者数据本身就已经很大的时候对于数据进行缩放。
在这里插入图片描述

Gradient Descent

在多次的迭代中,j会随着迭代次数的增加会变得越来越小,接近稳定,这是非常理想的情况下,当我们调整学习率,或者初始化数据不同的时候一般会变成后面的图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实际上就是J会不断变化或者就是变化的极慢,原因可能就是我们选择的alpha太大或者太小。

Feature Engineering

在正常情况下,我们采集的数据只有frontage和deepth,但是我们认为price取决于面积,于是我们可以自己产生一个size,作为x3,进行输入,这一部分其实比较取决于我们对于业务的理解,我们人类的经验。
在这里插入图片描述
有人此时会问,为什么frontage和depth不是已经存在吗,他俩不就能代表size?实际上确实可以,但是我们直接写一个size,实际上就是做到让他更好的去学习出size,而非让他自己猜出size,至于此时的frontage为什么存在,我们可以这么理解,此时我们考虑的就是单纯frontage对于price的增益效果。

Polynomial Regression

多项式的回归问题,实际上的分析中,问题一般都不是简单的线性问题,我们在机器学习当中一般会采用这种定义多项式去模拟,但现在证明这个方式已经快要过时了,不太适合于深度学习,这边深度学习都采用多层的线性,这边也就先跳过,只给出相关的理解,至于梯度的计算就留给你们自己了。
在这里插入图片描述

Week3

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# 使用 RSA 加密算法生成证书签名产生“The system cannot find the file specified”异常

使用 C# 中 RSA&#xff08;System.Security.Cryptography.RSA&#xff09; 加密算法生成证书签名进行身份验证&#xff0c;在 VS2022 开发工具本地运行应用程序一切正常。 但将应用程序部署到远程服务器&#xff08;如&#xff1a;Azure App Services&#xff09;&#xff0c…

【数据结构】——单链表(增删查改)

目录 前言&#xff1a; 一&#xff1a;单链表的特点 ​编辑 二&#xff1a;单链表实现 单链表定义 2.1申请节点&#xff08;初始化&#xff09; 2.2单链表尾插 ​编辑 2.3单链表打印 2.4单链表头插 2.5单链表尾删 2.6单链表头删 2.7单链表查找 2.8在目标位置后面插入…

正点原子嵌入式linux驱动开发——Linux ADC驱动

在之前的笔记中&#xff0c;学习了如何给ICM20608编写IIO驱动&#xff0c;ICM20608本质就是ADC&#xff0c;因此纯粹的ADC驱动也是IIO驱动框架的。本章就学习一下如何使用STM32MP1内部的ADC&#xff0c;并且在学习巩固一下IIO驱动。 ADC简介 ADC ADC&#xff0c;Analog to D…

做一个springboot用户信息模块

目录 用户信息部分 1、获取用户详细信息 前言 代码分析 代码实现 测试 2、更新用户信息 前言 代码实现 测试 3、更新用户头像 前言 代码实现 测试 4、更新用户密码 前言 代码实现 测试 用户信息部分 1、获取用户详细信息 前言 承接上一篇博客登录注册功能…

找工作去哪个网站比较好

吉鹿力招聘网是一个专注于互联网岗位求职招聘的网站&#xff0c;提供海量的互联网人才储备。它主要覆盖了互联网类招聘&#xff0c;包括技术、产品、设计、运营、市场、销售等。吉鹿力招聘网的特点是用户量大&#xff0c;需求旺盛。如果你希望找工作&#xff0c;吉鹿力招聘网是…

[HCTF 2018]admin 1(四种解法!)

题目环境&#xff1a; 有登录和注册两个按钮 先注册一个admin用户 注册admin用户 显示admin用户已经被注册了 好&#xff0c;这就简单了&#xff0c;admin用户存在&#xff0c;但是不清楚admin用户的密码 尝试以下弱口令 第一种解法&#xff1a;密码爆破-尝试弱口令 进去login登…

基于selenium的pyse自动化测试框架

介绍&#xff1a; pyse基于selenium&#xff08;webdriver&#xff09;进行了简单的二次封装&#xff0c;比selenium所提供的方法操作更简洁。 特点&#xff1a; 默认使用CSS定位&#xff0c;同时支持多种定位方法&#xff08;id\name\class\link_text\xpath\css&#xff09…

Python+unittest+requests接口自动化测试框架搭建 完整的框架搭建过程

首先配置好开发环境&#xff0c;下载安装Python并下载安装pycharm&#xff0c;在pycharm中创建项目功能目录。如果不会的可以百度Google一下&#xff0c;该内容网上的讲解还是比较多比较全的&#xff01; 大家可以先简单了解下该项目的目录结构介绍&#xff0c;后面会针对每个文…

第 19 章 网络编程

网络可以使不同物理位置上的计算机达到资源共享和通信的目的&#xff0c;在Java中也提供了专门的网络开发程序包--java.net&#xff0c;以方便开发者进行网络程序的开发&#xff0c;本章将讲解TCP与UDP程序开发 19.1 网络编程简介 将地理位置不同的、具有独立功能的多台计算机…

uview的u-calendar日历组件,当设置了 minDate配置项后,会导致第一次打开日历弹窗,不会精准的滚动到选中的日期(设置了默认日期都没用)

发现需要给month.vue文件里的getMonth方法加一个延时器&#xff0c;猜测是因为设置最小日期后&#xff0c;日历没渲染完毕的时候就已经开始获取节点信息了

C# Onnx Yolov8 Detect 印章 指纹捺印 检测

应用场景 检测文件中的印章和指纹捺印&#xff0c;用于判断文件是否合规&#xff08;是否盖章&#xff0c;是否按印&#xff09; 效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.…

Makefile应用

Makefile实例 在c.c里面&#xff0c;包含一个头文件c.h&#xff0c;在c.h里面定义一个宏&#xff0c;把这个宏打印出来。 c.c&#xff1a; #include <stdio.h> #include <c.h>void func_c() {printf("This is C %d\n", C); }c.h #define C 1然后上传…

跨国企业如何选择安全靠谱的跨国传输文件软件?

随着全球化的不断发展&#xff0c;跨国企业之间的合作变得越来越频繁。而在这种合作中&#xff0c;如何安全、可靠地将文件传输给合作伙伴或客户&#xff0c;成为了跨国企业必须面对的问题。 然而&#xff0c;跨国文件传输并不是一件容易的事情&#xff0c;由于网络物理条件的…

Mysql-库的操作

1.创建数据库 CREATE DATABASE [IF NOT EXISTS] name name后可以加 CHARACTER SET 或者是 charsetname COLLATE collation_name &#xff08;mysql数据库不区分大小写&#xff09; 说明&#xff1a; name表示想创建的库的名字大写的表示关键字 [] 是可选项 CHARACTER SET…

Linux调试器-gdb使用

程序的开发过程 debug和release ​ 程序的发布版本有debug和release版本&#xff0c;debug就是可被调试的&#xff08;debug环境下程序可以进行调试&#xff09;&#xff0c;release是发行版本&#xff0c;测试人员和用户使用的版本。Linux下我们编译代码时默认是release版本&…

苍穹外卖项目学习日记(13)

苍穹外卖项目学习日记(13) day10 Spring task cron表达式 导入spring task坐标&#xff08;spring-context已经存在&#xff09;&#xff0c;添加EnableScheduling注解 订单状态定时处理 新建task包&#xff0c;并且创建OrderTask定时类&#xff0c;添加处理超时订单和处…

网络运维Day12

文章目录 yum概述部署阿里镜像源yum基本使用 NFS网络文件系统NFS共享概述部署NFS服务端部署NFS客户端 Tomcat服务实验拓扑安装Tomcat启动服务客户端&#xff08;真机&#xff09;浏览访问页面测试 Tomcat虚拟主机NGINX服务web服务器对比NGINX简介实验拓扑虚拟机A源码编译安装NG…

ESP32-DHT11温湿度数据上传MQTT服务器

ESP32-DHT11温湿度数据上传MQTT服务器 简介ESP32DHT11 实验实验说明接线MQTT服务器建立连接添加订阅 ESP32驱动DHT11ESP32向MQTT服务器发送数据上传温湿度数据实验结果 简介 ESP32 点击图片购买 ESP32 系列模组集成 Wi-Fi、传统蓝牙和低功耗蓝牙功能&#xff0c;具有广泛的用途…

centos7系统离线安装tcpdump抓包软件、使用教程

tcpdump 是Linux系统下的一个强大的命令&#xff0c;可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤&#xff0c;并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 本教程对tcpdump命令使用进行讲解说明&#xff0c;通…

对话金山云高级副总裁刘涛 | 做大模型公司的助力者

“ AIGC的应用化阶段将很快到来&#xff1b;AGI&#xff0c;已步入助手阶段。” 口述 | 刘涛 整理 | 梦婕&云舒 出品&#xff5c;极新 在10月的最后一天&#xff0c;极新有幸采访到了金山云高级副总裁刘涛。我们深入探讨了“云计算逐鹿 AIGC”的话题。作为中国公有云互…