机器学习基础学习笔记

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

机器学习基础

一、机器学习概述

  1. 机器学习直白来讲,是根据已有的数据,进行算法选择,并基于算法和数据构建模型,最终对未来进行预测;
  2. 输入一组数据X-Y,想要得到X-Y间的一个目标函数 f 。根据大量历史数据,根据逻辑推理得到一个与想要得到的目标函数 f 相近的假设函数 g
  3. 对于某给定的任务 T ,在合理的性能度量方案 P 的前提下,某计算机程序可以自主学习任务 T 的经验 E;随着提供合适、优质、大量的经验 E ,该程序对于任务 T 的性能逐步提高。即随着E积累,会导致以 P 度量的性能的提升
  4. 选择的相关算法(数学公式)==> 基于数据和算法构建出模型 ==> 对模型进行评估 ==> 改进算法;

二、机器学习中的基本概念

  1. 拟合:构建的算法符合给定数据(学习数据、样本数据)的特征 ;
  2. x( i ):表示第 i 个样本的x向量;
  3. x i : x向量的第 i 维度的值;
  4. 鲁棒性(健壮性、稳健性、强健性):系统的健壮性。当存在异常数据(学习数据、样本数据)的时候,算法也会拟合数据;
  5. 过拟合:算法太符合样本数据的特征,对于实际生产中的数据特征无法拟合;
  6. 欠拟合:算法不太符合样本的数据特征。
  7. 数据分析、数据挖掘、机器学习
    数据分析 :数据分析是指用适当的统计分析方法对收集的大量数据进行分析,并提取有用的信息,以及形成结论,从而对数据进行详细的研究和概括过程。在实际工作中,数据分析可帮助人们做出判断。数据分析一般而言可以分为统计分析探索性数据分析验证性数据分析三大类;
    数据挖掘:一般指从大量的数据中通过算法搜索隐藏于其中的信息的过程。通常通过统计、检索、机器学习、模式匹配等诸多方法来实现这个过程;
    机器学习:是数据分析数据挖掘的一种比较常用、比较好的手段

三、常见框架

  1. Sciket-learn;
  2. Mahout;
  3. Spark MLlib 。

四、机器学习分类

  1. 有监督学习
    已知某种或某些特性的样本(标签化训练数据集)作为训练集,以建立一个数学模型,再用已建立的模型来预测未知样本,此种方法被称为有监督学习,是最常用的一种机器学习方法。是从标签化训练数据集中推断出模型的机器学习任务。
    (1) 判别式模型
    直接对条件概率 p(y|x) 进行建模,更直接,目标性更强。关注数据是如何产生的,寻找的是数据分布模型 。eg:线性回归、决策树、支持向量机SVM、k近邻、神经网络等;
    (2) 生成式模型
    联合分布概率p(x,y)进行建模,更普适。关注的数据的差异性,寻找的是分类面。eg:隐马尔可夫模型HMM、朴素贝叶斯模型、高斯混合模型GMM、LDA等;
    联合分布概率的几何意义:如果将二维随机变量(X,Y)看成是平面上随机点的坐标,那么分布函数F(x,y)在(x,y)处的函数值就是随机点(X,Y)落在以点(x,y)为顶点而位于该点左下方的无穷矩形域内的概率。
    生成式模型可以产生判别式模型,但是由判别式模式没法形成生成式模型。
  2. 无监督学习
    无监督学习的训练集(普通数据、大众化数据)中没有人为的标注的结果,在非监督的学习过程中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。有监督学习为已知特征进行预测,无监督模型为不知特征找特征,故无监督学习可为监督学习提供前期处理。
    (1) 目的
    无监督学习试图学习或者提取数据背后的数据特征,或者从数据中抽取出重要的特征信息,常见的算法有聚类、降维、文本处理(特征抽取)等。
    (2) 用途
    无监督学习一般是作为有监督学习的前期数据处理,功能是从原始数据中抽取出必要的标签信息。
  3. 半监督学习(SSL)
    利用少量的标注样本和大量的未标注样本(混合样本数据)进行训练和分类的问题,是有监督学习和无监督学习的结合。又分纯半监督式学习和直推式学习。
    (1) 意义
    半监督学习对于减少标注代价,提高学习机器性能具有非常重大的实际意义。
    (2) 假设
    平滑假设、聚类假设、流行假设;其中流行假设更具有普片性。(假设是SSL成立的基础)
    对未标记数据进行假设,使之可以被利用,目的是为了得到假设所有数据(无论是否有标记)都是由同一个潜在的模型“生成”的,或说所有数据训练后将形成相同的模型。
    (3) 算法
    半监督分类、半监督回归、半监督聚类、半监督降维。
    (4) 缺点
    抗干扰能力弱,其现实意义还没有体现出来;未来的发展主要是聚焦于新模型假设的产生(过于依赖模型假设)。
  4. 其他分类方法
    (1) 分类
    通过分类模型,将样本数据集中的样本映射到某个给定的类别中
    (2) 聚类
    通过聚类模型,将样本数据集中的样本分为几个类别,属于同一类别的样本相似性比较大
    (3) 回归
    反映了样本数据集中样本的属性值的特性,通过函数表达样本映射的关系来发现属性值之间的依赖关系
    (4) 关联规则
    获取隐藏在数据项之间的关联或相互关系,即可以根据一个数据项的出现推导出其他数据项的出现频率。

五、机器学习算法 Top 10

算法名称                                                                     算法概述                    
C4.5分类决策树算法,决策树的核心算法,ID3算法的改进算法
CART分类与回归树(Classification and Regression Trees)
KNNK近邻分类算法;如果一个样本在特征空间中的k个最相似的样本中大多数属于某一个类别,那么该样本也属于该类别
NaiveBayes贝叶斯分类模型;该模型比较适合属性相关性比较小的时候,如果属性相关性比较大的 时候,决策树模型比贝叶斯分类模型效果好(原因:贝叶斯模型假设属性之间是互不影响的)
SVM支持向量机,一种有监督学习的统计学习方法,广泛应用于统计分类和回归分析中
EM最大期望算法,常用于机器学习和计算机视觉中的数据集聚领域
Apriori关联规则挖掘算法
K-Means聚类算法,功能是将n个对象根据属性特征分为k个分割(k<n),属于无监督学习(有接触)
PageRankGoogle搜索重要算法之一
AdaBoost迭代算法,利用多个分类器进行数据分类

六、机器学习开发流程

  • 数据收集 ==> 数据预处理(清理与转换) ==> 特征提取 ==> 模型构建(数据建模) ==> 模型训练 ==> 模型测试 ==> 模型评估 ==>投入使用(模型部署与整合) ==> 迭代优化(利用模型反馈数据) ==> 数据收集 ==> …

  • 详细流程

  1. 数据来源
    用户访问行为数据
    业务数据
    外部第三方数据

  2. 数据存储
    需要存储的数据:原始数据、预处理后数据、模型结果
    存储设施:MySQL、HDFS、HBase、Solr、Elasticsearch、Kafka、Redis等

  3. 数据收集方式
    Flume:日志收集系统。提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系统),支持TCP和UDP等2种模式),exec(命令执行)等数据源上收集数据的能力
    Kafka:开源流处理平台、分布式高吞吐量发布订阅消息系统。

  4. 数据清洗和转换 ⭐️
    实际生产环境中机器学习比较耗时的一部分,大部分的机器学习模型所处理的都是特征,特征通常是输入变量所对应的可用于模型的数值表示。大部分情况下 ,收集得到的数据需要经过预处理后才能够为算法所使用,预处理的操作主要包括以下几个部分:
    (1) 数据过滤
    (2) 处理数据缺失
    (3) 处理可能的异常、错误或者异常值
    (4) 合并多个数据源数据
    (5) 数据汇总
    (6) 对数据进行初步的预处理,需要将其转换为一种适合机器学习模型的表示形式,对许多模型类型来说,这种表示就是包含数值数据的向量或者矩阵
    (7) 将类别数据编码成为对应的数值表示(一般使用1-of-k方法)-dumy
    功能:将非数值型的特征值转换为数值型的数据
    描述:假设变量的取值有 k 个,如果对这些值用 1 到 k 编序,则可用维度为 k的向量来表示一个变量的值。在这样的向量里,该取值所对应的序号所在的元素为1,其他元素均为0。类似将之前的符号变为一个只有0-1两个选项的选题,在矩阵对应位置选择相应选项。如下例:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zFegdAoC-1589527712488)(images/1568046670116.png)]
    (8) 从文本数据中提取有用的数据(一般使用词袋法或者TF-IDF)
    词袋:将文本当作一个无序的数据集合,文本特征可以采用文本中的词条T进行体现,那么文本中出现的所有词条及其出现的次数就可以体现文档的特征
    TF-IDF: 词条的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降;也就是说词条在文本中出现的次数越多,表示该词条对该文本的重要性越高,词条在所有文本中出现的次数越少,说明这个词条对该文本的重要性越高。TF(词频)指某个词条在文本中出现的次数,一般会将其进行归一化处理(该词条数量/该文档中所有词条数量,越大表示该词条在该文档中越重要);IDF(逆向文件频率)指一个词条重要性的度量,一般计算方式为总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到,越大表示该词条在该文档中越重要。TF-IDF实际上是:TF * IDF(暑假数学建模培训中有所涉及,难度不是很大)。
    (9) 处理图像或者音频数据(像素、声波、音频、振幅等<傅里叶变换>)
    (10) 数值数据转换为类别数据以减少变量的值,比如年龄分段
    (11) 对数值数据进行转换,比如对数转换
    (12) 对特征进行正则化、标准化,以保证同一模型的不同输入变量的值域相同
    (13) 对现有变量进行组合或转换以生成新特征,比如平均数 (做虚拟变量)不断尝试

  5. 模型训练及测试
    (1) 模型选择:对特定任务最优建模方法的选择或者对特定模型最佳参数的选择。
    (2) 在训练数据集上运行模型并在测试数据集中测试效果,迭代进行数据模型的修改,这种方式被称为交叉验证(将数据分为训练集测试集,使用训练集构建模型,并使用测试集评估模型提供修改建议)
    (3) 模型的选择会尽可能多的选择算法进行执行,并比较执行结果(提高结果的可信度)。
    (4) 模型的测试一般以下几个方面来进行比较,分别是准确率/召回率/精准率/F值
    准确率(Accuracy)=提取出的正确样本数/总样本数
    召回率(Recall)=正确的正例样本数/样本中的正例样本数(覆盖率)
    精准率(Precision)=正确的正例样本数/预测为正例的样本数
    F值=Precision*Recall*2 / (Precision+Recall) (即F值为正确率和召回率的调和平均值)
    与目的相关的就是正样本。eg:有一堆字母图片的数据集,你要识别哪个是含有A字母的图片,那么含有A字母的图片就是正样本,其他的都是负样本
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uJtqWKVz-1589527712493)(images/1568109509807.png)]
    混淆矩阵

    6.模型评估(前三点主要为分类算法)
    (1) 准确率、召回率、精准率、F值
    (2) ROC
    描述的是分类混淆矩阵中FPR-TPR(↑具体见混淆矩阵↑)两个量之间的相对变化情况。ROC曲线的纵轴是TPR,横轴FPR。 如果二元分类器输出的是对正样本的一个分类概率值,当取不同阈值时会得到不同的混淆矩阵,对应于ROC曲线上的一个点。
    ROC曲线就反映了FPR与TPR之间权衡的情况。在TPR随着FPR递增的情况下,TPR增长得越快,曲线越往上屈,AUC就越大 ,反映了模型的分类性能就越好。当正负样本不平衡时,这种模型评价方式比起一般的精确度评价方式的好处尤其显著。
    (3) AUC(AUC的值越大表达模型越好)
    AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1(整个坐标系为横纵坐标为一的正方形)。又由于ROC曲线一般都处于 y=x 这条直线的上方,所以AUC的取值范围在 0.51 之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而AUC作为数值可以直观的评价分类器的好坏,值越大越好
    AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器;
    0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值;
    AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值;
    AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
    (4) 回归算法结果度量指标
    explained_varicance_score:可解释方差的回归评分函数
    mean_absolute_error:平均绝对误差
    mean_squared_error:平均平方误差
    (5) 分类算法评估对应函数 & 回归算法评估对应函数
    分类算法
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z7QHbKs8-1589527712496)(images/1568118767305.png)]
    回归算法
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wSMS7VBY-1589527712501)(images/1568119051049.png)]
    (6) 模型部署和整合
    当模型构建好后,将训练好的模型存储到数据库中,方便其它使用模型的应用加载(构建好的模型一般为一个矩阵)
    模型需要周期性(一个月、一周)
    (7) 模型的监控与反馈
    模型的效果监控是非常重要的,往往需要关注业务效果和用户体验,有时候会进行A/B测试
    模型需要对用户的反馈进行响应操作,即进行模型修改,但是要注意异常反馈信息对模型的影响,故需要进行必要的数据预处理操作

七、数学基础回顾

  • Taylor公式(曲线拟合、计算近似值)
  • 贝叶斯公式
  • 数学期望(连续性易遗忘)
  • 协方差(衡量两个变量的总体误差)⭐️
  • 大数定理、中心极限定律
  • 最大似然估计(MLE)
    写出似然函数 => 对似然函数取对数+整理 => 求导数 => 解似然方程
  • QR分解
    将矩阵分解为一个正交矩阵和上三角矩阵,一般用于解决线性最小二乘问题
  • SVD分解(奇异值分解)⭐️
  • 向量的导数、标量对向量的导数、标量对方阵的导数
  • 梯度下降法 ✡️⭐️

八、Python 科学计算库

  • NumPy-数学计算基础库:N维数组、线性代数计算、傅立叶变换、随机数等;
  • SciPy-数值计算库:线性代数、拟合与优化、插值、数值积分、稀疏矩阵、图像处理、统计等;
  • Pandas-数据分析库:数据导入、整理、处理、分析等;
  • Matplotlib-绘图库:绘制二维图形和图表。

附录

  • B站发现的李宏毅老师的移植视频,质量超赞!
  • 最新版课程资料戳这里嗷~~
  • 课件在这里

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

相关文章

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

引言 本文介绍机器学习的一些基本概念。包括机器学习的主要任务&#xff0c;机器学习的分类等。 下一篇&#xff1a;机器学习入门——numpy与matplotlib的使用简介 用到的数据 鸢尾花(IRIS)是比较常见的在我们学习机器学习时用到的数据。数据来源: http://archive.ics.uci.e…

机器学习的数学基础

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

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

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

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

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

机器学习基础

一、机器学习概述 1.1 人工智能概述 1.人工智能起源&#xff1f; 图灵测试、达特茅斯会议 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 摘要主要介绍在大规模有监督的视频数据集下训练出了一种简单且高效的三维卷积神经网络的方法来学习时空特征。且此发现具有三重的效果&#xff1a; 1&#xff09;相比较于二维&#xff0c;三维卷积…

C3D网络笔记

C3D网络 论文链接 论文翻译 该论文发现&#xff1a; 1、3D ConvNets比2D ConvNets更适用于时空特征的学习&#xff1b; 2、对于3D ConvNet而言&#xff0c;在所有层使用333的小卷积核效果最好&#xff1b; 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功能时&#xff0c;报错RuntimeError: expected device cpu but got device cuda:0 报错位置在optimizer.step()。原因是optimizer加载参数时,tensor默认在CPU上&#xff0c;故需将所有的tensor都放到GPU上。 解决方案&#xff1a; 在这一段代码后面加入 for st…

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

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

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

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

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

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

C3D-network论文笔记

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

c3d代码

##c3d代码 原文链接&#xff1a;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. 克隆或者下载项目 方法一&#xff1a;在github上直接下载项目&#xff1a;项目地址 方法二&#xff1a;使用git克隆&#xff08;推荐&#xff09;,相关内容参考Git的安装及github远程仓库ssh连接 git clone https://github.com/Niki173/C3D.git https://github.com/jfzhan…

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

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

C3D的视频分类

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

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

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