相关说明
这份文档是我为校招面试而准备的,最后并没有用上。许多的内容都来自于互联网和 ChatGPT,我只针对相关知识进行了简单梳理,并不保证全面和严谨。在撰写过程中几乎都是用人话写的,应该还算通俗,如果您觉得有所帮助,可以点个关注,谢谢。
注意:文档最初使用 markdown 写的,导入的时候行内公式没有正确转换,我手动修改了一些,但是仍有不少遗漏,敬请谅解。
特征工程
归一化以及标准化
归一化(Normalization)和标准化(Standardization)是数据预处理的两种常用技术,它们都旨在处理数据特征的尺度问题,以便于进行后续的数据分析或模型训练。
归一化
归一化通常是将数据按比例缩放,使之落入一个小的、特定的区间,常见的是将数据缩放到 [0, 1] 或者 [-1, 1] 的区间。
作用:
- 提高模型的收敛速度;
- 提高模型的精度。
- 原因 (统一数据尺度,加速梯度下降,避免梯度消失和梯度爆炸,正则化效果)
常用的归一化公式:
- Min-Max 归一化:
$ x_{\text{norm}} = \frac{x - x_{\text{min}}}{x_{\text{max}} - x_{\text{min}}} $
- Max 归一化:
$ x_{\text{norm}} = \frac{x}{x_{\text{max}}} $
标准化
标准化通常是去均值、方差缩放,使数据符合标准正态分布,即均值为 0,标准差为 1。
作用:
- 使不同规模或单位的特征可比;
- 符合一些模型对数据分布的假设(例如 PCA、线性回归模型等)。
常用的标准化公式:
- Z-score 标准化:
$ x_{\text{std}} = \frac{x - \mu}{\sigma} $
其中$\mu$ 是均值, $\sigma$ 是标准差。
应用场景
- 归一化通常应用在梯度下降、神经网络等模型中,这些模型对特征的尺度比较敏感;
- 标准化适用于 PCA、逻辑回归、支持向量机等依赖于距离或梯度的模型。
值得注意的是,归一化和标准化的选择需要依据具体的模型和问题场景来定。在某些场合下,原始的、非标准化的数据可能会带来更好的结果。所以,在模型训练时,合适尝试不同的数据预处理方法,以便找到最佳的策略。
过滤方法(Filter Methods)
特征工程(Feature Engineering)包括特征选择和特征提取。“Filter” 通常指的是过滤方法(Filter Methods)。
过滤方法是一种特征选择技术,其主要目标是从原始特征集中选择出一部分最有用的、与目标变量最相关的特征子集。等于说是做了一次数据预处理,跟粗糙集特征选择是一样的。
与包装方法(Wrapper Methods)和嵌入方法(Embedded Methods)不同,过滤方法在特征选择的过程中不涉及到机器学习算法的学习过程。
其特点和步骤大致如下:
1. 与模型独立
不考虑模型的预测能力,而是依据每个特征与目标变量的相关性来进行选择。
相关性的衡量方式有很多种。
2. 评分机制
为每个特征赋予一个分数,这个分数反映了该特征与响应变量之间的关系强度或者相关程度。
- 相关系数:衡量特征与目标变量之间的线性关系;
- 卡方检验:用于衡量特征与类别之间的关系;
- 互信息:衡量两个变量之间的依赖程度,可用于类别型和数值型变量;
3. 选择子集
根据每个特征的分数进行排序,并选取分数最高的 k 个特征作为最终的特征子集。
4. 粗糙集数据挖掘
同样有评分机制,但是并不需要指定特征数,选出维持正域不变的最小特征子集即可。
作用和目的
- 降低计算成本:减少模型训练和预测所需要的计算资源;
- 减轻过拟合:通过消除不相关或弱相关的特征,减少模型的过拟合风险;
- 提高模型性能:在某些情况下,消除噪声特征可能帮助模型提高预测的准确性;
- 增强模型的可解释性:更简洁的模型通常更容易解释和理解。
过滤方法由于计算效率高、实现简单并且不依赖于特定模型,所以在特征选择的初始阶段经常被用来快速筛选特征。然后,你可能还需要利用其他特征选择方法来进一步优化特征集合。
wrapper 包装方法
“Wrapper” 在特征工程中指的是包装方法(Wrapper Methods)。包装方法在特征选择过程中会考虑到模型的性能,进而找到一个理想的特征子集来优化模型的表现。
包装方法的核心思想
- 依赖模型:
- 特征选择的过程是在模型训练的基础上完成的,也就是说模型的性能用来评价特征的好坏。
- 搜索子集:
- 通过搜索特征的子集空间来找到最优的特征子集,即让模型在此子集上获得最佳的性能表现。
常见的包装方法包括
- 递归特征消除(Recursive Feature Elimination, RFE):
- 该方法首先在全部特征上训练模型,然后移除最不重要的特征(例如模型权重最小的特征),再用剩下的特征重新训练模型。这个过程递归进行,直至达到预定的特征数量。
- 前向选择(Forward Selection):
- 开始时,模型没有任何特征。然后逐渐加入提升模型性能最大的特征。这一过程不断重复,直到加入新特征不再显著提升模型性能为止。
- 后向消除(Backward Elimination):
- 与前向选择相反,后向消除开始时使用所有特征,然后逐步移除对模型贡献最小的特征,直到移除任何一个特征都会损害模型性能为止。
包装方法的特点
- 优点:
- 考虑了模型性能,通常能找到更符合模型的特征子集。
- 在某些情况下,比过滤方法能更准确地找到最优的特征子集。
- 缺点:
- 计算成本高。
- 过于依赖所选择的模型。如果选择的模型不佳,那么进行特征选择的结果也可能不理想。
包装方法通常适用于特征数量相对较少的情况,或者当你准备花费更多的时间和计算资源来寻找最优特征子集的时候。
ebedded 方法
在特征工程中,“Embedded”(嵌入法)是一种特征选择方法,它试图在模型训练过程中找到最重要的特征。不同于过滤方法(Filter Methods)和包装方法(Wrapper Methods),嵌入法在学习器训练过程中自动进行特征选择。
嵌入方法(Embedded Methods)
1. 特征选择过程
嵌入方法在模型训练的同时进行特征选择。这类方法通常会在模型训练过程中自动选择一个特征子集,通常依赖于模型自身的属性或参数。
2. 实现机制
- 基于惩罚项:例如在岭回归(Ridge Regression)和套索回归(Lasso Regression)中,通过引入 L2 或 L1 正则项来缩减不重要特征的系数,进行特征选择。
- 基于树模型:例如决策树和随机森林,它们在构建树的过程中自然地进行了特征选择,将重要的特征用于树的顶部分裂,而不重要的特征可能不会用于分裂或者出现在靠近叶子的位置。
3. 优点
- 考虑到了模型和特征选择的互动,通常能获得比过滤方法更优的特征子集。
- 特征选择过程与模型训练过程结合在一起,计算效率较高。
4. 缺点
- 依赖于模型选择的准确性,所选择的特征子集质量高低和所用模型有直接关系。
- 可解释性可能较差,特别是在使用一些复杂的非线性模型时。
正则化
L1 正则化和 L2 正则化是机器学习和统计学中常用的两种正则化技术。正则化是用来防止过拟合,并提高模型的泛化能力的一种方法。
- 定义:
- L1 正则化:
- L1 正则化是指在损失函数中添加参数权重的绝对值之和,公式为 $\lambda \sum |w_i| $ ,其中 $\lambda \sum |w_i|$ 是模型参数, $\lambda$ 是正则化系数。
- L2 正则化:
- L2 正则化是指在损失函数中添加参数权重的平方和,公式为 $ \lambda \sum w_i^2$ ,其中 $\lambda \sum w_i^2$ 是模型参数, $\lambda \sum w_i^2$ 是正则化系数。
- 目的:
- L1 正则化和L2 正则化的主要目的都是通过在损失函数中添加额外的项来控制模型的复杂度,以防止过拟合和提高模型的泛化能力。
- 稀疏性:
- L1 正则化能够产生稀疏解,即得到的参数向量中会有许多零值,这有助于特征选择。
- L2 正则化通常不会产生稀疏解,而是倾向于将参数向量中的所有元素都缩小,但不会将它们准确地设为零。
- 解的唯一性:
- L1 正则化可能得到多个解,因为 L1 正则化的解空间可能在某些方向上是不连续的。
- L2 正则化总是得到唯一解,因为 L2 正则化的解空间是平滑的和连续的。
- 解析解:
- L1 正则化通常没有解析解,需要使用迭代方法来求解。
- L2 正则化在某些情况下可以得到解析解,例如线性回归模型。
- 计算复杂度:
- L1 正则化的计算可能更为复杂,因为它的解可能需要求解非线性的优化问题。
- L2 正则化的计算相对简单,因为它的解可以通过求解线性方程组得到。
- 鲁棒性:
- L1 正则化对于异常值具有更好的鲁棒性,因为它倾向于产生稀疏解,忽略不重要的特征。
- L2 正则化可能对异常值较为敏感,因为它倾向于使用所有的特征。
在实际应用中,选择 L1 正则化还是 L2 正则化通常取决于问题的具体需求和数据的特性。例如,如果特征选择是重要的考虑因素,可能会选择 L1 正则化;如果模型的稳定性和解的唯一性更为重要,可能会选择 L2 正则化。
常用的嵌入方法技术
- Lasso 回归:L1 正则化可以将不重要的特征系数压缩至零,自然地实现了特征的选择。
$ J(\theta) = \text{MSE} + \alpha \sum_{i=1}^{n} |\theta_i| $
- 决策树:通过信息增益或基尼不纯度等指标,在构建树的过程中进行特征选择。
- 正则化网络:例如 Elastic Net,结合了 L1 和 L2 正则化,同时兼顾特征选择和模型的稳健性。
- 支持向量机:使用线性核的 SVM 并引入 L1 正则化,可以在分类的同时进行特征选择。
嵌入方法由于直接考虑到了模型的学习过程,通常在保证模型性能的同时能够获得较为精简的特征子集。不过,最终选择哪种特征选择方法还需结合实际问题的需求和特点来决定。
模型评估
准确率和召回率
准确率(Precision)和召回率(Recall)是分类模型性能评估的两个重要指标,它们分别关注了模型预测正类样本的准确性和完整性。这两个指标常常和其他指标一起用来评估模型在正类预测上的表现。
1. 准确率(Precision)
准确率关注的是模型预测为正类的样本中有多少是真正的正类样本。其计算公式为:
$ \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} $
其中,TP(True Positive)是真正类(模型预测为正类,实际也为正类)的样本数量,FP(False Positive)是假正类(模型预测为正类,实际为负类)的样本数量。
2. 召回率(Recall)
召回率关注的是实际所有正类样本中有多少被模型预测出来了。其计算公式为:
$ \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} $
其中,FN(False Negative)是假负类(模型预测为负类,实际为正类)的样本数量。
区别
- 关注点不同:准确率关注的是预测为正类的样本中实际正类的比例,而召回率关注的是实际正类样本中被正确预测出的比例。
- 权衡关系:在多数情况下,准确率和召回率呈现一种权衡的关系,提高准确率可能会降低召回率,反之亦然。这种权衡关系通常使用 F1 分数(F1 Score)来综合衡量,其计算公式为:
$ F1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} $
- 应用场景:在某些场景下,我们可能更关心准确率,比如在垃圾邮件检测中,我们不希望重要邮件被误判为垃圾邮件。在其他场景下,我们可能更关心召回率,例如在疾病检测中,我们不希望漏检任何一个病患。
P-R 曲线
P-R 曲线(Precision-Recall Curve)是一种用于评估二元分类模型(Binary Classification)性能的工具。该曲线绘制了在不同决策阈值下,模型的准确率(Precision)和召回率(Recall)之间的关系。在一些实际问题(特别是在正负类样本不平衡的情况下)中,P-R 曲线是一个很有用的工具,因为它关注的重点是正类的预测能力。
P-R 曲线与 ROC 曲线的区别
- 关注点不同:P-R 曲线关注的是正类的预测性能,而 ROC 曲线同时考虑了正类和负类的预测性能。
- Y 轴标度不同:P-R 曲线的 Y 轴是 Precision,而 ROC 曲线的 Y 轴是 True Positive Rate(也叫做 Recall 或敏感性)。
- 选择依据:在正负样本严重不均衡的情况下,P-R 曲线通常更能反映模型对正类样本预测的真实情况。
参数调优
参数调优(Hyperparameter Tuning)是机器学习中一个关键的步骤,它涉及到在给定的搜索空间中寻找模型表现最优的参数配置。对模型的参数进行优化可以显著提高模型的预测能力。下面简单介绍几种常用的参数调优方法:网格搜索、随机搜索以及贝叶斯优化。
1. 网格搜索(Grid Search)(穷举法)
网格搜索是一种穷举搜索方法。它通过预先定义好的参数范围和取值,生成参数组合的“网格”,然后遍历这些组合来寻找最优参数。
- 优点:理论上能找到最优参数组合(至少在你设定的范围和步长内)。
- 缺点:计算量大,尤其是当参数空间较大或模型较复杂时。
2. 随机搜索(Random Search)(网格中抽样)
不同于网格搜索,随机搜索并不尝试所有可能的参数组合,而是在参数空间中随机抽样,根据这些样本来找到最优参数。
- 优点:比网格搜索更高效,尤其是在参数空间较大时;并且在实践中,随机搜索通常能够在相对较少的迭代次数中找到不错的参数组合。
- 缺点:没有网格搜索精确,可能错过某些参数组合。
3. 贝叶斯优化(Bayesian Optimization)
贝叶斯优化使用概率模型(通常是高斯过程)来预测在哪里可以找到有效的参数组合,并据此进行下一步的搜索,因此,它在每一步迭代时都会考虑到之前的搜索结果。
- 优点:相比于网格搜索和随机搜索,贝叶斯优化通常能更快地找到最优参数组合;并且它可以更有效地利用有限的资源。
- 缺点:建立和调优概率模型可能在某些情况下比直接进行参数搜索更为复杂和计算密集。
过拟合与欠拟合
欠拟合和过拟合是机器学习中常见的两种模型表现问题。它们描述了模型与数据之间的关系,以及模型对新数据的泛化能力。
欠拟合(Underfitting)
概念
当模型过于简单,无法捕捉到数据中的模式和关系时,我们称之为欠拟合。一个欠拟合的模型在训练数据和测试数据上的表现都会较差。
如何避免
- 使用更复杂的模型:例如,对于线性回归,可以尝试多项式回归。
- 增加特征:引入更多的特征,或者构建特征的组合。
- 减少正则化:如果使用了正则化技术(如 L1 或 L2 正则化),尝试减小正则化系数。
过拟合(Overfitting)
概念
当模型过于复杂,不仅学习了数据中的真实模式,还学习了数据中的噪声,我们称之为过拟合。一个过拟合的模型在训练数据上的表现很好,但在测试数据上的表现较差,因为它对新的、未见过的数据泛化能力较差。
如何避免
- 获取更多的数据:更多的数据可以帮助模型泛化得更好。
- 使用简化的模型:例如,从神经网络中减少隐藏层或隐藏单元。
- 添加正则化:如 L1 或 L2 正则化,这可以约束模型的复杂性。
- 特征选择:减少不相关或冗余的特征。
- 早停:对于某些迭代的模型(如神经网络),当验证误差停止减少或开始增加时,停止训练。
- 使用集成方法:如 Bagging 和 Boosting,通过组合多个模型的预测来减少过拟合。
- 交叉验证:使用交叉验证选择模型的超参数,以确保模型在多个子集上的表现都较好。
- 剪枝:对于决策树等模型,减少模型的深度或叶节点数量。
SVM
支持向量机 (SVM)
基本概念
支持向量机(Support Vector Machine,SVM)是一种用于分类和回归的监督学习算法。在分类问题中,SVM 试图找到一个超平面,最大化两个类别之间的边缘(margin),即数据点到超平面的最小距离。
公式推导
基本的线性 SVM 分类器求解的问题可以表述为以下优化问题:
$ \min_{\mathbf{w}, b} \frac{1}{2}|\mathbf{w}|^2\ s.t.\ y_i(\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1, \quad i = 1, \ldots, N $
这里:
- $\lambda \sum w_i^2$ 是超平面的法向量
- $b$ 是超平面的偏置项
- $ \lambda \sum w_i^2$ 是数据点
- $y_i$ 是数据点对应的类别标签(通常是 +1 或 -1)
对偶和 KKT 条件
对偶问题是指从原始优化问题(Primal Problem)出发,通过一些数学变换得到的另一个问题。对于 SVM 来说,我们可以用拉格朗日乘子法把原始问题转化为它的对偶问题,这使得问题的求解更加高效,并允许我们用核技巧(Kernel trick)来处理非线性问题。
KKT(Karush-Kuhn-Tucker)条件提供了一个检查某个点是否是优化问题解的必要和充分条件。在 SVM 中,KKT 条件允许我们确定一个数据点是否是支持向量。
优劣势
优点
- 泛化能力强:在很多实际问题中,SVM 具有较好的泛化性能。
- 处理非线性问题:通过核技巧,SVM 可以处理非线性问题。
- 全局最优解:SVM 的解是全局最优的,而不是局部最优。
- 稀疏性:只有支持向量会参与到最终模型的决策中。
缺点
- 核函数选择:正确选择或构造核函数可能比较困难。
- 大规模数据:在大规模数据集上,SVM 的计算复杂度较高,训练过程可能比较耗时。
- 多分类问题:标准的 SVM 只适用于二分类问题。虽然可以通过一些策略(例如“一对一”或“一对其余”)来解决多分类问题,但这些策略在某些场景下可能不是很有效。
注意:以上内容仅为概述性的讨论。具体的公式推导、对偶问题、KKT 条件等涉及较深入的数学理论和技术细节,您可能需要参考相关教材或研究文章以获取更深入的理解和洞察。
决策树
1. ID3 算法
最大信息增益公式
信息增益(Information Gain, IG)表示得知特征 $X$ 的信息而使得类 $Y$ 的信息的不确定性减少的程度。计算公式如下:
$ IG(Y|X) = H(Y) - H(Y|X) $
$ 信息增益=Y 熵-X 下 Y 条件熵 $
其中, $H(Y)$ 是数据集 $D$ 的熵(Entropy), 计算公式为:
$ H(Y) = -\sum_{i=1}^{m} p(y_i) \log_2 p(y_i) $
而条件熵 $X$ 表示在已知随机变量 $X$ 的条件下随机变量 $Y$ 的不确定性,计算公式为:
$ H(Y|X) = \sum_{i=1}^{n} p(x_i) H(Y|x_i) $
2. C4.5 算法
最大信息增益率公式
C4.5 算法使用信息增益率(Gain Ratio)来选择分裂特征,计算公式如下:
$ GR(Y|X) = \frac{IG(Y|X)}{IV(X)} $
其中,信息增益 $G(X|Y)$ 与 ID3 中的定义相同,而固有值 $IV(X)$ 定义为:
$ IV(X) = -\sum_{i=1}^{n} p(x_i) \log_2 p(x_i) $
信息增益率更好的原因
- 偏向处理:
- 信息增益倾向于选择具有更多值的属性,因为这样的属性能更好地区分数据,但可能导致过拟合。
- 信息增益率在信息增益的基础上除以一个称为属性固有值(Intrinsic Value)的值,从而减轻了对具有多个值的属性的偏见。
- 模型泛化能力:
- 通过减轻对具有更多类别的特征的偏见,信息增益率可能会提高模型的泛化能力,使模型在未见过的数据上表现得更好。
- 特征选择的准确性:
- 信息增益率通过固有值的归一化来提供更准确的特征选择,从而可能会导致建立一个更简单和更有效的模型。
- 处理连续和离散属性:
- 在处理连续属性时,信息增益率可能提供更好的特征选择,因为它能减轻信息增益对高度区分的特征的偏好。
3. CART 算法
基尼指数公式
CART 使用基尼指数(Gini Index)来选择分裂点,基尼指数反映了从数据集$D$中随机抽取两个样本,其类标记不一致的概率,计算公式为:
$ Gini(D) = 1 - \sum_{i=1}^{m} p^2(y_i) $
对于二分类问题,该公式可以简化为:
$ Gini(D) = 2p(1-p) $
其中,$p$是正类样本的比例。
回归树步骤
对于回归树,CART 会尝试找到使得划分后的子集内的样本目标值的方差最小的特征进行分裂。
- 遍历所有的特征及其可能的取值,找到最佳的特征及其取值作为分裂依据。
- 使用选定的特征和取值进行分裂,生成子节点。
- 对子节点递归调用以上步骤,生成决策树。
三种树的区别
- ID3:使用信息增益来选择特征,可能倾向于选择取值较多的特征。
- C4.5:使用信息增益率来选择特征,修正了 ID3 的缺点,计算相对复杂。
- CART:可以用于分类(使用基尼指数)和回归(使用均方误差)问题,生成的是二叉树。
现有的算法几乎都使用 C4.5 和 CART。在 sklearn 中,两种算法除了分裂标准不同外,其余都类似,都生成二叉树。
集成学习
GBDT (Gradient Boosting Decision Tree)
基本概念
GBDT 是一种迭代的决策树算法,它通过拟合残差来生成每一棵树,将所有树的结果累加起来作为最终预测输出。
残差
- 残差的定义:
- 数学上,如果用 $y $ 表示实际的观测值,用 $\hat{y}$ 表示当前模型的预测值,那么残差 $r$ 可以定义为 $\hat{y}$ 。代表实际观测值与当前模型的预测值之间的差异。
- 残差的计算和利用:
- 在每一轮的迭代中,GBDT 都会计算当前模型对每个训练样本的残差。然后,它会构建一个新的决策树来拟合这些残差,而不是直接拟合实际的观测值。
- 通过这种方式,每个新的决策树都试图纠正前一个模型的错误。
- 模型的更新:
- 在构建了新的决策树之后,GBDT 会将其加入到当前的模型中,以更新模型的预测,引入了学习率来防止过拟合。
- 梯度的角色:
- 实际上,残差是损失函数相对于模型预测的负梯度。在每一轮的迭代中,通过计算和拟合残差,GBDT 实际上是在执行梯度下降算法来最小化损失函数。
- 损失函数的选择:
- GBDT 可以用于回归和分类问题,通过选择不同的损失函数,比如平方损失、对数损失等,可以使 GBDT 适用于不同类型的问题。残差的计算方式会根据所选择的损失函数而有所不同。
主要步骤
- 初始化:用一个常数值来预测,通常是目标变量的均值。
- 迭代:在每次迭代中:
- 计算残差(真实值与当前模型的预测值之差)。
- 使用残差作为目标变量 (这里有点难理解,其实是不用原来的决策类了,而是用残差当作的新的决策类来进行训练) 训练一个基学习器(通常是一个决策树)。
- 将基学习器的预测结果乘以一个步长(学习率)加到模型中。
- 输出:所有树的预测结果相加,得到最终的预测值。
特点
- 适用于回归和分类问题。
- 能处理混合类型的特征。
- 有较好的解释性。
XGBoost (Extreme Gradient Boosting)
基本概念
XGBoost 也是一种基于树的集成模型,它基于 GBDT,并在速度和性能上做了很多优化和改进。
优化与改进
- 正则化:在目标函数中加入了正则化项,用来控制模型的复杂度,防止过拟合。
- 优化目标函数:使用了一阶和二阶梯度信息,在寻找最佳分裂点时考虑到了增益的一阶和二阶导数。
- 稀疏感知算法:能自动处理稀疏数据,也能自定义缺失值的处理方式。
- 列抽样:通过列抽样来防止过拟合,增强模型的泛化能力。
- 并行化:在特征划分上进行并行计算,大大提升了速度。
特点
- 在精度上通常优于其他算法。
- 在使用上提供了大量的可调参数。
- 具有很强的灵活性,能自定义优化目标和评价准则。
- 可以高效地处理大规模数据集。
优化
平方差损失
概念
平方差损失(Mean Squared Error, MSE)常用于回归问题,计算模型预测值与真实值之间的平方差的平均值。表达式为:
$ MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2 $
其中, $y_i$ 是真实值,$\hat{y}$ 是模型的预测值,n 是样本数量。
梯度下降公式推导
对于参数 $\theta$ 的梯度,可以通过对 $\theta$ 求导来获得:
$ \frac{\partial MSE}{\partial \theta} = \frac{-2}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)\frac{\partial \hat{y}_i}{\partial \theta} $
在具体的模型(如线性回归模型)中,$\hat{y}_i$ 会是 $\theta$ 的具体函数形式,从而可以进一步推导梯度表达式。
凸函数
概念
凸函数是一种在整个定义域内上凸的函数。对于定义在某个凸集 C 上的函数 f,如果对于任意的 $x_1, x_2 \in C$ 和任意的 $ \alpha \in [0,1]$,都有:
$ f(\alpha x_1 + (1-\alpha)x_2) \leq \alpha f(x_1) + (1-\alpha)f(x_2) $
则称函数 $f$ 是凸函数。凸函数的一个重要性质是:局部最小值也是全局最小值。
梯度下降
梯度下降是一种优化算法,主要用于寻找函数的局部最小值。基本思想是在每一步迭代中,找到函数在当前点的梯度方向,并沿着梯度方向的负方向移动一定的步长,以此来更新参数值:
$ \theta_{t+1} = \theta_{t} - \alpha \nabla f(\theta_t) $
其中,$\theta$ 是需要优化的参数,$\alpha$ 是学习率,$\nabla f(\theta_t)$ 是 $f$ 在 $\theta_t$ 处的梯度。
牛顿法
牛顿法是一种在实数域和复数域上近似求解方程的迭代方法。在优化问题中,牛顿法主要用于求解无约束优化问题的极值。牛顿法更新参数的公式为:
$ \theta_{t+1} = \theta_{t} - \left[ Hf(\theta_t) \right]^{-1} \nabla f(\theta_t) $
其中,$\theta$ 是需要优化的参数,
$ Hf(\theta_t) $
是$f$在 $\theta_t$ 处的海森矩阵(Hessian Matrix,即梯度的导数矩阵)。
总结来说,平方差损失、凸函数、梯度下降、牛顿法这些概念和方法在机器学习的模型训练过程中经常被用到,分别在损失函数定义、函数性质探讨、参数优化等方面发挥着重要作用。
正则化和稀疏性 (重点内容)
正则化(Regularization)
概念
正则化是机器学习模型为了防止过拟合而在损失函数中添加的一个额外项,通常是模型参数的函数。加入正则化项后,模型在训练过程中不仅要最小化原来的损失函数,还要最小化正则化项,从而防止模型复杂度过高。
主要形式
- L1 正则化:模型参数权重绝对值之和,表达式形式: $ L_1 = \lambda \sum_{i=1}^{n} |\theta_i| $
- L2 正则化:模型参数权重平方和的平方根,表达式形式: $ L_2 = \lambda \sum_{i=1}^{n} \theta_i^2 $
其中,$\theta$ 是模型参数,$\lambda$ 是正则化强度参数。
作用
- 防止过拟合:通过约束模型参数的大小,防止模型过于复杂。
- 模型选择:在一定程度上起到了特征选择的作用(特别是 L1 正则化)。
稀疏性(Sparsity)
概念
稀疏性在机器学习中通常是指模型的一部分参数或者特征为零,即模型或数据中有大量的零元素。
与正则化的关系
- L1 正则化与稀疏性:L1 正则化倾向于产生稀疏解,即模型的一部分参数会被压缩为 0,起到了特征选择的效果。
- L2 正则化与稀疏性:L2 正则化倾向于让模型的参数接近 0 但不为 0,得到的模型一般不是稀疏的。
稀疏性的好处
- 计算效率:稀疏矩阵的存储和运算通常比密集矩阵更加高效。
- 解释性:稀疏模型通常更容易解释,因为模型只依赖于一部分特征。
- 泛化能力:通过减少模型依赖的特征数量,可能提高模型的泛化能力。
深度学习
CNN(卷积神经网络)
基本概念
- 卷积层:通过卷积操作进行特征提取。卷积核(或滤波器)在输入数据上滑动,通过卷积操作提取空间特征。
- 激活层:通常在卷积层之后,使用非线性激活函数,如 ReLU,增强网络的表达能力。
- 池化层:进行下采样,减小数据的空间尺寸,以减少计算量,并增强特征的鲁棒性。
假设我们有一个 4x4 的特征图如下:
|
|
我们使用一个 2x2 的池化窗口和步长为 2 的最大池化操作。在这种情况下,我们将 4x4 的特征图分为四个 2x2 的区域,并从每个区域中选取最大值。步长为 2 意味着池化窗口每次移动两个单位。
- 第一个 2x2 区域(左上角)的最大值是 6
- 第二个 2x2 区域(右上角)的最大值是 8
- 第三个 2x2 区域(左下角)的最大值是 14
- 第四个 2x2 区域(右下角)的最大值是 16
因此,经过最大池化操作后,我们得到一个新的 2x2 的特征图:
|
|
通过这个操作,我们保留了每个区域的最大值,同时将特征图的尺寸减小了。
- 全连接层:将学到的空间特征用于最终的分类或回归任务。
特点
- 适合处理图像数据,能够有效提取图像的局部特征。
- 权值共享:减少模型参数,缓解过拟合。
- 空间不变性:通过权值共享和池化层,模型能够对输入数据的微小变化保持不变。
RNN(循环神经网络)
基本概念
- 循环结构:RNN 通过循环结构实现序列数据的时间依赖捕捉。
- 隐藏状态:在每个时间步,RNN 通过当前输入和前一时间步的隐藏状态来更新当前的隐藏状态。
- 时间展开:虽然 RNN 的结构是循环的,但在实际计算和分析中,通常将其在时间上展开以方便理解和计算。
特点
- 适合处理序列数据,如文本、时间序列数据等。
- 能够理论上捕捉时间序列中的长期依赖关系。
- 容易受到梯度消失或梯度爆炸问题的困扰。
变体
- LSTM(长短时记忆网络):通过引入门机制和单元状态来缓解梯度消失问题,能够更好地捕捉序列中的长期依赖关系。
- GRU(门控循环单元):类似 LSTM 但结构更简单,计算参数更少。
总结
- CNN 主要用于处理具有空间结构的数据(如图像)。
- RNN 主要用于处理具有时间依赖关系的序列数据(如文本)。
这两种网络结构在深度学习领域有着广泛的应用,并且在图像识别、自然语言处理等任务上取得了显著的成功。
Attention Mechanism
Attention Mechanism 的核心思想在于赋予模型对输入数据不同部分关注(或称注意)的能力。在自然语言处理中,尤其在序列到序列的模型中,Attention 机制帮助模型在不同阶段关注输入序列的不同部分,从而更好地解码出目标序列。
Self-Attention
Self-Attention 是 Attention 机制的一种变体,它允许模型在同一序列内部的不同位置之间进行关注。不同于传统的 Attention 机制将关注点放在一个不同的序列上(如在翻译任务中,对源序列进行关注),Self-Attention 则是在同一序列的不同位置上计算注意力权重。
计算步骤
- 计算查询(Query)、键(Key)和值(Value):对于输入序列中的每个位置,我们都会得到一个 Query、一个 Key 和一个 Value,它们通常是通过不同的参数化可学习的线性变换得到的。
$ Q = XW_Q, K = XW_K, V = XW_V $
其中,$X$ 是输入序列,$W_Q, W_K, W_V$ 是对应的权重矩阵。
- 计算注意力权重:用 Query 和 Key 的点积计算注意力分数,再通过 softmax 函数获取权重。
$ AttentionScores = softmax\left(\frac{QK^T}{\sqrt{d_k}}\right) $
这里,$d_k$ 是 Key 的维度,除以 $\sqrt{d_k}$ 是为了缓解梯度消失或爆炸的问题。
- 计算加权和:利用得到的注意力权重和 Value 的线性组合得到输出。
$ Z = AttentionScores \times V $
特点
- 自适应关注:Self-Attention 允许模型自适应地关注输入序列中不同位置的信息,有助于捕捉序列内部的依赖关系。
- 并行计算:不同于 RNN 需要顺序计算序列的每一个位置,Self-Attention 可以并行计算序列所有位置的输出,从而在计算上更加高效。
- 多头注意力:在实际应用中,我们通常使用多头注意力(Multi-Head Attention)来捕捉序列中的多种依赖关系。不同的注意力头可以学习到序列中不同层次的信息。
应用:Transformer 模型
Self-Attention 机制在 Transformer 模型中得到了广泛应用。Transformer 模型基于 Self-Attention 来处理序列数据,摒弃了传统的 RNN 结构,充分利用 Self-Attention 的并行性和强大的表达能力,成为了现代自然语言处理模型(例如 BERT、GPT 等)的核心组成部分。
简历相关
论文简介
论文 1:主要基于课题组内部的相关族算法进行了改进,引入了正域覆盖度的概念,提高算法抗噪声性能,且不牺牲算法效率。
论文 2:首次提出了专为单调有序数据设计的数据粒化策略,并依此策略设计了高效的单调特征选择和分类算法,相比传统优势粗糙集的特征选择算法提升了数百倍效率。
论文 3:首次将模糊数学引入单调有序数据中,增强了论文 2 中算法处理连续值属性的能力。还将并行计算和样本抽样引入了算法中,进一步提升计算效率。
AI 框架简介
技术手段:nodejs、Juia、HTML、mongodb
nodejs
主要用于前端脚本的编写,实现页面逻辑。优势在于语法简单,容易实现,可跨平台等。
HTML
主要用于前端页面的编写,实现界面呈现和用户交互等,配合 nodejs 使用。
Julia
出于对高性能计算的考虑,选择 Julia 作为后端框架,使用 HTTP、JSON、MLBase 等库辅助编写。
mongodb
非关系型数据库,在未来有数据存储需求后考虑引入。
PCA 算法
主成分分析(Principal Component Analysis, PCA)是一种广泛应用的线性降维技术,旨在从数据中找出最重要的特征并降低数据的维度,以减小计算成本和提高模型性能。以下是 PCA 算法的主要步骤和特点:
- 中心化数据:
- 首先,计算每个特征的均值,并将数据中心化,即从每个特征值中减去该特征的均值。
- 数据规模 $n\times m$
- 计算协方差矩阵:
- 计算数据的协方差矩阵。协方差矩阵能够捕捉数据特征之间的相关性。
- $m\times m$
- 求协方差矩阵的特征值和特征向量:
- 计算协方差矩阵的特征值和特征向量。特征向量表示数据的主成分方向,而特征值表示这些方向上的方差大小。
- 特征向量 $m\times 1$, 特征值$1$,特征值和特征向量可能有多个,但都一一对应。
- 排序和选择主成分:
- 根据特征值的大小对特征值和特征向量进行排序,并选择前$k$个最大的特征值对应的特征向量,其中$k$是你想要降低到的维度。
- 每个特征向量 $m\times 1$,原始数据 $n\times m$,因此每个特征向量可以得到一个 $[n\times m] \times [m \times 1]$ 的 $n \times 1$向量。
- 投影数据:
- 将原始数据投影到选定的主成分上,得到降维后的数据。
- $k$个特征值得到了$k$个$n\times 1$向量,组合为$n\times k$的矩阵,降维完成。
特点:
- 无监督:
- PCA 是一种无监督的降维技术,不需要任何标签信息,只依赖于数据的结构。
- 线性降维:
- PCA 只能捕捉数据的线性结构,如果数据具有非线性结构,PCA 可能不是最好的选择。
- 方差最大化:
- PCA 试图找到能够最大化数据方差的主成分,这意味着它倾向于保留数据中的主要结构和模式。
- 降噪:
- 通过保留数据中的主要成分并忽略较小的成分,PCA 也可以用于降噪。
- 可视化:
- PCA 可以用于将高维数据降低到 2 或 3 维,以便于可视化。
缺点:
使得原本可解释的数据失去了可解释性。