美文网首页
分类方式、测试与验证、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