机器学习&人工智能

归纳

​ 归纳推理是一种由个别到一般的推理。


演绎

​ 演绎推理,就是从一般性的前提出发,通过推导即“演绎”,得出具体陈述或个别结论的过程。


归一化

​ 数据归一化处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据归一化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。


常见方法

​ Min-Max归一化:x* = ( x − min ) / ( max − min )

​ Z-score归一化:x* = ( x − μ ) / σ (μ为所有样本数据的均值,σ为所有样本数据的标准差。)

​ Z-scores:x* = 1 / ( 1 + x )


泛化

​ 是指机器学习算法对新鲜样本的适应能力。 学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。


数据集划分

留出法

​ 直接将数据集D划分为两个互斥的集合,一个作为训练集S,另一个作为测试集 T,即 D=S∪T,S∩T=∅。

交叉验证法

​ 先将数据集D划分为k个大小相似的互斥子集,每次采用k−1个子集的并集作为训练集,剩下的那个子集作为测试集。进行k次训练和测试,最终返回k个测试结果的均值。又称为“k折交叉验证”。

留一法

​ 可以看做是交叉验证法的一个特例。假设数据集 D中有 m 个样例,我们将其划分为 m 个互斥的集合进行交叉验证,这种交叉验证方法就被成为留一法。在留一法中,我们每次使用 m-1 个样例进行训练,1 个样例进行测试。这样用训练出的模型和直接使用全部数据集 D 训练出的模型非常接近,但当数据量比较大时,例如数据集包含 100 万个样例,使用留一法意味着我们要训练 100 万个模型,这显然是不现实的。

自助法

​ 留出法每次从数据集 D 中抽取一个样本加入数据集 D′ 中,然后再将该样本放回到原数据集 D 中,即 D 中的样本可以被重复抽取。这样,D 中的一部分样本会被多次抽到,而另一部分样本从未被抽到。假设抽取 m 次,则在 m 次抽样中都没有被抽到的概率为 (1−1/m)m,


模型评估方法

P-R曲线

​ 在很多情形下,我们可根据模型的预测结果对样例进行排序,排在前面的是模型认为"最可能"是正例的样本,排在最后的则是模型认为"最不可能"是正例的样本。按此顺序逐个把样本作为正例进行预测,则每次可以计算出当前的精确率和召回率。以精确率为纵轴、召回率为横轴作图 ,就得到了精确率-召回率(Precision-Recall)曲线,简称"P-R曲线",显示该曲线的图称为"P-R图",图1给出了一个示意图。

img

​ 如果一个机器的P-R曲线被另一个机器的P-R曲线完全包住,则后者的性能优于前者,例如上面的黑色曲线和黄色曲线所代表的机器优于蓝色曲线代表的机器。

​ 通过平衡点可以判断黑色与黄色的机器性能,平衡点是 P=R 时的取值,如果这个值较大,则该机器的性能较好。

P-R曲线的优缺点
优点

​ 适用于不平衡数据集:P-R曲线更能反映在不平衡数据中模型性能的表现,更关注正类别的性能。

​ 易于解释:P-R曲线的含义直观,精确度和召回率都是直接可理解的指标。

缺点

​ 对阈值敏感:P-R曲线的性能受阈值选择的影响,不同阈值下曲线会有不同的形状。

​ 不适用于多类别分类:P-R曲线主要用于二分类问题,对于多类别问题通常需要其他评估方法。

​ 无法比较不同模型:P-R曲线通常用于单个模型的性能评估,而无法用于比较不同模型之间的性能。

ROC曲线

​ ROC曲线通常用于评估二元分类器,用于可视化分类器在不同阈值下的性能表现。该曲线的两个重要指标:真正例率(TPR)和假正例率(FPR)。TPR指的是被正确分类为正类的正类样本的比例。FPR指的是被错误的分类为正类的负类样本的比例。ROC曲线的目标是在各种不同阈值下,找到一个平衡点,使FPR尽可能低,而TPR尽可能高。ROC曲线的横轴是FPR假正例率,纵轴是TPR真正例率。

img

​ 当上图中的ROC曲线越靠拢(0,1)点,越偏离45度对角线越好。

  1. 可以利用ROC曲线对不同模型进行比较,如果一个模型的ROC曲线被另一个模型的曲线完全包住,则可断言后者的性能由于前者
  2. ROC曲线下方的面积(AUC)可以用来作为评估模型模型性能的指标.如当两个模型的ROC曲线发生交叉,则很难说哪一个模型更好,这时候可以用AUC来作为一个比较合理的判据

AUC

​ AUC表示ROC曲线下的面积,用于衡量模型的泛化性能,分类效果的好坏。AUC表示正例排在负例前面的概率。通过计算ROC曲线下的面积,可以得到一个在0到1之间的值,它表示分类器在不同工作点下对真正例率(TPR)和假正例率(FPR)的权衡。AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。

  • ROC曲线:如果我们的测试数据集类别分布大致均衡的时候我们可以用ROC曲线
  • PR曲线:当数据集类别分布非常不均衡的时候采用PR曲线

混淆矩阵

img

True Positive(TP):真正类。样本的真实类别是正类,并且模型识别的结果也是正类。

False Negative(FN):假负类。样本的真实类别是正类,但是模型将其识别为负类。

False Positive(FP):假正类。样本的真实类别是负类,但是模型将其识别为正类。

True Negative(TN):真负类。样本的真实类别是负类,并且模型将其识别为负类。

精确率

\[\text{Accuracy}=\frac{\text{TP}+\text{TN}}{\text{TP}+\text{FN}+\text{FP}+\text{TN}} \]

正确率、准确率、查准率

\[P = \frac{TP}{TP + FP} \]

召回率、查全率

\[R = \frac{TP}{TP + FN} \]

查准率和查全率是一对矛盾的指标。一般来说,查准率高时,查全率往往偏低;查全率高时,查准率往往偏低。

F1分数:

\[F_1 = 2 \cdot \frac{precision \cdot recall}{precision + recall} \]


余弦相似度

​ 余弦相似度是一种用于度量两个向量之间相似度的指标,常用于文本相似度计算、推荐系统等领域。它衡量的是两个向量之间的夹角的余弦值,数值范围在-11之间,越接近1表示越相似,越接近-1表示越不相似,0表示无关系。

\[\text{similarity} = \cos(\alpha) = \frac{\mathbf{A} \cdot \mathbf{B}}{\|\mathbf{A}\| \|\mathbf{B}\|} = \frac{\sum_{i = 1}^{n} A_{i} B_{i}}{\sqrt{\sum_{i = 1}^{n} A_{i}^{2}} \sqrt{\sum_{i = 1}^{n} B_{i}^{2}}} \]


分类回归

分类

​ 分类的本质是根据输入数据的特征将其划分到预定义的类别中。

​ 分类问题的输出是有限的、离散的类别标签。

回归

​ 回归的本质是寻找自变量和因变量之间的关系,以便能够预测新的、未知的数据点的输出值。例如,根据房屋的面积、位置等特征预测其价格。

​ 回归问题的输出是连续的数值

线性回归

找到一条直线或超平面尽可能地接近所有的训练数据点(就是用线性方程来拟合数据)

\[\hat{y} = \mathbf{w}^\top \mathbf{x} + b. \]

对数几率回归

对数几率回归的工作原理是将线性回归的输出映射到0和1之间的概率值。它使用对数几率函数(也称为逻辑函数)来估计一个事件发生的概率。对数几率函数是S形曲线,它的输出始终位于0和1之间,这使得它非常适合用于概率建模。

​ 在多项式对数几率回归中,模型不是为每个样本估计对数几率,而是为每个输出类别估计对数几率。然后,这些对数几率将被传递到softmax函数中,由softmax函数将这些对数几率转换为每个类别的概率,概率和为1.最后选择概率最大的类别作为输出类别。

img $$ y = \frac{1}{1 + e^{-w^T x + b}} $$ ![单位阶跃函数与对数几率函数(来源周志华《机器学习》)](https://i-blog.csdnimg.cn/blog_migrate/89a6cdacf5f58765ea8d7ac78156c962.png)

损失函数:对数损失

\[L = -y \log \hat{y} + (1 - y) \log (1 - \hat{y}) \]

​ 真实值 是有 0/1 两种情况,而推测值由于借助对数几率函数,其输出是介于0~1之间连续概率值。这个损失函数其实在每次计算时永远都只有一项在发挥作用,转换为分段函数如下:

\[L = \begin{cases} - \log(\hat{y}) & \text{if } y = 1 \\ - \log(1 - \hat{y}) & \text{if } y = 0 \end{cases} \]

​ 所以该损失函数可以达到这样的效果:当真实值 y为1时,输出值 y越接近1,则 L越小,当真实值 y为 0 时,输出值 y尖 越接近于0,则 L越小。


多分类问题拆分策略

假设样本数据中有N个类别。

1. 一对一拆分(OvO)

  • 基本思想:
    将N个类别两两匹配,每次使用2个类别的数据训练分类器,从而产生N(N−1)/2个二分类器。使用时,将样本提交给所有的分类器,得到了N(N−1)/2个结果,最终属于哪个类别通过投票产生。

  • 分类器个数:

    ​ N(N−1)/2个

  • 特点:

    ​ 分类器较多,且每个分类器在训练时只使用了2个类别的样本数据。

2. 一对多拆分(OvR)

  • 基本思想:
    每次将一个类作为样例的正例,其他所有均作为反例,得到N个分类器。也就是说,每个分类器能识别一个固定类别。使用时,若有一个分类器为正类,则就为该类别;若有多个分类器为正类,则选择置信度最高的分类器识别的类别。

  • 分类器个数:

    ​ N个

  • 特点:

    ​ 相比OvO分类器较少,且每个分类器在训练时使用了所有样本数据。

3. 多对多拆分(MvM)

  • 基本思想:

    ​ 每次将若干个类作为正例、若干个类作为反例。显然OvO、OvR都是其特例。MvM的正、反类设计必须有特殊的设计,常用的一种技术:”纠错输出码”,简称ECOC。

    ​ ECOC是将编码的思想引入类别的划分,并可能在解码过程中具有容错性。ECOC工作过程主要分为两步:

    ​ 1.对N个类做M次划分,每次划分将一部分作为正类,一部分划分反类,从而形成一个二分类训练集。一共产生M个训练集,训练出M个分类器。

    ​ 2.M个分类器分别对测试样本进行预测,这些预测标记组成一个编码。将这个预测编码与每个类各自的编码进行比较,返回其中距离最小的类别作为最终结果。

    img
  • 分类器个数:

    ​ M个

  • 特点:

    ​ 对同一个学习任务来说,ECOC编码越长,纠错能力越强。然而编码越长所需要的训练的分类器越多,计算存储开销都会增大;另一方面对于有限类别码长超过一定范围就没有意义了。对于同等长度的编码,理论上来说,任务两个类别之间的编码距离越远,则纠错能力越强。


决策树

  • 信息熵

​ 信息熵实际反应的是一个信息的不确定度。在一个随机事件中,某个事件发生的不确定度越大,熵也就越大

\[H(X)=-\sum_{i = 1}^{n} p_i \log p_i \]

  • 信息增益(ID3算法)

    \[\text{信息增益(节点 = 天气)} = H(D) - H_{\text{split}}(D) = 1 - 0.333 = 0.667 \]

    • 选出信息增益最大的。
  • 优点:
    
    - 构建速度快;
    - 易于理解和实现;
    - 对训练数据的要求不高,不需要数据标准化等预处理。
    
    缺点:
    
    - 在特征选择时偏好具有较多值的特征。在选择最优分裂特征属性时,偏好于多取值的特征属性。在选择最优分裂特征属性时,某特征属性的取值越多,分裂后的数据子集就越多,子集中类别相对而言就可能更少,数据“纯度”更高,信息增益更大,所以更有可能被选为当前分裂节点的特征属性。
    - 只能处理离散型特征,不能处理连续型特征属性。
    - 没有树剪枝过程,容易发生过拟合现象。
    
  • 信息增益率(C4.5算法)

    \[\text{固有值 (SplitInfo)} = -\sum_{v = 1}^{V} \frac{\vert D_v \vert}{\vert D \vert} \log_2 \frac{\vert D_v \vert}{\vert D \vert} \]

    • 先从候选划分特征中找出信息增益高于平均水平的属性。
    • 再从中选出增益率最高的。
  • 优点:
    
    - 改进了ID3的特征选择偏差问题;
    - 能够处理连续型特征;
    - 提供了缺失值处理机制;
    - 包含了剪枝功能以减少过拟合的风险。
    
    缺点:
    
    - 相对于ID3,算法实现更加复杂;
    - 处理大规模数据集时效率较低。
    
  • 基尼指数(CART算法)

    基尼指数,与熵一样,基尼指数越小则数据集不确定性越小,代表着数据集纯度越高。

    \[G(D)=\sum_{k = 1}^{K} p_k (1 - p_k)=(0.5^2 + 0.5^2)=0.5 \]

​ 选择使得划分后基尼指数最小的属性


感知机优缺点

​ 优点:简单、易于实现、运行速度快

​ 缺点:仅处理线性可分问题,面对多类别多分类问题需要多个分类器导致训练成本增加


过拟合和欠拟合

  • 过:过拟合发生在模型对训练数据学习过度,记住了训练数据中的噪声和异常值,而忽略了数据的底层分布关系。模型的复杂度过高,以致于无法泛化到新数据。(在训练数据上表现良好(得分高),但在 测试数据上表现差)
  1. 添加噪声:数据原本有噪声,添加噪声可能可以抵消原本的噪声的影响
  2. early stopping:观察loss的曲线变化情况,训练测试验证集曲线平滑后即可停止训练,否则可能导致test的曲线上升,发生过拟合
  3. 数据集扩增:通过改变图像的亮度,旋转,切分等操作,增大数据集样本量
  4. 数据均衡:negative和positive的数据量要基本保持1:1的比例。
  5. 正则化:在损失函数后面添加正则化项,可以避免训练出来的参数过大从而使模型过拟合。L1正则化L2正则化
  6. Dropout:只适用于神经网络中,即按一定的比例去除隐藏层的神经单元,使神经网络的结构简单化
  • 欠:欠拟合发生在模型对训练数据的学习不足,不能捕捉到数据中的潜在模式或特征。模型的复杂度过低,因此无法有效地拟合训练数据和测试数据。(在训练数据和测试数据上都表现较差
  1. 增加模型的复杂度,例如选择更复杂的算法或增加特征。
  2. 使用更复杂的回归模型(如多项式回归、决策树等)。
  3. 进行特征工程以创建更有用的特征

常用激活函数

​ 使用激活函数能够给神经元引入非线性因素,使得神经网络可以任意逼近任何非线性函数,使深层神经网络表达能力更加强大,这样神经网络就可以应用到众多的非线性模型中。

Sigmoid函数

\[f(x)=\frac{1}{1 + e^{-x}} \]

img
  • 用于表示二分类的类别或者用于表示置信度。
  • 容易造成梯度消失。
  • 执行指数运算,计算机运行得较慢,比较消耗计算资源。

Tanh函数

\[f(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} \]

img
  • 存在梯度饱和的问题
  • 进行的是指数运算

ReLU函数

\[f(x)=\max(0,x) \]

img

  • 解决了梯度消失的问题
  • 在SGD中能够快速收敛
  • 计算复杂度低

  • 输出不是以0为中心的
  • 当输入为负时,梯度为0。这个神经元及之后的神经元梯度永远为0,不再对任何数据有所响应,导致相应参数永远不会被更新

Softmax函数

\[\text{Softmax}(x)=\frac{e^{x_i}}{\sum_{i} e^{x_i}} \]

img

  • 用于多分类问题

SVM基本原理

​ 支持向量机(Support Vector Machine,SVM)是一种经典的监督学习算法,用于解决二分类和多分类问题。其核心思想是通过在特征空间中找到一个最优的超平面来进行分类,并且间隔最大。

​ SVM能够执行线性或非线性分类、回归,甚至是异常值检测任务。它是机器学习领域最受欢迎的模型之一。SVM特别适用于中小型复杂数据集的分类。

核函数(Kernel):核函数是一种数学函数,用于将原始输入数据点映射到高维特征空间中,即使在原始输入空间中数据点不可线性分隔,也能容易地找到超平面。常见的核函数包括线性核、多项式核、径向基函数(RBF)核和 Sigmoid 核。

硬间隔和软间隔

硬间隔分类:在使用超平面进行分割数据的过程中,如果严格地让所有实例都不在最大间隔之间,并且位于正确的一边,这就是硬间隔分类。硬间隔分类有两个问题,首先,它只在数据是线性可分离的时候才有效;其次,它对异常值非常敏感。

软间隔分类:要避免这些问题,最好使用更灵活的模型。目标是尽可能在保持最大间隔宽阔和限制间隔违例(即位于最大间隔之上,甚至在错误的一边的实例)之间找到良好的平衡,这就是软间隔分类。

img

​ 在Scikit-Learn的SVM类中,可以通过超参数C来控制这个平衡:C值越小,则间隔越宽,但是间隔违例也会越多。上图显示了在一个非线性可分离数据集上,两个软间隔SVM分类器各自的决策边界和间隔。

​ 左边使用了高C值,分类器的错误样本(间隔违例)较少,但是间隔也较小。

​ 右边使用了低C值,间隔大了很多,但是位于间隔上的实例也更多。看起来第二个分类器的泛化效果更好,因为大多数间隔违例实际上都位于决策边界正确的一边,所以即便是在该训练集上,它做出的错误预测也会更少。


朴素贝叶斯分类器

先验概率

​ 先验概率是指根据以往经验和分析得到的概率。

例:如果我们对西瓜的色泽、根蒂和纹理等特征一无所知,按照常理来说,西瓜是好瓜的概率是60%。那么这个概率P(好瓜)就被称为先验概率。

后验概率

​ 后验概率是指事情已经发生,要求这件事情发生的原因是由某个因素引起的可能性的大小。

例:假如我们了解到判断西瓜是否好瓜的一个指标是纹理。一般来说,纹理清晰的西瓜是好瓜的概率大一些,大概是75%。如果把纹理清晰当作一种结果,然后去推测好瓜的概率,那么这个概率P(好瓜|纹理清晰)就被称为后验概率。

条件

  • 独立:假设特征相互独立

  • 相等:任何属性都与结果是有关系的,并且影响程度是相同的。

    \[P(A|B)=\frac{P(B|A)P(A)}{P(B)} \]


集成学习

​ 通过构建并结合多个学习器来完成学习任务。

在这里插入图片描述

同质和异质

​ 同质是指个体学习器全是同一类型,这种同质集成中的个体学习器又称“基学习器”。异质是指个体学习器包含不同类型得学习算法,比如同时包含决策树和神经网络。一般我们常用的都是同质的,即个体学习器都是同一类型的。

效果

集成学习通过将多个基学习器结合,通常都会获得比单一学习器显著优越的泛化性能。也可能会获得相同或更差的性能。
要想获得较好的集成性能,基分类器需要满足两个基本条件:
(1)基分类器要有一定的性能,至少不差于随机猜测的性能,即基分类器准确率不低于50%。
(2)基学习器要具有多样性,即基学习器间要有差异性,不能像上图中那样,三个基分类器都一样。
提升集成学习性能主要通过这一条“多样性”来做,因为第一条很容易满足。


多样性增强的几种方法

一般的做法主要是对数据样本,输入属性,输出表示,算法参数进行扰动。
(1)数据样本扰动
这个其实主要就是采样,比如在bagging中的自助采样法,数据样本扰动对决策树,神经网络这样对数据样本变化非常敏感的学习算法非常有效,但是对支持向量机,朴素贝叶斯,k近邻这些对样本扰动不敏感的算法没用。对此类算法作为基学习器进行集成时往往需要使用输入属性扰动等机制。
(2)输入属性扰动
这个就是从样本的特征空间中产生不同的特征子集。这样训练出来的基学习器必然是不同的。在包含大量冗余属性的数据,在特征子集中训练基学习器不仅能产生多样性大的个体,还会因属性数的减少而大幅节省时间开销,同时,由于冗余属性多,减少一些冗余属性后训练出来的基学习器性能也不会差。若数据只包含少量属性,或者冗余属性少,则不适宜使用输入属性扰动法。
(3)输出表示扰动
这类做法的基本思路是对输出表示进行操纵以增强多样性。比如可对训练样本的label稍作变动,比如“翻转法”随机改变一些训练样本的标记;也可以对输出表示进行转化,如“输出调制法”将分类输出转化为回归输出后构建基学习器。这一类貌似用的不多。
(4)算法参数扰动
这个在现在深度学习比赛中很常见,主要是神经网络有很多参数可以设置,不同的参数往往可以产生差别比较大的基学习器。


集成学习方法

(1)Boosting:这一类个体之间学习器之间存在强依赖关系,必须使用串行的方法去学习。
(2)Bagging:这一类方法个体学习器之间不存在强依赖关系,因此可用并行的方式去学习。
(3)Stacking:wiki中将这一类方法单独分了一类。

Boosting——经典串行集成学习方法

​ Boosting由于各基学习器之间存在强依赖关系,因此只能串行处理,也就是Boosting实际上是个迭代学习的过程。

​ Boosting的工作机制为:先从初始训练集中训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整(比如增大被误分样本的权重,减小被正确分类样本的权重),使得先前基学习器做错的样本在后续的训练过程中受到更多关注,然后基于调整后的样本分布来训练下一个基学习器,如此重复,直到基学习器数目达到事先自定的值T,然后将这T 个基学习器进行加权结合(比如错误率小的基学习器权重大,错误率大的基学习器权重小,这样做决策时,错误率小的基本学习器影响更大)。Boosting算法的典型代表有AdaBoost和XGBoost。

​ 从偏差-方差分解的角度看,Boosting主要关注降低偏差。

AdaBoost算法(Adaptive Boosting,自适应增强)

• 初始化训练样本的权值分布,每个样本具有相同权重;
• 训练弱分类器,如果样本分类正确,则在构造下一个训练集中,它的权值就会被降低;反之提高。用更新过的样本集去训练下一个分类器;(指分错的样本的权重会变化)
• 将所有弱分类组合成强分类器,各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,降低分类误差率大的弱分类器的权重。

GBDT梯度提升树

​ GBDT(Gradient Boosting Decision Tree)是一种迭代的决策树算法,该算法由多棵决策树组成,GBDT 的核心在于累加所有树的结果作为最终结果,所以 GBDT 中的树都是回归树,不是分类树,它是属于 Boosting 策略。GBDT 是被公认的泛化能力较强的算法。
​ GBDT 由三个概念组成:Regression Decision Tree(即 DT)、Gradient Boosting(即 GB),和 Shrinkage(缩减)

XGBoost

​ XGBoost 是大规模并行 boosting tree 的工具,它是目前最快最好的开源 boosting tree 工具包,比常见的工具包快 10 倍以上。XGBoost 和GBDT 两者都是 boosting 方法,除了工程实现、解决问题上的一些差异外,最大的不同就是目标函数的定义。

LightGBM

​ LightGBM 由微软提出,主要用于解决 GDBT 在海量数据中遇到的问题,以便其可以更好更快地用于工业实践中,其相对 XGBoost 具有训练速度快、内存占用低的特点。
​ LightGBM与XGBoost相比,主要有以下几个优势:
1)更快的训练速度
2)更低的内存消耗
3)更好的准确率
4)分布式支持,可快速处理海量数据

Bagging——经典并行集成学习方法

Bagging即套袋法,其算法过程如下:

  1. 从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
  2. 每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
  3. 对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

随机森林Random Forest

​ 将多个决策树结合在一起,每次数据集是随机有放回的选出,同时随机选出部分特征作为输入,所以该算法被称为随机森林算法。可以看到随机森林算法是以决策树为估计器的Bagging算法。

​ 其中涉及两个核心概念:样本随机和特征随机

2.png

Bagging,Boosting二者之间的区别

Bagging和Boosting的区别:

1)样本选择上:

​ Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

​ Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

2)样例权重:

​ Bagging:使用均匀取样,每个样例的权重相等

​ Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

3)预测函数:

​ Bagging:所有预测函数的权重相等。

​ Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

4)并行计算:

​ Bagging:各个预测函数可以并行生成

​ Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。


降维

​ 数据降维是一种将高维数据转换为低纬数据的技术,同时尽量保留原始数据的重要信息。这对于处理大规模数据集非常有用,因为它有助于减少计算资源的需要,并提高算法的效率。以下是一些常用的数据降维方法,以及它们的原理和应用。

主成分分析(PCA)

原理:PCA通过正交变换将原始数据转换到一组线性不相关的成份上,通常称为主成分。它识别数据中的模式,以找出数据的最大方差方向,并将数据投影到这些方向上。

应用:PCA通常用于减少数据集的维度,同时尽可能保留数据中的变异性。它也常用于可视化高维数据。

线性判别分析(LDA)

原理:LDA是一种监督学习算法,旨在找到能够最大化类间差异和最小化类内差异的特征子空间。LDA特别关注数据的类别标签,使得数据投影后,同类数据点尽可能接近,不同类数据点尽可能远离。

应用:LDA常用于增强分类模型的性能。通过最大化类间差异和最小化类内差异,LDA能够提高分类算法的准确度。它还常用于模式识别任务,如人脸识别,其中可以利用LDA来提取面部特征。(LDA用于展示不同类别的数据在降维后的分布情况)。

LDA与PCA异同

相同点:

  1. 两者均可以对数据进行降维。
  2. 两者在降维时均使用了矩阵特征分解的思想。
  3. 两者都假设数据符合高斯分布。

不同点:

  1. LDA是有监督的降维方法,而PCA是无监督的降维方法
  2. LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。
  3. LDA除了可以用于降维,还可以用于分类。
  4. LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。

多维缩放(MDS)

原理:MDS是一种用于降维的技术,旨在数据点在低维空间中的相对位置尽可能地反映它们在原始高维空间中的距离。MDS通过优化过程寻找一个低维表示,使得这个表示中的点间距离尽可能地接近原始数据中的距离。

应用:MDS常用于数据可视化,尤其是当我们关心数据点之间的距离或相似性时。它在心理学、市场研究和社会学中特别有用,用于分析和可视化距离或相似性数据,如在语义分析或用户偏好研究中。

奇异值分解(SVD)

原理:SVD是一种将矩阵分解为三个矩阵的乘积的方法。它将原始数据矩阵分解为特征值和特征向量,能够揭示数据的本质结构。

应用:SVD在推荐系统中非常有用,尤其是处理大型稀疏矩阵时。通过提取矩阵中最重要的特征,SVD有助于预测用户对项目的评分或偏好。此外,它也用于数字信号处理和图像压缩领域。

总结

​ 数据降维技术广泛被划分为两类:线性降维方法与非线性降维方法。线性方法,例如主成分分析(PCA)和线性判别分析(LDA),通常适用于数据具有线性分布的场景。相对地,非线性方法如t-分布随机邻域嵌入(t-SNE)、多维缩放(MDS)和局部线性嵌入(LLE),则更适合处理具有复杂分布特征的数据集。


聚类

​ 聚类(Clustering)是最常见的无监督学习算法,它指的是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。也即聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。

K-Means聚类算法

优点:

​ 简单易懂

​ 计算效率高

缺点:

​ 需要预先指定 K 值:在运行算法之前,需要对簇的数量 K 进行指定,缺乏自动确定簇数的机制。
​ 对初始值敏感:不同的初始簇心可能导致不同的收敛结果,且可能陷入局部最优解。
​ 对噪声和离群点敏感:离群点会显著影响簇心位置,从而影响聚类效果。
​ 假设簇呈球状:K-Means 假设簇数是同心球形的,对于非球形及不同密度的簇表现较差。

密度聚类

​ 只要邻近区域的密度(对象或数据点的数目)超过某个阈值,就把它加到与之相近的聚类中。也就是说,对给定类中的每个数据点,在一个给定范围的区域中必须至少包含某个数目的点。

层次聚类

​ 层次法(Hierarchicalmethods):先计算样本之间的距离。每次将距离最近的点合并到同一个类。然后,再计算类与类之间的距离,将距离最近的类合并为一个大类。不停的合并,直到合成了一个类。其中类与类的距离的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等。比如最短距离法,将类与类的距离定义为类与类之间样本的最短距离。

​ 层次聚类算法根据层次分解的顺序分为:自下向上和自上向下,即凝聚的层次聚类算法和分裂的层次聚类算法(agglomerative和divisive),也可以理解为自下而上法(bottom-up)和自上而下法(top-down)。

自下而上法:凝聚型层次聚类,就是一开始每个个体(object)都是一个类,然后根据linkage寻找同类,最后形成一个“类”。

自上而下法:分裂型层次聚类,就是反过来,一开始所有个体都属于一个“类”,然后根据linkage排除异己,最后每个个体都成为一个“类”。


特征选择

● 减少训练数据大小,加快模型训练速度。

● 减少模型复杂度,避免过拟合。

● 特征数少,有利于解释模型。

● 如果选择对的特征子集,模型准确率可能会提升。

992855fcfdbb8cecc7851ce76f614243.png

过滤法

​ 过滤法: 选择特征时不管模型,该方法基于特征的通用表现去选择,比如: 目标相关性、自相关性和发散性等。

优点: 特征选择计算开销小,且能有效避免过拟合。

● 缺点: 没考虑针对后续要使用的学习器去选择特征子集,减弱学习器拟合能力。

包裹法

​ 包裹法: 将要使用的学习器的性能作为特征子集的评价准则,目的是为给的学习器选择“量身定做”的特征子集。

优点: 特征选择比过滤法更具针对性,对模型性能有好处。

缺点: 计算开销更大。

嵌入法

​ 嵌入法: 特征选择被嵌入进学习器训练过程中。不像包裹法,特性选择与学习器训练过程有明显的区分。

优点: 比包裹法更省时省力,把特征选择交给模型去学习。

缺点: 增加模型训练负担。

最高级的特征选择还是基于业务知识的人工挑选


KNN流程

算法步骤

  • 计算距离:计算待分类样本与训练集中每个样本的距离,常用的距离度量方法有欧氏距离、曼哈顿距离等。
  • 选择K个最近邻:根据计算出的距离,选择距离最近的K个样本。
  • 投票或平均:对于分类问题,K个最近邻中出现次数最多的类别即为待分类样本的类别;对于回归问题,K个最近邻的值的平均值即为待分类样本的值。

算法的优缺点

优点:
 简单
 易于理解
 容易实现
 通过K值的选择可具备丢噪音数据的健壮性
缺点:
 需要大量空间存储已知实例
 算法复杂度高(需要比较所有已知实例与要分类的实例)
 当样本的分类不均时,新的未知数据容易被归类到占主导样本的类别中


监督、无监督、强化

监督

定义:根据已有的数据集,知道输入和输出结果之间的关系。根据这种已知的关系,训练得到一个最优的模型。

​ 在监督学习中训练数据既有特征(feature)又有标签(label),通过训练,让机器可以自己找到特征和标签之间的联系,在面对只有特征没有标签的数据时,可以判断出标签。

简单理解:可以把监督学习理解为我们教机器如何做事情。

img

分类、回归

SVM、决策树、逻辑回归、KNN

无监督

定义:我们不知道数据集中数据、特征之间的关系,而是要根据聚类或一定的模型得到数据之间的关系。

​ 在无监督学习中数据只有特征(feature)无标签(label),是一种机器学习的训练方式,它本质上是一个统计手段,在没有标签的数据里可以发现潜在的一些结构的一种训练方式。

简单理解:比起监督学习,无监督学习更像是自学,让机器学会自己做事情。

聚类、降维

K-Means、PCA、关联规则挖掘、异常检测

强化学习

​ 强化学习是一种学习如何从状态映射到行为以使得获取的奖励最大的学习机制。这样的一个agent需要不断地在环境中进行实验,通过环境给予的反馈(奖励)来不断优化状态-行为的对应关系。因此,反复实验(trial and error)和延迟奖励(delayed reward)是强化学习最重要的两个特征。

​ 在监督学习的训练集中,每一个样本都含有一个标签,在理想情况下,这个标签通常指代正确的结果。监督学习的任务即是让系统在训练集上按照每个样本所对应的标签推断出应有的反馈机制,进而在未知标签的样本上能够计算出一个尽可能正确的结果,例如我们熟悉的分类与回归问题。在强化学习中的交互问题中却并不存在这样一个普适正确的“标签”,智能体只能从自身的经验中去学习。

​ 但是强化学习与同样没有标签的无监督学习也不太一样,无监督学习是从无标签的数据集中发现隐藏的结构,典型的例子就是聚类问题。但是强化学习的目标是最大化奖励而非寻找隐藏的数据集结构,尽管用无监督学习的方法寻找数据内在结构可以对强化学习任务起到帮助,但并未从根本上解决最大化奖励的问题。

​ 因此,强化学习是除了监督学习和无监督学习之外的第三种机器学习范式。

Q学习

  1. Q值
  2. 时序差分
  3. 贝尔曼方程

范数

L1

\[\|\mathbf{x}\|_{1}=\sum_{i = 1}^{n} |x_i| \]

​ 由于L1范数的天然性质,对L1优化的解是一个稀疏解, 因此L1范数也被叫做稀疏规则算子通过L1可以实现特征的稀疏,去掉一些没有信息的特征,例如在对用户的电影爱好做分类的时候,用户有100个特征,可能只有十几个特征是对分类有用的,大部分特征如身高体重等可能都是无用的,利用L1范数就可以过滤掉。

L2

\[\|\mathbf{x}\|_{2}=\sqrt{\sum_{i = 1}^{n} x_i^2} \]

L2范数通常会被用来做优化目标函数的正则化项,防止模型为了迎合训练集而过于复杂造成过拟合的情况,从而提高模型的泛化能力


误差反向传播算法的各步骤:

  1. 初始化
    • 随机初始化神经网络中所有的权重和偏置参数。
  2. 前向传播
    • 将输入数据通过神经网络,按照网络的结构和连接关系,依次计算每一层的神经元输出,直到得到网络的输出值。
  3. 计算误差
    • 根据网络的输出值和实际的目标值(标签),使用损失函数(如均方误差等)计算出误差值。
  4. 反向传播误差
    • 从输出层开始,将误差按照链式法则逐层反向传播到网络的每一层。计算每一层中每个神经元的误差项,该误差项反映了该神经元对最终输出误差的贡献程度。
  5. 更新参数
    • 根据计算得到的误差项,使用梯度下降等优化算法来更新每一层的权重和偏置参数,以减小误差。更新的方向是沿着误差函数的负梯度方向,步长由学习率决定。
  6. 重复迭代
    • 重复步骤 2 到步骤 5,直到满足停止条件,如达到预设的迭代次数、误差小于某个阈值等。

决策树算法的主要流程:

  1. 数据准备
    • 收集并整理用于构建决策树的数据集,包括特征和对应的类别标签。
  2. 选择根节点特征
    • 根据某种特征选择标准(如信息增益、信息增益比、基尼指数等),从所有特征中选择一个最优特征作为根节点,该特征能够使数据集的不确定性最大程度地降低。
  3. 划分数据集
    • 根据根节点特征的不同取值,将数据集划分为多个子集。每个子集对应根节点的一个分支。
  4. 递归构建子树
    • 对每个子集,重复步骤 2 和步骤 3,选择最优特征作为子节点,并继续划分数据集,直到满足以下停止条件之一:
      • 子集中的所有样本都属于同一类别,此时将该节点标记为叶节点,并赋予该类别标签。
      • 子集中的样本数量小于某个预设的阈值。
      • 没有更多的特征可供选择。
  5. 剪枝(可选)
    • 为了防止决策树过拟合,可能会进行剪枝操作。剪枝可以分为预剪枝(在构建树的过程中提前停止树的生长)和后剪枝(在树构建完成后,根据一定的规则对树进行修剪)。
  6. 生成决策树模型
    • 经过上述步骤,最终得到一棵决策树模型,可用于对新的数据进行分类或预测。
posted @ 2025-01-08 19:21  咋还没来  阅读(69)  评论(0)    收藏  举报