由于我最近拿到offer还是想再找找更好的机会,目前有很多的面试,面试的时候很多面试官会问一些机器学习的基础知识,由于我上一段实习的时候主要是机器学习和部分深度学习的内容,为了避免在面试的时候想不起来自己学习的内容,我还是决定边复习边学习,新开一个自我复习系列,巩固已经学到的知识。
--------------------------------------------------------------------------------------------------------------
机器学习(准确的预测和分类等,牺牲部分可解释性获得强大的预测能力)<——>数理统计(推断特征之间的关系)
机器学习——>有监督,无监督,强化学习
有监督:数据有标签,——>回归(标签连续)、分类(标签离散)
无监督:没有标签——>聚类(识别数据的组)、降维(从高维数据检测识别低维的数据结构)
强化学习:让他自己学习
机器学习的分类主要包括有监督学习、无监督学习和强化学习。每个类别都有其独特的特点和应用场景。以下是对这三种主要类型的详细介绍:
1. 有监督学习 (Supervised Learning)
训练数据集中的每个样本都有对应的标签(或目标值),模型学习输入到输出的映射关系。模型的目标是根据输入预测输出,常用于分类和回归任务。
常用算法及其原理
回归算法
- 线性回归 (Linear Regression)
:
+ **原理**
:找到一个线性函数,使得预测值与实际值之间的误差最小。
+ **应用**
:
**房价预测**
:根据特征(如房屋面积、房间数量、地理位置等)预测房价。
**股票价格预测**
:根据历史价格和其他相关指标预测股票的未来价格。
**销售预测**
:根据历史销售数据和市场因素预测未来销售额。
+ 线性回归是一种基本的回归分析方法,用于建立特征(自变量)和目标变量(因变量)之间的线性关系。它通过最小化预测值与实际值之间的误差来找到最佳的回归函数。
线性回归模型假设目标变量 y与特征变量 X之间的关系可以用一个线性函数表示:
找到回归系数 β 使得
预测值
与
实际值
之间的误差最小。误差通常用均方误差(Mean Squared Error, MSE)来度量:
最小二乘法是最常用的方法,通过最小化误差平方和来估计回归系数。
- 岭回归 (Ridge Regression)
:
+ **原理**
:在线性回归的基础上加入L2正则化项,防止过拟合。
+ **应用**
:高维数据的回归分析。
**高维数据的回归分析**
:如基因数据分析、文本数据处理等,特征维度远大于样本数的场景。
**解决多重共线性问题**
:当特征之间存在高度相关性时,岭回归能提供更稳定的回归系数估计。
- Lasso 回归 (Lasso Regression)
:
+ **原理**
:是在线性回归的基础上加入 L1 正则化项,通过引入绝对值的惩罚项来约束回归系数,使得一些回归系数收缩到零。这种特性使得 Lasso 回归不仅可以用于预测,还可以进行特征选择。
+ **应用**
:特征选择和预测。
Lasso 回归 vs. 岭回归
:- Lasso 回归
:使用 L1 正则化项,进行特征选择,将不重要的特征的系数缩减为零。 - 岭回归
:使用 L2 正则化项,不会将系数缩减为零,但可以减少系数的大小,从而减少过拟合。
- Lasso 回归
多项式回归 (Polynomial Regression)
:- 原理
:将特征进行多项式扩展,捕捉非线性关系。 - 应用
:非线性数据的回归分析。
- 原理
分类算法
- 逻辑回归 (Logistic Regression)
:
+ **原理**
:使用逻辑函数将线性组合映射到0到1之间,表示事件发生的概率。
+ **应用**
:二分类问题,如垃圾邮件分类、疾病预测。
**二分类问题**
:逻辑回归广泛应用于各种二分类问题,如垃圾邮件分类、疾病预测、客户流失预测等。
**概率预测**
:除了分类,逻辑回归还可以输出事件发生的概率。
对比其他算法 1. 逻辑回归 vs. 线性回归 : * 逻辑回归 :用于分类问题,输出的是概率值。 * 线性回归 :用于回归问题,输出的是连续值。 2. 逻辑回归 vs. 决策树 : * 逻辑回归 :基于线性模型,适用于线性可分数据,易于解释。 * 决策树 :基于树状结构,可以捕捉复杂的非线性关系,但容易过拟合。 3. 逻辑回归 vs. 支持向量机(SVM) : * 逻辑回归 :输出概率,易于解释和计算效率高。 * SVM :通过最大化间隔实现分类,适用于高维数据,但计算复杂度高,参数调优复杂。 4. 逻辑回归 vs. 朴素贝叶斯 : * 逻辑回归 :不假设特征之间的独立性,适用于特征之间相关性较强的数据。 * 朴素贝叶斯 :假设特征之间相互独立,计算效率高,适用于高维数据。 |
---|
支持向量机 (SVM)
:- 原理
:
找到最大化分类边界的超平面。
支持向量机(Support Vector Machine, SVM)是一种监督学习模型,用于分类和回归分析。其主要思想是找到一个能够最大化分类边界的超平面,以此将不同类别的样本分开。在二分类问题中,SVM 通过选择支持向量(位于分类边界上的样本点)来确定最优的分类超平面。对于线性可分数据,SVM 的目标是找到一个决策超平面,使得两个类别之间的间隔最大化。这个间隔被称为“最大间隔”(Maximum Margin)。对于线性不可分的数据,SVM 通过引入核函数(Kernel Function)将数据映射到高维空间,使得在高维空间中可以找到线性可分的超平面。 - 应用
:文本分类、图像识别。
- 原理
对比其他算法 1. SVM vs. 逻辑回归 : * SVM :最大化分类间隔,适用于高维数据,支持非线性分类。 * 逻辑回归 :线性模型,适用于线性可分数据,输出分类概率,计算效率高。 2. SVM vs. 决策树 : * SVM :基于超平面分类,适用于高维数据,易于处理非线性问题。 * 决策树 :基于树状结构分类,易于解释,适用于处理缺失数据和类别不均衡的数据。 3. SVM vs. KNN(K近邻) : * SVM :训练时间较长,但预测时间较短,适用于高维数据。 * KNN :训练时间较短,但预测时间较长,对大规模数据和高维数据不友好。 4. SVM vs. 神经网络 : * SVM :模型较为简单,适用于中小规模数据,参数调优相对复杂。 * 神经网络 :适用于大规模数据和复杂非线性问题,具有更高的灵活性,但需要更多的计算资源和更长的训练时间。 |
---|
- 决策树 (Decision Tree)
:
+ **原理**
:
**递归分割特征空间,构建树结构。**
决策树是一种用于分类和回归任务的树形模型,通过递归地分割特征空间来构建树结构。在每个节点上,决策树选择一个特征及其阈值,以最佳方式将数据分割为不同的子集,从而使得每个子集的纯度最大化。这个过程一直递归进行,直到达到停止条件(如节点中的样本数小于某个阈值,或达到最大深度)。
+ **应用**
:分类和回归任务。
信息增益
(Information Gain): 信息增益是通过衡量分割前后信息熵的减少量来选择分割特征。信息熵(Entropy)的计算公式为:
基尼指数
(Gini Index): 基尼指数用于衡量数据集的不纯度,其计算公式为:
卡方统计量
(Chi-square): 卡方统计量用于衡量特征与目标变量之间的独立性,其计算公式为:
随机森林 (Random Forest)
:- 原理
:集成多棵决策树,通过多数投票或平均结果进行预测。决策树通过递归地分割特征空间来构建树结构,每个节点代表一个特征的测试条件,每个分支代表测试结果,每个叶节点代表一个类别或回归值。决策树的构建过程包括选择最佳分割特征和分割点,以最大化节点纯度。 - 应用
:分类、回归任务。
- 原理
- 梯度提升树 (Gradient Boosting Tree, GBT)
原理
梯度提升树通过逐步构建决策树,每棵树都在前一棵树的基础上进行优化,以最小化损失函数。每次迭代中,新的树拟合当前模型的残差。
极端梯度提升 (XGBoost)
LightGBM
- 原理
:LightGBM 是一种基于直方的梯度提升框架,采用基于叶节点的生长策略,提高了计算效率。它通过优化数据存储和分裂策略,实现更快的训练速度和更低的内存消耗。 - 应用
:
- 原理
决策树及其变种(如随机森林、梯度提升树、XGBoost、LightGBM、CatBoost)在分类和回归任务中具有广泛应用。决策树通过递归分割特征空间构建树结构,而其变种通过集成学习和优化技术提高模型的性能和泛化能力。理解这些算法的原理和公式,有助于在实际应用中选择和优化模型。
随机森林与XGBoost的区别 随机森林 (Random Forest) 1. 原理 : * 随机森林是一种集成学习方法,由多个决策树组成。每棵决策树都是通过对训练数据的随机抽样生成的。最终的预测结果通过对所有决策树的预测结果进行投票(分类任务)或平均(回归任务)得到。 * 在随机森林中,Bootstrap 采样(有放回抽样)的过程使得每个数据点在每棵树的训练数据集中被重复采样的概率可以通过以下公式计算: 1. 随机性 : * 数据随机性 :训练每棵树时,使用的是数据的随机子集(有放回抽样,即 Bootstrap 采样)。即每棵树的训练数据集是从原始数据集中随机抽取的。由于是有放回采样,每个样本可能在不同的树中出现多次。 * 特征随机性 :在构建每棵树时,对每个节点的分裂特征进行随机选择。即在每个节点分裂时,只考虑随机选择的部分特征而不是全部特征,从而增加树之间的多样性。 2. 并行化 : * 随机森林的每棵树是独立构建的,因此可以并行训练多棵树。这使得随机森林在训练时能够利用多核处理器的并行计算能力,提高计算效率。 3. 优缺点 : * 优点 :减少了过拟合,具有较好的泛化能力,适用于大规模数据集。 * 缺点 :模型较为复杂,解释性较差,预测时需要对所有树的结果进行投票或平均,计算成本较高。 XGBoost (Extreme Gradient Boosting) 1. 原理 : * XGBoost 是一种梯度提升树方法,通过逐步构建决策树,每棵树都在前一棵树的基础上进行优化,以最小化损失函数。它采用了贪心算法来优化模型,加入了正则化项来减少过拟合。 2. 并行化 : * 特征并行 :XGBoost 对特征进行并行处理。树的分裂是在每个节点的所有特征上并行计算的。使用直方图算法(Histogram-Based Method),将连续特征离散化为直方图,然后并行地计算每个特征的分裂增益。 * 样本并行 :在训练过程中,XGBoost 使用了块分裂方法,将数据分成多个块,并在不同的块上并行训练。每个块包含了数据的不同部分,这些块可以同时进行计算。 * 树的并行 :XGBoost 在构建树的过程中,可以并行构建不同的树(在某些实现中)。 3. 优缺点 : * 优点 :高效、准确,支持并行计算和分布式计算,对缺失值处理较好,适用于大规模数据集。 * 缺点 :参数较多,需要调优,模型复杂性较高,对数据预处理要求较高。 XGBoost 的并行实现 XGBoost 的并行实现主要体现在以下几个方面: 1. 特征并行 : * 在每次分裂时,XGBoost 会遍历所有特征,计算每个特征的分裂增益。通过将特征分配到不同的线程中,XGBoost 能够并行计算各个特征的分裂增益,从而加速分裂过程。 2. 样本并行 : * 数据集被划分为多个块(或子样本),每个块在不同的线程中进行计算。这种并行化使得模型训练过程能够利用多核处理器的计算能力。 3. 直方图算法 : * XGBoost 使用直方图算法来加速分裂点的搜索。特征值被离散化为直方图桶,然后并行计算每个桶的增益。这样可以大大减少计算量,提高训练速度。 4. 块分裂方法 : * XGBoost 通过将数据划分为块,并在块之间并行计算,进一步提高了训练速度。每个块包含数据的一部分,这些块可以同时处理,并在最终合并结果。 随机森林的随机性 1. 数据随机性 : * 随机森林通过 Bootstrap 采样(有放回抽样)来生成每棵决策树的训练数据集。即每棵决策树训练时使用的数据集是从原始数据集中随机抽取的样本,有可能重复抽取相同的数据点。 2. 特征随机性 : * 在每个节点分裂时,只随机选择部分特征进行考虑,而不是使用所有特征。这样可以增加树的多样性,减少过拟合。 |
---|
k近邻 (k-NN)
:- 原理
:通过计算与训练样本的距离,选择最近的k个邻居进行预测。 - 应用
:图像识别、推荐系统。
- 原理
朴素贝叶斯 (Naive Bayes)
:
+ **原理**
:基于贝叶斯定理和特征条件独立假设进行分类。朴素贝叶斯分类器是一种基于贝叶斯定理的简单且高效的分类算法。它广泛应用于文本分类、垃圾邮件过滤、情感分析等领域。尽管它的假设条件比较强(特征独立性假设),但在许多实际问题中表现良好。
+ **应用**
:文本分类、情感分析。
+ ![](https://i-blog.csdnimg.cn/direct/89c098bdaaf5462ba1273049bd177b6e.png)
+ #### 类型
- **高斯朴素贝叶斯**
:
* 适用于特征值符合高斯分布(连续特征)的情况。
* 特征的条件概率密度函数假设为高斯分布。
- **多项式朴素贝叶斯**
:
* 适用于特征值为计数或频率的情况(例如文本数据的词频)。
* 特征的条件概率假设为多项分布。
- **伯努利朴素贝叶斯**
:
* 适用于特征为二值特征的情况(例如是否出现某个词)。
* 特征的条件概率假设为伯努利分布。
神经网络 (Neural Networks)
:- 原理
:通过多个层的神经元连接进行特征提取和映射。 - 应用
:图像识别、语音识别、自然语言处理。
- 原理
2. 无监督学习 (Unsupervised Learning)
特点
- 数据无标签
:训练数据集中的样本没有标签,模型需自行发现数据的结构和模式。 - 目标探索
:模型的目标是探索数据的内在结构,常用于聚类和降维任务。
常用算法及其原理
聚类算法
k-means 聚类 (k-means Clustering)
:- 原理
:通过最小化样本到最近质心的距离进行聚类。K-means 聚类是一种基于划分的方法,用于将数据集分成 kkk 个不同的簇或群组。每个簇由一个质心(centroid)表示,质心是簇中所有点的均值。 - 应用
:客户分群、图像分割。
- 原理
K-means 聚类 (K-means Clustering) 原理 * 任务 :无监督学习的聚类算法。 * 目标 :将数据集划分成 k 个簇,使得每个簇内的样本尽可能相似,而簇与簇之间的样本尽可能不同。 * 方法 : 1. 初始化 :随机选择 k 个初始质心。 2. 分配阶段 :将每个数据点分配到最近的质心所在的簇。 3. 更新阶段 :计算每个簇的质心,并更新质心的位置。 4. 迭代 :重复分配和更新阶段,直到质心不再变化(或变化很小)。 主要特点 * 无监督 :不需要标签信息,主要用于数据的分组和模式发现。 * 输出 :簇的划分和每个簇的质心。 * 依赖 :簇的数量 kkk 需要预先指定。 * 应用 :客户分群、图像分割、数据预处理等。 K-最近邻 (KNN) 原理 * 任务 :有监督学习的分类或回归算法。 * 目标 :根据已标记的训练数据对新样本进行分类或回归。 * 方法 : 1. 选择 k :选择一个正整数 k。 2. 计算距离 :对于每个待分类样本,计算它与训练集中所有样本的距离(如欧几里得距离)。 3. 选择最近邻 :选择距离最近的 k 个样本。 4. 投票/平均 : + 分类 :对这 k 个邻居的标签进行投票,选择最多的类别作为新样本的预测类别。 + 回归 :对这 k 个邻居的目标值取平均,作为新样本的预测值。 主要特点 * 有监督 :需要已标记的训练数据,用于分类或回归任务。 * 输出 :分类结果或回归值。 * 依赖 :选择的 k 值会影响分类结果或回归预测。 * 应用 :文本分类、图像分类、推荐系统等。 区别总结 1. 任务类型 : * K-means :无监督学习(聚类)。 * KNN :有监督学习(分类或回归)。 2. 输入 : * K-means :只需要数据,不需要标签。 * KNN :需要带有标签的训练数据。 3. 输出 : * K-means :每个样本的簇分配和质心。 * KNN :新样本的预测标签或值。 4. 算法目标 : * K-means :寻找数据的自然簇,最小化簇内的样本到质心的距离。 * KNN :基于已知样本的标签或值,对新样本进行预测。 5. 适用场景 : * K-means :用于发现数据的自然分组或模式,适用于数据探索和预处理。 * KNN :用于对新样本进行预测,适用于分类和回归任务。 |
---|
层次聚类 (Hierarchical Clustering)
:- 原理
:通过合并或分裂簇生成层次结构。 - 应用
:基因表达分析、文档聚类。
- 原理
DBSCAN (Density-Based Spatial Clustering of Applications with Noise)
:- 原理
:基于密度连接样本,形成簇。 - 应用
:地理数据分析、异常检测。
- 原理
降维算法
主成分分析 (PCA, Principal Component Analysis)
:- 原理
:通过线性变换将数据投影到最大方差方向。主成分分析(PCA)是一种降维技术,其核心思想是通过线性变换将数据投影到一个新的坐标系中,使得数据在新的坐标系下的方差最大。具体步骤如下:
1.数据中心化
:- 将数据的每一维减去其均值,使数据的均值为零。这是为了使数据的协方差矩阵不受偏移的影响。
2.计算协方差矩阵
:- 协方差矩阵描述了数据各特征之间的相关性。对于 n维数据,协方差矩阵是n×n 的矩阵,矩阵中的每个元素表示两个特征之间的协方差。
3.计算特征值和特征向量
:- 计算协方差矩阵的特征值和特征向量。特征值表示数据沿着特征向量方向的方差大小。
4.选择主成分
:- 将特征向量按特征值的大小排序,选择前 k个特征向量(主成分),这些主成分对应最大方差的方向。选择的数量 k是降维的维度。
5.投影数据
:- 将数据投影到选定的主成分上,得到降维后的数据。这个过程通过特征向量矩阵的乘积完成。
应用
:数据预处理、可视化。
t-SNE (t-Distributed Stochastic Neighbor Embedding)
:- 原理
:通过最小化高维空间和低维空间的分布差异进行降维。 - 应用
:高维数据的可视化。
- 原理
线性判别分析 (LDA, Linear Discriminant Analysis)
:- 原理
:通过最大化类间方差和类内方差比值进行降维。 - 应用
:分类任务的降维。
- 原理
3. 强化学习 (Reinforcement Learning)
特点
- 让模型自行学习
:通过与环境的交互,自行探索最优策略。 - 目标长期收益
:模型的目标是最大化累计奖励,常用于动态和连续决策问题。
常用算法及其原理
马尔可夫决策过程 (MDP, Markov Decision Process)
:- 原理
:基于状态、动作和奖励的动态规划。 - 应用
:描述强化学习环境。
- 原理
深度Q网络 (DQN, Deep Q-Network)
:- 原理
:使用神经网络近似Q值函数。 - 应用
:复杂环境下的强化学习,如游戏AI。
- 原理
4. 特点对比
有监督学习 vs. 无监督学习
:- 有监督学习有明确的目标,模型根据已知标签进行训练,适用于分类和回归问题。
- 无监督学习没有标签,模型需自行发现数据的结构,适用于聚类和降维问题。
有监督学习 vs. 强化学习
:- 有监督学习使用静态数据集进行训练,目标是根据输入预测输出。
- 强化学习通过与环境的动态交互进行学习,目标是最大化累计奖励。
无监督学习 vs. 强化学习
:- 无监督学习探索数据的内在结构,没有明确的目标标签。
- 强化学习通过试错过程与环境交互,自行探索最优策略。
特化与泛化:泛化能力——>验证一个模型是否强,得到的机器学习模型对新东西的预测能力
过拟合、欠拟合
解决方案:
1、拓展数据集(数据增强:①有监督②无监督:例如生成对抗网络,随机生成一些新的数据)
2、正则化:在损失函数上加正则化项,①L1②L2:岭回归
3、减少特征的选择①dropout ②集成学习:例如决策树变成随机森林 ③早停:提早结束对神经网络迭代
过拟合与欠拟合
过拟合
(Overfitting)和
欠拟合
(Underfitting)是机器学习中常见的两个问题。
过拟合
:- 定义
:模型在训练数据上表现很好,但在未见过的数据上表现较差。模型过于复杂,捕捉了训练数据中的噪声或异常值,导致泛化能力差。 - 表现
:训练误差很低,但验证或测试误差较高。
- 定义
欠拟合
:- 定义
:模型过于简单,无法捕捉数据中的潜在模式,无论是在训练数据还是未见过的数据上表现都不好。 - 表现
:训练误差和验证或测试误差都较高。
- 定义
过拟合与欠拟合——解决方案
1. 拓展数据集
- 数据增强
:- 有监督数据增强
:通过对训练数据进行变换(例如旋转、缩放、裁剪等),增加数据多样性。例如,图像分类中的数据增强技术。 - 无监督数据增强
:- 生成对抗网络(GANs)
:通过生成对抗网络生成新的样本数据,增加数据集的多样性。 - 随机生成
:例如随机生成数据点或特征组合,来扩展数据集。
- 生成对抗网络(GANs)
- 有监督数据增强
2. 正则化
L1 正则化
(Lasso):- 定义
:在损失函数中加入特征系数绝对值的和作为正则化项,具有特征选择的效果,可以使某些特征的权重变为零。 - 公式
:
- 应用
:适用于需要特征选择的场景。
- 定义
L2 正则化
(Ridge):- 定义
:在损失函数中加入特征系数的平方和作为正则化项,可以防止模型权重过大,使得模型更加平滑。 - 公式
:
- 应用
:适用于模型权重的控制,防止过拟合。
- 定义
3. 减少特征的选择
Dropout
:- 定义
:在训练过程中随机丢弃神经网络中的一部分节点,防止节点之间的复杂共适应关系,从而减轻过拟合。 - 应用
:常用于深度神经网络的训练中。
- 定义
集成学习
:- 随机森林
:通过多个决策树的组合来提高模型的稳定性和泛化能力,减少单棵树的过拟合问题。 - Bagging 和 Boosting
:其他集成学习方法,通过组合多个模型来提高性能和稳定性。
- 随机森林
早停
:- 定义
:在训练过程中监控验证集的表现,如果验证集误差开始增加,则停止训练。这有助于防止过拟合。 - 应用
:适用于深度学习模型的训练过程中,帮助选择最佳的训练轮次。
- 定义
评价指标:
分类
错误率e=1/m*100%,acc=1-e,查准率P:预测的有多少是真的,召回率R:所有为1的样本中,预测对了多少
P-R曲线、ROC曲线(曲线下面积——AUC)、ks曲线、
回归
r^2,均方误差mse