机器学习

机器学习

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

1、概念:

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

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

学习方式:

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

8、训练集、验证集、测试集

训练集:训练集用来训练模型,即确定模型的权重和偏置这些参数,通常我们称这些参数为学习参数。

验证集:验证集用于模型的选择,更具体地来说,验证集并不参与学习参数的确定,也就是验证集并没有参与梯度下降的过程。验证集只是为了选择超参数,比如网络层数、网络节点数、迭代次数、学习率这些都叫超参数。比如在k-NN算法中,k值就是一个超参数。所以可以使用验证集来求出误差率最小的k。

测试集(交叉验证法、自助法等):测试集只使用一次,即在训练完成后评价最终的模型时使用。它既不参与学习参数过程,也不参数超参数选择过程,而仅仅使用于模型的评价。
值得注意的是,千万不能在训练过程中使用测试集,而后再用相同的测试集去测试模型。这样做其实是一个cheat,使得模型测试时准确率很高。

训练集,验证集,测试集分别是什么_训练集是什么意思_又决定放弃的博客-CSDN博客

9、目标函数、目标函数、优化方法:

目标函数:指所关心的目标与相关的因素的函数关系。按照一定的思路把这些已知条件利用起来,去求解未知量的函数关系式。

目标函数:也叫代价函数,是同一个东西。是用来评估模型的预测值f(x)与真实值Y的差距,它是一个非负实值函数。

优化方法:优化方法是一种数学方法,旨在找到最佳解决方案或最优解,以满足特定的目标和限制条件。这些方法可以应用于各种领域,包括工程,经济学,计算机科学,物理学等等。优化方法可以分为两类:线性优化和非线性优化。线性优化是指在满足一组线性约束条件下,寻找一个线性目标函数的最大值或最小值。非线性优化是指在满足非线性约束条件下,寻找一个非线性目标函数的最大值或最小值。常见的优化方法包括梯度下降法,牛顿法,遗传算法等。

10、拟合、过拟合、欠拟合:

拟合:是指使用一种数学模型来拟合数据并预测未知数据的能力。在机器学习和统计学中,拟合通常是指根据已知数据训练模型,从而得到一个最优的模型,以便用于预测未知数据。

过拟合:是指模型在训练数据上表现得很好,但在新数据上表现得很差的情况。过拟合通常发生在模型过于复杂或训练数据过少的情况下,导致模型在训练数据上过度拟合,从而无法泛化到新数据。

欠拟合:是指模型无法捕捉到数据的趋势或规律,导致在训练和测试数据上都表现得很差的情况。欠拟合通常发生在模型过于简单或训练数据过少的情况下,导致模型无法学习到足够的特征。

11、准确率、泛化性能:

准确率:是指模型在给定数据集上的预测结果与实际结果的一致性程度,通常用百分比表示。例如,如果一个二元分类模型在测试集上正确预测了90个样本,错误预测了10个样本,则其准确率为90%。

泛化性能:是指模型在未见过的数据上的表现能力,即其对于新的数据的预测能力。一个好的模型应该具有良好的泛化性能,能够正确地预测未见过的数据。

准确率和泛化性能是机器学习中两个重要的概念。准确率通常用于评估模型在已知数据上的预测能力,而泛化性能用于评估模型的真正预测能力,即其在未知数据上的表现能力。在训练模型时,通常需要同时考虑准确率和泛化性能,并进行平衡,以得到一个既能够在训练数据上表现良好,又能够泛化到新数据的模型。