机器学习入门之监督学习

文章目录

  • 机器学习初步
    • 什么是机器学习
      • 机器学习的三个步骤
      • 为什么机器学习和编程不一样
    • 监督学习
      • 监督学习的形式化描述
      • 损失函数

机器学习初步

什么是机器学习

我们人类学习的过程就像是在理解一个知识并且能够运用这种知识,而理解知识过程本身就是一种改善提高自我的过程。这里面最重要的其实就是从过往的,已有的数据中,提取知识,并且能够运用

机器学习的三个步骤

在人类学习的过程中,例如学习将实物苹果和文字“苹果”做对应,我们通过观看苹果的图片或者实物,提取出共同的特征,例如都有类似红色的颜色,顶部和底部都有凹陷的窝,一般有梗,叶子是绿色的等等一系列特征,再将这些特征与苹果这两个文字联系起来,就完成了从实物到文字的这样一个映射(学习过程)

那么对于机器学习也是一样的,我们有特定输入,预期输出,处理函数

对于特定输入,其实就是苹果的图片或者实物,但是对于计算机而言,他是无法观看这些实物的影像的。因此我们考虑将这些影响转化为具有特征值的向量空间,例如使用灰度矩阵来表示图片

预期输出也就是我们最终学习到的“苹果”两个字,也就是学习之后的结果

而处理函数就是我们的大脑

每一个具体的输入称之为实例(instance),由特征向量(feature vector)构成,所有特征向量存在的空间称之为特征空间(feature space)

那我们对这个学习的过程进一步抽象,就分为三步

  1. 找到一系列函数来实现预期的功能
  2. 找到一系列评价标准来评判函数的好坏
  3. 如何找到性能最优的函数

那么对于监督学习来说,我们的模型都是在训练数据中学习,调整模型参数,然后在测试数据中进行预测验证

这里的训练数据中的输入和输出都是成对出现的,那么这时候对于训练数据就像老师一样,他知道正确的结果,在学习的过程中可以不断调整模型的参数达到学习的目的

对于不同的输入输出变量,我们也给机器学习的任务做了分类,例如输入输出都是连续的,就称之为回归(Regression),输出是有限个离散值,就称之为分类(Classification),输入输出都是变量序列,那么就称之为标注(Tagging)

为什么机器学习和编程不一样

机器学习是无需显示编程就能表现出学习能力的,但这并不是说他不需要编程,只是在逻辑上有所不同

传统的编程其实我们是把数据和代码同时交给了机器,而他只需要负责计算,就可以达到预期的结果

而机器学习则不同,我们给的是输入和预期结果,需要让机器自行总结规律

也就是说,机器学习的代码并不是完全固定的,而且这样学习还能处理更加多变,新鲜的样例,而程序本身并不用有多大改变

机器学习大致可以分为三类,监督学习、非监督学习、半监督学习

监督学习

监督学习(Supervised Learning)基本上都是分类,他从有标签的训练数据中学习模型,然后对给定的新数据贴标签

监督就是有个老师在训练阶段会告诉你答案,这样学习得出最后的模型

这样总的看上去机器就好像提取出共同点,也就是具备了泛化的能力

监督学习的形式化描述

监督学习是在训练集下进行训练模型,而训练集我们一般采用下面的公式进行表示

T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) … , ( x i , y i ) … ( x m , y m ) } T=\{(x_1,y_1),(x_2,y_2)\dots,(x_i,y_i)\dots(x_m,y_m)\} T={(x1,y1),(x2,y2),(xi,yi)(xm,ym)}

需要注意的是,这里的每一个x和y的二元组表示每一组输入和输出,而输入或者输出本身可能并不是单纯的一个数值,而是一个特征向量组,这里我们一般使用n维列向量来表示

有了数据集,接下来就是要进行训练,来调整模型参数,直到误差在我们可以容忍的范围内,就可以认为训练完成了

无论是分类问题还是回归问题,总归都是对已有的数据进行总结,然后预测未知

而回归更数学化的表达就是函数的拟合,我们构造一个函数使之能很好的拟合已知数据,并且能够较好的预测未知数据

这样我们也可以构建出一个函数模型

Y ≈ f ( X , β ) Y\approx f(X,\beta) Yf(X,β)

这里的X是输入,而β是参数,我们训练的目的就是找到这样一个参数β,使得每一个输入的X都能得到预期的Y

损失函数

那我们应该描述参数是否匹配呢,或者说预期结果和输出值的差距呢

那就需要定义损失函数(Loss Function)

常见的损失函数有如下四类

  1. 0-1损失函数
    L ( Y , f ( X ) ) = { 1 if  Y ≠ f ( X ) 0 if  Y = f ( X ) L(Y,f(X)) = \begin{cases} 1 & \text{if } Y \neq f(X) \\ 0 & \text{if } Y = f(X) \end{cases} L(Y,f(X))={10if Y=f(X)if Y=f(X)

  2. 绝对损失函数
    L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ L(Y,f(X))=|Y-f(X)| L(Y,f(X))=Yf(X)

  3. 平方损失函数
    L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2 L(Y,f(X))=(Y-f(X))^2 L(Y,f(X))=(Yf(X))2

  4. 对数损失函数

    L ( Y , P ( Y ∣ X ) ) = − log ⁡ P ( Y ∣ X ) L(Y,P(Y|X))=-\log P(Y|X) L(Y,P(YX))=logP(YX)

第三类损失函数,有时也会在前面加一个0.5的系数,主要是为了方便求导

第四类损失函数可以使用最大似然估计来求极值,简单说最大似然估计的意思就是找到一个参数能让预期结果出现的概率最大,具体内容可以参考其他文章或者概念,目前只需要了解即可

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

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

相关文章

硬件知识积累 DP 接口简单介绍以及 DP信号飞线到显示屏的问题

1. DP 接口的介绍 定义与起源: DP接口是由PC及芯片制造商联盟开发,并由视频电子标准协会(VESA)标准化的数字式视频接口标准。它的设计初衷是为了取代传统的VGA、DVI和FPD-Link(LVDS)接口,以满足…

QT-QTCreator环境配置

准备工作: 下载QT: 链接:https://pan.baidu.com/s/1prJcsC4DGqhKiXvLuPQFVA?pwd60b3 提取码:60b3下载WindowsKits: 链接:https://pan.baidu.com/s/1QNiS3HpbH5M5kXx5AhkqnQ?pwde2h8 提取码:e2h8安装的…

Java数组深度剖析:掌握数据结构的基石

引言 在编程世界中,数仅仅是一种数据类型,它是理解内存分配、多维数据处理以及性能优组像是构建复杂数据结构的基本积木。它们简洁、高效,是管理元素集的首选方式。在Java中,数组不化的关键。 这篇文章致力于深入探讨Java数组的各…

android studio项目实战——备忘录(附源码)

成果展示&#xff1a; 1.前期准备 &#xff08;1&#xff09;在配置文件中添加权限及启动页面顺序 ①展开工程&#xff0c;打开app下方的AndroidManifest.xml,添加权限&#xff0c;如下&#xff1a; <uses-permission android:name"android.permission.CAMERA"…

【二】电力系统规约IEC 104详解

电力系统规约IEC 104详解 概述 很早就准备梳理出一下电力系统规约系列的文章&#xff0c;因为自己在实践过程中发现这方面太难找了&#xff0c;网上的资料也都比较陈旧。我接触和使用IEC系列规约也有一段时间了&#xff0c;本着总结和分享的想法&#xff0c;我想推出这系列的文…

在线的调试器pythontutor,支持C/C++

1. 背景介绍 对于C语言的学习最复杂的可能无疑就是指针的&#xff0c;指针因其灵活、晦涩难懂等特点而出名&#xff0c;本文并不介绍利用gdb的角度去分析它&#xff0c;而是通过一个在线网站而分析&#xff1b; 2.C代码调试 3. C代码调试 4在线网站 https://pythontutor.com/…

【项目纪实】某国有航空公司人力资源系统诊断咨询项目

公司的人力资源管理问题一直都比较严重&#xff0c;比如人员冗余、员工工作积极性差等问题&#xff0c;虽然经过多次的管理尝试&#xff0c;存在的问题仍然没有缓解。华恒智信人力资源咨询公司的老师特别专业&#xff0c;帮我们系统、全面的诊断了人力资源管理上存在的问题&…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6.3--Cortex-A7寄存器介绍

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

Numerical Analysis(byRichard.L..Burden)【pdf高清英文原版】

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

HarmonyOS 4.0(鸿蒙开发)01 - 怎么学习鸿蒙引导篇

作为公司的全栈开发工程师 以及 未来的发展是有鸿蒙这个阶段的&#xff0c;以及本身具有这个技术栈由此后续会分享自己在实战中学习到的东西&#xff0c;碰到的bug都会分享出来&#xff0c;这是引导篇期待后续的更新 学习目标&#xff1a; 理解HarmonyOS操作系统的架构和开发…

目标检测算法YOLOv3简介

YOLOv3由Joseph Redmon等人于2018年提出&#xff0c;论文名为&#xff1a;《YOLOv3: An Incremental Improvement》&#xff0c;论文见&#xff1a;https://arxiv.org/pdf/1804.02767.pdf &#xff0c;项目网页&#xff1a;https://pjreddie.com/darknet/yolo/ 。YOLOv3是对YOL…

解决IDEA下springboot项目打包没有主清单属性

1.问题出现在SpringBoot学习中 , 运行maven打包后无法运行 报错为spring_boot01_Demo-0.0.1-SNAPSHOT.jar中没有主清单属性 SpringBoot版本为 2.6.13 Java 版本用的8 解决方法 1.执行clean 删除之前的打包 2.进行打包规范设置 2.1 3.进行问题解决 (借鉴了阿里开发社区) 使用…

利用PDAL2.7.1 实现点云滤波

利用PDAL2.7.1 实现点云滤波 本文介绍利用PDAL实现点云滤波方法&#xff0c;包含pipeline命令行运行、C代码两种方法&#xff0c;C代码分别介绍对点云文件进行滤波、点云全部在内存中进行滤波的pdal两种调用方法。并简单探究pdal的设计结构。 目录 1 pipeline命令调用方法2 文…

R语言4版本安装mvstats(纯新手)

首先下载mvstats.R文件 下载mvstats.R文件点此链接&#xff1a;https://download.csdn.net/download/m0_62110645/89251535 第一种方法 找到mvstats.R的文件安装位置&#xff08;R语言的工作路径&#xff09; getwd() 将mvstats.R保存到工作路径 在R中输入命令 source(&qu…

飞腾D2000+X100 TYPE6全国产核心板

飞腾D2000X100 TYPE6核心板 产品概述 飞腾D2000X100 TYPE6核心板为增强型自主控制器核心板&#xff0c;其核心芯片CPU采用飞腾D2000/8核工业版CPU、飞腾桥片X100、双通道DDR4L插槽、PHY芯片等。 产品特点 l 基于飞腾D2000X100桥片 l 丰富的PCIE扩展资源&#xff0c;一路PCIE…

C++入门系列-函数重载

&#x1f308;个人主页&#xff1a; 羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 函数重载 自然语言当中&#xff0c;一个词可以有多重含义&#xff0c;人们可以通过上下文来判断该词真实的含义&#xff0c;即该词被重载了。 函数重载的概念 函数重载&#x…

A4的PDF按A3打印

先用办公软件打开&#xff0c;比如WPS。 选择打印-属性。 纸张选A3&#xff0c;如果是双面打印&#xff0c;选短边装订&#xff0c;然后在版面-页面排版-每张页数&#xff08;N合1&#xff09;选2。 不同打印机的具体配置可能不一样&#xff0c;但大体都是这个套路。

rocketmq dashboard控制台中topic状态无法展示

现象 在使用rocketmq控制台查看topic状态和订阅状态时&#xff0c;出现错误和没有信息的情况。 原因 rocketmq控制台版本问题&#xff0c;最新版本为1.0.1&#xff0c;支持rocketmq5版本&#xff0c;如果使用rocketmq4版本的服务无法兼容对应的数据。同理1.0.0版本也无法兼容ro…

中兴ZXV10 B860AV2.1机顶盒刷机

移动的电视盒子如果不续费&#xff0c;连桌面都进不去&#xff0c;趁着五一有空把系统刷了。整体上比较顺利。 注意这个盒子只有两个螺丝&#xff0c;盒子上已经标识&#xff0c;如上图左上角和右下角。盒子里面有卡扣&#xff0c;卸掉螺丝直接扣是很难打开的&#xff0c;需要用…

【CLion】clion无法加载或找不到cmakekists文件

一、问题表象 最近工作中&#xff0c;在git pull远程仓库最新版本程序后&#xff0c;平时打开CLion自动加载的工程CMakeLists文件突然失效&#xff08;显示找不到可编译的文件&#xff09;&#xff0c;无法debug程序。 二、原因分析 基于平时的编码经验和之前git pull也出现…