机器学习

西瓜书、南瓜书、沐神、吴恩达、哔站

1、概念:

经典定义:利用经验改善系统自身的性能。

机器学习主要研究如何使用计算机从给定数据中学习规律,并利用学习到的规律(模型)来对未知或无法预测的数据进行预测。

image-20230227170532640

学习方式:

1、监督学习

2、无监督学习——聚类

3、半监督学习

4、强化学习

学习结果:

1、回归

2、分类

2、泛化

机器学习泛化是指机器学习模型能够在之前未见过的数据上进行准确预测的能力。简而言之,泛化能力是指模型从训练集中学习到的规律能够应用到测试集或实际场景中的数据中,而不是简单地记忆训练数据。泛化能力是衡量机器学习模型好坏的重要指标之一,好的模型应该具备较强的泛化能力。

3、典型的机器学习过程

  1. 确定问题和目标:首先需要明确需要解决的问题以及希望达成的目标,例如分类、回归或聚类等。

  2. 数据收集和预处理:接下来需要收集相关数据,并且对数据进行处理,包括数据清洗、缺失值处理、特征选择和特征变换等。

  3. 特征工程:在数据预处理之后,需要对数据进行特征工程,提取并选择最有用的特征,以提高模型的准确性和泛化能力。

  4. 模型选择和训练:根据问题类型和数据情况,选择适当的机器学习算法和模型,并使用训练数据对模型进行训练和调参。

  5. 模型评估和优化:使用测试集对模型进行测试和评估,查看模型的性能表现并进行优化,如调整模型参数、选择更合适的特征等。

  6. 部署模型:最后,将优化后的模型部署到实际环境中,并进行实时预测和监控。需要确保模型的稳定性、可靠性和可维护性,并不断微调和更新模型。

4、评估方法有以下几种

  1. 留出法(Holdout Method):将数据集划分为训练集与测试集两部分,训练集用于模型的训练,测试集用于模型的测试和评估。
  2. 交叉验证法(Cross-validation Method):将数据集分成k个子集,每个子集都作为测试集,其他k-1个子集作为训练集,这样会产生k个模型,通过计算这k个模型的平均误差来评估模型的性能。
  3. 自助法(Bootstrap Method):利用自助采样技术从原始数据集中随机抽取采样得到一个新的采样数据集,这个采样数据集和原始数据集一样大小,但存在一些重复的样本数据,这样可以通过多次自助采样得到多组训练集和测试集,评估模型性能的平均误差。
  4. 基于学习曲线的评估方法(Learning Curve Method):将数据集分成训练集和测试集,逐步增加训练集的数量,计算模型的训练误差和测试误差随着训练集大小的变化而变化的曲线,通过判断误差曲线是否收敛,评估模型的性能。
  5. 基于预测结果的评估方法(Prediction Result Method):比较模型预测结果与实际结果的差别,包括准确率、精确率、召回率、F1值等指标。

5、调参与验证集

机器学习调参是指寻找最优模型的情况下,对模型中某些超参数进行修改,以达到更好的预测效果。常见的调参方法包括网格搜索、随机搜索、贝叶斯优化等。

在进行调参时,需要保证模型的泛化能力,因此需要使用验证集对模型进行评估,防止过拟合。

通常将数据集划分为训练集、验证集和测试集三部分,训练集用于模型的训练,验证集用于模型的验证和调参,测试集用于最终模型的评估。

在调参时,要注意避免使用测试集进行模型的选择和调参,否则测试集的性能评估就失去了意义。

6、比较检验

机器学习比较检验是指通过对数据中不同模型的性能进行比较来评估模型预测能力的方法。在比较检验中,通常采用交叉验证、留一法、自助法等方法来对模型进行评估。

常见的机器学习比较检验方法包括:

1.交叉验证:将数据集划分为训练集和测试集,通过多个实验来评估模型的性能。

2.留一法:将一个样本作为测试集,剩余的样本作为训练集,重复n次,最终取平均值作为性能评估。

3.自助法:有放回地从数据集中采样得到一组新的数据集,采样的数据可以重复,使用这些新数据集来训练和测试多个模型,通过比较性能来评估模型。

在比较检验的过程中,需要注意的是选择适当的性能指标,如准确率、召回率、F1值等,在选用性能指标时要考虑实际应用场景的需求。同时还需要考虑所比较的模型的特性,如有些模型适用于稠密数据,有些适用于稀疏数据,应根据数据的特点选择合适的模型。

7、Scikit-learn

Scikit-learn是一个开源的Python机器学习工具包,它是基于numpy, scipy和matplotlib库开发而来。它提供了众多的机器学习算法,比如分类、回归、聚类、降维等,同时也提供了数据预处理、模型选择、模型评价等功能。

Scikit-learn提供了简单而一致的API,非常适用于机器学习初学者。它也提供了大量的文档与示例程序,用户可以通过阅读文档和运行示例程序来学习和使用这个工具包。

以下是一些Scikit-learn提供的的机器学习算法和方法:

  • 分类算法:支持向量机、决策树、朴素贝叶斯、最近邻、神经网络等。
  • 回归算法:线性回归、岭回归、Lasso回归、弹性网络、SVR等。
  • 聚类算法:K-Means、高斯混合模型、谱聚类等。
  • 降维算法:PCA、LDA、Kernel PCA、t-SNE等。
  • 数据预处理:特征提取、特征缩放、特征选择、数据清洗等。
  • 模型选择与评价:交叉验证、网格搜索、评价指标等。

Scikit-learn同时也提供了一些适用于大数据量的机器学习算法扩展,如通过多处理器并行计算和外部内存计算来加速训练和预测过程。