机器学习入门——机器学习基础概念

article/2025/10/14 12:46:57

引言

本文介绍机器学习的一些基本概念。包括机器学习的主要任务,机器学习的分类等。


  • 下一篇:机器学习入门——numpy与matplotlib的使用简介

用到的数据

鸢尾花(IRIS)是比较常见的在我们学习机器学习时用到的数据。数据来源: http://archive.ics.uci.edu/ml/datasets/Iris

iris以鸢尾花的特征作为数据来源,常用在分类操作中。该数据集由3种不同类型的鸢尾花的各50个样本数据构成。其中的一个种类与另外两个种类是线性可分离的,后两个种类是非线性可分离的。
该数据集包含了4个属性:

  • Sepal.Length(花萼长度),单位是cm;
  • Sepal.Width(花萼宽度),单位是cm;
  • Petal.Length(花瓣长度),单位是cm;
  • Petal.Width(花瓣宽度),单位是cm;

在这里插入图片描述
种类:Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),以及Iris Virginica(维吉尼亚鸢尾)。

这里我们抽出三份数据,最后一列是所属种类。一般我们会对这个类别进行数值化,这样好在机器学习中进行处理。
在这里插入图片描述
接下来介绍一些常见概念。

  • 数据整体叫数据集(data set)
  • 其中每一份(写成表格形式的话就是每一行)数据称为一个样本(sample)
  • 除了最后一列(一般所属类别都放到最后一列),每一列都叫样本的一个特征(feature,有时也叫属性)
  • 最后一列,称为标记(label)

在这里插入图片描述

我们把除标记列的特征都放到一个矩阵 X X X中,每一份数据对应矩阵的一行,每个特征对应矩阵的一列。

标记列通常用 y y y表示,这是一个向量,每一维度表示某份数据对应的类别。在数学上大写字母表示矩阵,小写字母表示向量。

i i i个样本的标记写作 y ( i ) y^{(i)} y(i),其中的括号可加可不加。

在这里插入图片描述

  • 对于数据而言,萼片长度、萼片宽度等都叫特征;
  • 每一行本身也组成了一个向量,通常叫特征向量 X i X^i Xi

通常向量都表示为列向量的形式。

因此矩阵 X X X也可以表示为:

在这里插入图片描述

我们抽出这份数据的前两个特征(这样可以在直角坐标系中画出这些点):

在这里插入图片描述
萼片长度作为横轴,萼片宽度作为纵轴。

每个样本都是这些特征所组成的空间中的一个点,这个空间我们叫称为特征空间(feature space)

分类任务本质就是在特征空间上进行切分,以区分不同的类别。

在这里插入图片描述
比如我们能在这个空间上画一条直线将这两个类别切分开来。切分之后,如果有了一个新的未知数据点,它出现在红线的上分,那么我们就可以说它属于红点类别。

这里我们用的是直线切分,真正在机器学习的时候我们也可以用曲线进行切分。

这里我们虽然用二维平面展示切分,其实在高维空间也是同理的。比如在三维空间,你可以想象是用平面去切分。

这里要注意的是,特征很多情况下是很抽象的,也就是人类不好理解。以手写数字识别为例
在这里插入图片描述
这是个数字5,是28*28的图像,在图像中就由一个个像素点构成的。最简单的方式就是把每个像素点都看成是一个特征。

也就是说每个图像有784个特征。

机器学习的主要任务

主要有两类:分类和回归。

分类

分类任务有很多,比如分辨一张图片里面的动物是猫还是狗。

在这里插入图片描述
或者是手写数字识别。

在这里插入图片描述

分类任务中根据要分类的类别数量可分为 二分类任务和多分类任务。

上面的分类猫狗就是二分类。

二分类任务看起来简单,但是生活中还是很常见的。比如判断邮件是否为垃圾邮件;银行判断发给客户信用卡有无风险。

而手写数字识别,要识别10个数字,属于多分类任务。

其实可以把很多复杂的问题转换为多分类任务问题。

在这里插入图片描述
比如训练机器玩2048这款游戏,给定现在的盘面,只需要机器判断上移、下移、左移、右移即可。

围棋也可以转换为多分类任务;无人驾驶可以想想也可以转换为分类任务,无非就是控制方向角度,油门。刹车。

但这里只是说可以解决这些问题,但不一定是接近这些问题的最佳方法。

有些算法只支持完成二分类的任务,但是多分类的任务可以转换成二分类的任务。

就是说通过转换,只支持二分类任务的算法通过转换可以变成支持多分类。

还有些算法本身支持多分类任务。

现在前沿的还有一种更高级的分类任务,可以把一张图片分到多个类别中。

在这里插入图片描述

比如这张图片,可以分类到女人、白色裙子、网球拍等等。综合这些信息,我们可以得到这张图片的语义。可以知道这张图片描述了一个什么样的场景。比如我们上面的类别可知,大概就是说一个穿白色裙子的女人在打网球。

回归

上面介绍的都是分类任务,和我们介绍的数据是相对应。还有一种数据是这样的。

在这里插入图片描述

前面四个列是这份数据的特征,最后一列是这份数据的标签,是个价格。我们可以猜到这个任务需要预测房屋的价格。

而价格它不能简单的分为几个类别。毕竟如果你想卖房子,当然是想知道确切的数字。

对于这种连续数值的问题,就是回归任务要解决的问题。
回归任务的结果是一个连续数值,而不是一个类别。

回归任务也有很多常见的场景:

  • 房屋价格
  • 市场分析
  • 学生成绩
  • 股票价格

对于回归问题来说:

  • 有些算法只能解决回归问题
  • 有些算法只能解决分类问题
  • 还有一些算法既能解决回归问题,又能解决分类问题(比如SVM)

还要注意的是,在某些情况下,回归任务可以简化为分类任务。

在这里插入图片描述

还是以无人驾驶为例,方向盘转动的角度这是一个连续的数值,上面在分类任务中,我们将它类别话,也就是将每一度看作一个类别。这样一来,我们将回归任务简化为分类任务。

还有在成绩预测中,现在很多学校都不给出具体成绩,只给出 A + , A , A − A^+,A,A^- A+,A,A等等这种,这里也是回归任务简化为分类任务的一个例子。

在这里插入图片描述

在机器学习的流程中,我们通过将训练数据喂给机器学习算法,可以学得一个模型 f ( x ) f(x) f(x),学好模型后,给定一个新的样例 x x x,输入到这个模型中,可以得到一个输出。

我们根据输出结果是否是连续的,可以分为回归和分类。

我们说机器学习能解决分类问题和回归问题,更加具体的说法应该是,监督学习能解决这两个问题。

机器学习还可以解决其他问题。

从解决问题的角度分类,机器学习可以解决分类问题和回归问题。如果从机器学习算法本身,整体上可以将机器学习算法分为监督学习、非监督学习、半监督学习以及增强学习。

机器学习算分分类

监督学习

训练数据有标记。

在这里插入图片描述

在区分猫狗任务中,仅仅给包含猫狗的照片是不够的,还是告诉机器哪些是狗,哪些是猫。

在这里插入图片描述
手写数字识别中也一样了,每份训练样本都会有对应的真实数字标记。

我们要介绍的监督学习算法主要有:

  • K近邻
  • 线性回归于多项式回归
  • 逻辑回归
  • SVM
  • 决策树和随机森林

非监督学习

训练数据本身无标记。

在这里插入图片描述

非监督学习可以通过一定的方法将上面的样本进行归类。
它的意义是可以对没有标记的数据进行分类-聚类分析:
在这里插入图片描述

非监督学习还有一个重要的作用是可以对数据进行降维处理。

主要包含两部分:

  • 特征提取:信用卡的信用评级和人的胖瘦无关?(如果确定无关,就可以把胖瘦这个特征扔掉)
  • 特征压缩:PCA

对数据降维意义之一是方便可视化。

在这里插入图片描述

比如把高维数据降维二维就可以在平面上画出来。

非监督学习还可以进行异常检测。

在这里插入图片描述

从这个例子可以看出来,这两个红点离蓝点非常的远,如果它们都是一类数据的话,这两个红点可能是异常数据。去除异常数据能让模型的泛化能力更好。

半监督学习

一部分数据有标记,另一部分数据没有。

其实这种情况在生活中很常见,比如对于某种领域,我们可以请领域专家人工标记少部分数据,对于剩下的大量数据都是没有标记的,因为人工标记成本太大;或者是各种原因产生的标记缺失 。

通常都先使用无监督学习手段对数据处理,之后使用监督学习手段做模型的训练和预测。

增强学习

根据周围环境的情况,采取行动,根据采取行动的结果,学习行动的方式叫增强学习。

在这里插入图片描述
事实上AlphaGo就是通过增强学习来训练的。
在这里插入图片描述

像无人驾驶其实也是通过增强学习来实现的。

机器学习的其他分类

批量学习与在线学习

我们先来看下**批量学习(也叫离线学习)**的概念。

在这里插入图片描述

我们之前介绍的那些算法,如果没有特殊处理的话,都可以采用批量学习的方式。

在我们通过大量资料训练好一个模型后,然后就可以开始应用了,现在可以拿新的数据来进行预测,此时模型本身不会发生变化了。

虽然模型上线后可能会遇到大量新的数据,但是这些数据不会用来优化我们的模型了。这种学习方式就叫批量学习。

它的优点是简单。缺点是无法适应环境的变化。

以垃圾邮件为例,随着时间的推移垃圾邮件的形式也是日新月异的,可能仅能训练的垃圾邮件分类模型能很好工作,第二年遇到新的形式,效果就不好了。

对于垃圾邮件这个例子,解决方法可以是定时重新学习。比如每隔三个月重新学习一次。这个方法的缺点是每次重新批量学习,运算量巨大。在某些环境变化非常快的情况下,甚至是不可能的。

接下来看下在线学习

在这里插入图片描述

在线学习的流程和离线学习是一样的,区别就在于对于输入样例进入模型得到预期结果后,这个输入样例不会浪费掉,我们拿到这个输入样例的正确结果后就可以迭代进我们的算法,从而改进我们的模型。

比如预测下一分钟的股价,过了一分钟后就可以知道正确结果,我们可以拿这个正确结果来改进我们的模型。

因此整个过程叫在线学习。

在线学习的优点是可以及时反映新的环境变化,但是新的数据(异常数据)可能带来不好的变化,从而使得模型的表现反而降低。对于这个问题的解决方法是加强对数据质量的监控。 比如可以利用非监督学习的异常数据监测来排除异常数据。

在线学习也适用于数据量巨大,完全无法批量学习的环境。

参数学习与非参数学习

从另外一个维度可以将学习算法分为参数学习与非参数学习。
在这里插入图片描述

假设横坐标是房屋的面积,纵坐标是房屋的价格,基于这些数据点,我们可以假设房屋的价格是房屋面积的一个线性关系,如 f ( x ) = a ⋅ x + b f(x) = a \cdot x + b f(x)=ax+b

基于这样的参数学习特点,就叫参数学习。一旦学到了参数,就不再需要原有的数据集。

那非参数学习呢,它不对模型进行过多假设。通常训练时的数据集也要参与预测的过程。这里要强调的是非参数学习不等于没有参数。

好了机器学习基础概念就介绍到这里,下篇文章会介绍下常用的工具。

参考

1.Python3入门机器学习


http://chatgpt.dhexx.cn/article/Or6aoL5h.shtml

相关文章

机器学习的数学基础

一、概述 我们知道,机器学习的特点就是:以计算机为工具和平台,以数据为研究对象,以学习方法为中心;是概率论、线性代数、数值计算、信息论、最优化理论和计算机科学等多个领域的交叉学科。所以本文就先介绍一下机器学…

机器学习基础环境部署 | 机器学习系列

目录 前言 Anaconda安装 使用conda配置python3.6环境 Spyder配置与使用 安装PyTorch 总结 前言 本文主要是分享一下机器学习初期,基本的环境搭建。也适用于其他python工程化项目环境搭建。都差不多。 Anaconda安装 anaconda官方链接:Anaconda | T…

机器学习基础(Machine Learning,ML)

什么是机器学习 机器学习是人工智能的一个子集,目前已经发展出许多有用的方法,比如支持向量机,回归,决策树,随机森林,强化方法,集成学习,深度学习等,一定程度上可以帮助人…

机器学习基础

一、机器学习概述 1.1 人工智能概述 1.人工智能起源? 图灵测试、达特茅斯会议 2.人工智能的3个阶段 1980年代是正式形成期 1990-2010年代是蓬勃发展期 2012年之后是深度学习期 3.人工智能、机器学习和深度学习之间的关系 机器学习是人工智能实现的一个途径; 深度学…

机器学习基础知识

文章目录 概述一、机器学习分类1.1 主要任务1.2 分类方式1.3 监督学习1.3.1 判别式模型1.3.2 生成式模型 1.4 无监督学习1.4.1 聚类1.4.2 降维 1.5 深度学习1.6 强化学习 二、机器学习步骤三、模型评估指标3.1 分类问题3.2 回归问题 四、机器学习预备知识4.1 数学基础4.2 Pytho…

机器学习之基础知识(全)

目录 1.机器学习概述 1.1 人工智能概述 1.1.1 人工智能使用场景 1.1.2 人工智能小案例 1.2 人工智能发展历程 1.2.1 图灵测试 1.2.2 发展历程 1.2.3 小结 1.3 人工智能主要分支 1.3.1 人工智能、机器学习和深度学习 1.3.2 主要分支介绍 1.3.3 人工智能发展必备三要…

C3D Learning Spatiotemporal Features with 3D Convolutional Networks

Learning Spatiotemporal Features with 3D Convolutional Networks Abstract 摘要主要介绍在大规模有监督的视频数据集下训练出了一种简单且高效的三维卷积神经网络的方法来学习时空特征。且此发现具有三重的效果: 1)相比较于二维,三维卷积…

C3D网络笔记

C3D网络 论文链接 论文翻译 该论文发现: 1、3D ConvNets比2D ConvNets更适用于时空特征的学习; 2、对于3D ConvNet而言,在所有层使用333的小卷积核效果最好; 3、我们通过简单的线性分类器学到的特征名为C3D(Convolutional 3D…

《Action Recognition》-Learning Spatiotemporal Features with 3D Convolutional Networks(C3D)

《Action Recognition》-Learning Spatiotemporal Features with 3D Convolutional Networks(C3D) 目录 《Action Recognition》-Learning Spatiotemporal Features with 3D Convolutional Networks(C3D)ContributionsFrameworkResultConclusion Contributions We experimenta…

使用C3D的一些问题(2)

使用C3D的resume功能时,报错RuntimeError: expected device cpu but got device cuda:0 报错位置在optimizer.step()。原因是optimizer加载参数时,tensor默认在CPU上,故需将所有的tensor都放到GPU上。 解决方案: 在这一段代码后面加入 for st…

3D卷积入门 | 多论文笔记 | R2D C3D P3D MCx R(2+1)D

文章转自微信公众号:【机器学习炼丹术】。有问题或者需要加入粉丝交流群可以私信作者~ 文章目录 0 前言1 R2D2 C3D2.1 R3D 3 P3D4 MCx5 R(21)D 【前前沿】:某一次和粉丝交流的时候,收获一句话: 人点亮技能书,不是一次…

基于pytorch实现的视频分类——C3D模型论文复现

最近在学习视频分类任务,想要跑通一个更换数据集用到自己的课题上。 看到了这篇文章及代码 论文链接:http://vlg.cs.dartmouth.edu/c3d/c3d_video.pdf 代码链接:https://github.com/jfzhang95/pytorch-video-recognition 贴一下学习这个代…

我的一些视觉工具(1)之动作预测--逐行详解C3D代码(Pytorch)

该博客主要参考这个工程提供的代码 我们在他们代码的基础之上进行魔改 当然了,既然要魔改人家的数据,肯定要先把人家的思路看明白。 对于3D神经网络来讲,好多小伙伴最关心的肯定还是数据的喂入方法和数据集的格式喽。 下第一个部分就是详细第…

C3D-network论文笔记

前几天一直在看Faster-Rcnn源码和YOLOv3(C语言)源码,感觉时间浪费了不少,但是一个都没有看懂,总结出一句话就是:这TM写的是个啥?我为啥一个都看不懂,原理理解是一回事,看…

c3d代码

##c3d代码 原文链接:https://blog.csdn.net/ZJRN1027/article/details/80199248 cross_entropy_mean tf.reduce_mean( tf.nn.sparse_softmax_cross_entropy_with_logits(labelslabels,logitslogit) ) tf.summary.scalar( name_scope ‘_cross_entropy’, cross_en…

【C3D代码运行步骤】

1. 克隆或者下载项目 方法一:在github上直接下载项目:项目地址 方法二:使用git克隆(推荐),相关内容参考Git的安装及github远程仓库ssh连接 git clone https://github.com/Niki173/C3D.git https://github.com/jfzhan…

行为识别C3D代码(pytorch)实现过程及常见错误

行为识别C3D代码(pytorch)实现过程及常见错误 1.C3D网络代码 C3D(pytorch)实现代码链接: C3D代码 2.C3D代码复现过程 (1)环境版本要求 pytorch:3.5及以上 opencv:3.4.2(我是这样…

C3D的视频分类

很久之前做了C3D的视频分类,现在详细把整个项目的细节描述一下。 首先介绍一下C3D:对于一段视频来说,它是连续的帧图像叠加起来的,所以可以考虑在生成通道图像的时候,把多帧图像叠加的特性讨论进去。 一个视频段输入&…

C3D源码解读(基于3D卷积的动作识别)

UCF数据集下载地址:https://www.crcv.ucf.edu/data/UCF101.php 1.推理效果与项目配置 执行inference.py,需要指定3个参数,第一个是标签文件地址,存储了各个标签的含义,第二个是权重文件地址,第三个是要进行推理的视频…

C3D代码总结(Pytorch)

C3D代码总结(Pytorch) github:https://github.com/Niki173/C3D 介绍数据介绍文件介绍具体操作流程运行结果 介绍: 本次C3D模型用的是pytorch框架,我们在UCF101和HMDB51数据集上训练这些模型,本次实验以U…