美文网首页
分类方式、测试与验证、K-折交叉验证

分类方式、测试与验证、K-折交叉验证

作者: Alcazar | 来源:发表于2019-08-23 08:34 被阅读0次

【写在前面】:看了不少书,学了不少东西,希望写一篇 “俗套” 的机器学习笔记...

📖 一、关于机器学习

【解释】:机器学习是一门能够使用编程,让计算机从数据中学习的计算机科学技术(和艺术)。

【特点】:机器学习 能够自动地从过往经验中学习知识

多种解读方式
  • 机器学习应用在数据分析领域 = 数据挖掘

  • 将机器学习应用在图像处理领域 = 计算机视觉

  • 将机器学习应用于人脸识别领域 = 生物特征识别

📖 二、机器学习的用途

  • 有的任务只能由机器学习完成。
    例如,垃圾邮件检测。
  • 提高工作效率。
    例如:数据挖掘、计算机视觉、自然语言处理、生物特征识别、语音、手写识别和机器人运用等。
机器学习的用途

📖 三、功能强大的机器学习框架-sklearn

安装 sklearn

pip install sklearn

【温馨提示】:要是下载很慢的话,可以使用清华源:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/

【scikit-learn 介绍】:是基于 Python 语言的机器学习工具。是简单高效的数据挖掘和数据分析工具。

python中的开源软件库

python有一些常用于执行数据处理和机器学习的开源软件库。可以借助这些第三方扩展库(如Numpy、Pandas、Matplotlib、Scikit-learn等)来实现数据分析和机器学习的功能。
具体的一些常用的库和官网如下表所示:

功能描述 【机器学习】第三方库 官网
矩阵操作函数库 Numpy https://www.numpy.org.cn/
Python的绘图库 Matplotlib https://www.matplotlib.org.cn/
数据分析包 Pandas https://www.pypandas.cn/
科学计算的核心包 Scipy https://www.scipy.org/
机器学习函数库 Scikit-learn https://sklearn.apachecn.org/
统计建模工具包 StatsModels https://pypi.org/project/statsmodels/0.4.3/
深度学习框架 TensorFlow https://tensorflow.google.cn/

【更多sklearn知识】:https://sklearn.apachecn.org/

📖 四、机器学习的种类

关于机器学习的分类方式,我接受以下三类分类方式:是否有人类监督的角度划分、从系统是否可以传入数据流进行增量学习的角度划分、从是否泛化的角度划分。

1、从是否有人类监督的角度划分

(1)监督式学习

【解释】:用于学习的数据都是带标签的数据。
常见两种任务:

  • 回归任务:数据预测
  • 分类任务
(2)无监督式学习

【解释】: 用于学习的数据都是不带标签的数据。

(3)半监督式学习

【解释】:数据中有一部分是带标签的,有一部分是不带标签的数据。

(4)强化学习

【解释】:考虑的是一系列动作之后的收益最大化。


2、从系统是否可以传入数据流进行增量学习的角度划分

(1)批量学习

【解释一下】:训练时,必须使用所有可用的数据进行训练,通常都是离线完成的。也就是说先完成系统的训练,然后再投入到生产环境中。如果需要更新系统模型,需要重新训练,重新部署。
【缺点】:训练时间长,耗费资源多。

(2)在线学习

【解释一下】:可以循序渐进的给系统提供训练数据,逐步积累学习成果。

【缺点】:容易忘记老的特征。可以通过学习率参数,调节学习速度的快慢。
【注意】:虽然名字叫在线学习,实际训练时也是离线完成的。

3、从是否泛化的角度划分

(1)基于实例的学习

【解释一下】:系统先完全记住学习实例,然后通过某种相似度度量方式将其泛化到新的实例。

(2)基于模型的学习

【解释一下】:从一组实例中,构建这些实例的模型,然后用这个模型进行预测。


📖 五、目前机器学习主要存在的挑战

  • 1、训练数据的不足

  • 2、数据不具有代表性

  • 3、质量差数据

  • 4、无关特征

  • 5、训练数据过度拟合
    【解释一下】:模型拟合能力过强,记住了太多细节。导致泛化能力不足。
    【解决方案】:

    • 简化模型。
    • 使用正则化来降低模型的复杂度。
    • 收集更多的数据。
    • 减少训练数据中的噪音。
  • 6、训练数据拟合不足

    • 选择一个带有更多参数、更强大的模型。
    • 给学习算法提供更好特征的数据集。
    • 减少模型中约束(例如:减少正则化超参数)
      【知识点补充】:
  • 关于正则化:
    正则化是一种为了减小测试误差的行为(有时候会增加训练误差)。过度拟合,使用正则化来降低模型的复杂度。

  • 关于超参数:
    根据经验进行设定,影响到权重W和偏置b的大小,比如迭代次数、隐藏层的层数、每层神经元的个数、学习速率等。

【了解更多】:


📖 六、测试与验证

一般情况下会将数据分为训练集和测试集。 用训练集的数据去训练模型。用测试集的数据去测试模型的泛化能力。
【知识点补充】:

  • 【验证集】:是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。
  • 【训练集】:用于模型拟合的数据样本。
  • 【测试集】:用来评估模最终模型的泛化能力。但不能作为调参、选择特征等算法相关的选择的依据。
类别 验证集 测试集
作用 用于调超参数,监控模型是否发生过拟合(以决定是否停止训练) 评估最终模型泛化能力
使用次数 多次使用,并不断调参 仅一次使用
缺点 可能导致训练好的模型泛化性能不够 测试集为了具有泛化代表性,往往数据量比较大,测试一轮要很久。所以验证集仅仅是测试集的很小一部分,不够具有代表性
泛化误差

将模型应用于新场景的误差率。通常用来对模型进行评估。
【补充】:如果泛化误差很高,训练误差很低,则代表 模型过度拟合
【常理】:通常使用80%的数据做训练集,20%的数据做测试集。
【了解更多】:https://blog.csdn.net/Cerisier/article/details/78122653


📖 七、K-折交叉验证

【用法】:将训练集分为K个互补的子集,模型通过这个子集的不同组合进行训练,用剩余的自己子集进行验证。
一般情况下,将K折交叉验证用于模型调优,找到使得模型泛化性能最优的超参值。

【了解更多】:https://blog.csdn.net/tianguiyuyu/article/details/80697223


机器学习-知识框架
图片来源:https://www.jianshu.com/p/e0844e7cdba5

相关文章

网友评论

      本文标题:分类方式、测试与验证、K-折交叉验证

      本文链接:https://www.haomeiwen.com/subject/tntbsctx.html