机器学习概念总结

HangYF Lv2
写在前面:课程是完全按照西瓜书来讲的,相当于是西瓜书的读后感

机器学习

寻找上帝函数的过程

绪论

机器学习是一个建模的过程 通过已知的数据总结规律用于将来的预测。 这个模型接受预测变量(自变量,属性变量),输出的是响应变量(因变量)。一般而言,模型接收多个预测变量。

我们可以假设,现实中的预测变量和响应变量的关系是:

其中 表示随机误差项,与独立,且均值为0。

而机器学习的任务,就是估计这个函数。在两种情况下会估计f :预测推断

预测

多数情境下,输入是已知的,我们需要预测输出。由于随机误差项的均值为0,所以可以通过下式进行预测:

其中是对函数的估计,我们不在乎他的形式,可以视作黑箱,的精确性依赖于两个量,可约误差不可约误差。可约误差来自于建模的精确性问题,换句话说,一个更好的模型会提高对函数估计的精确性,是可以人为提高的。如果已经完全复现了原来的函数(实际上不可能),此时对于响应变量的估计来源于下式:

可见这个式子没有考虑随机误差项,但Y也是一个关于的函数。可是,实际上永远也无法考虑的影响,因为和X是独立的,无法用X来预测。这部分误差就是不可约误差。无论我们对的估计有多准确,都是无法减少带来的误差的。

包含了对Y有影响但是无法观测的变量信息。(假设所有可观测且有影响的变量都被观测的情况下)如病人的服药效果和他的心情,天气,空气湿度都有影响,但是这些变量无法加入响应变量中。现实世界的情况很复杂。所以,不可约误差提供了一个建模精度的上限

推断

推断对建模提出了更高的要求。我们想弄明白X和Y的关系到底是怎样的。可能的问题有:

  • 哪些预测变量和响应变量有关?通常情况下,只有一部分预测变量和响应变量有关。
  • 响应变量和每个预测变量之间的关系是怎样的?有些预测变量和响应变量是正相关的,有些是负相关的
  • 响应变量和每个预测变量的关系可以用线性方程描述吗? 大多数估计f的方式是使用线性方程,但是更一般的情况下,需要更复杂的模型。

显然,此时的函数不能是一个黑盒的形式了,我们需要他的具体形式。

如何估计f

参数方法

这是一种基于模型估计的两阶段方法。

  1. 假设函数f具有一定的形式,如假设f是一个线性模型:

    此时问题就被简化了,只需要去估计参数而不是一个p维函数。
  2. 一旦模型被选中,就要使用训练数据来进行拟合或者训练模型。也就是估计各个参数的值,拟合常用的方法是普通最小二乘法
  3. 参数法的缺陷在于很难选择一个与原函数相近的模型,如果模型和真实的f相差太大,会导致估计出的f效果很差。解决此类模型的方式是选用一个更加光滑的模型进行拟合f,一般来说,拟合光滑度更强的模型需要更多的参数估计。但是拟合复杂的模型会导致过拟合的现象出现,也就是将噪声误差也拟合了进去。

非参数方法

不需要对模型有事先的假设。

追求尽可能接近数据点的估计,估计函数在去粗和光滑处理后尽可能与更多数据点接近。不局限f的具体形式,可以在更大范围内选择适合f形状的估计。

弱点在于:问题复杂,需要更多观测点来实现更精确的估计。

预测精度和解释性的权衡

在众多估计方法中,有一些是欠光滑的,或者说形式上受限定的。这种情况下只能产生一个相对较窄的函数范围来估计f。如线性模型,他只能产生一个线性函数,是相对欠光滑的。但是薄板样条是光滑度较高的。

为什么使用一个受限的方式,而不是一个光滑模型来建模?

  1. 有时候欠光滑模型就够用了,可能原函数就是一个线性函数
  2. 欠光滑模型可解释性更高,复杂的估计中,很难解释一个预测变量是怎么影响到响应变量的。

当方法的柔性增强时,方法的解释性下降。反之亦然

指导学习和无指导学习

指导学习

对于每一个预测变量的观测值 都有一个响应变量的观测 y

建模的目标就是通过建立预测变量和响应变量的关系,进行响应变量的预测或者更好的理解两者关系。

线性回归(linear regression),逻辑斯蒂回归,广义可加模型,提升方法(boosting method),支持向量机都是指导学习。

无指导学习

只有预测变量的观测向量 ,但是没有y与之对应。不可能对其拟合线性模型,因为缺少响应变量的指导。

无指导学习可能出现在:理解变量之间或者观测之间的关系。聚类分析就是一种无指导学习,目标是基于各种可以观测的变量,将观测值归入不同的群

归纳偏好 inductive bias

机器学习算法在学习过程中对某种类型假设的偏好,任何一个有效的机器学习算法必然有其偏好。

image-20240930143929916

上面的拟合有两种,机器学习算法会选哪一种取决于它的归纳偏好,如果遵循奥卡姆剃刀原则:即相同性能下学习的模型复杂性越低越好,那么A明显更好。

机器学习算法的归纳偏好是否与问题所匹配,大多数时候直接决定了算法是否可以取得好的性能。

img

没有免费的午餐 NO Free Lunch

image-20240930144547408

NFL定理:一个算法a如果在某些问题上比另一个算法b好,必存在另一些问题,b比a好

统计学基本概念

  • 均值/期望 (mean)

  • 方差 (variance)

  • 标准差/均方差 (standard deviation)

  • 协方差矩阵 (covariance matrix)

  • 均方根值 /有效值 (Root Mean Square)

  • 均方根误差 (Root Mean Square Error)

距离

  • 闵可夫斯基距离

    • 闵氏距离是一组距离的定义
  • 两个n维变量 的闵氏距离定义为 ,当p=1时,就是曼哈顿距离,p=2时为欧氏距离; 时为切比雪夫距离。

    • 其中切比雪夫距离就是国际象棋中王向其他格子移动的最小距离。二维平面中的定义是:
    • 闵氏距离的缺点就是将每个分量的量纲,也就是单位平等的看待了;没有考虑每个分量的分布可能是不同的
  • 标准化欧氏距离

    • 是欧式距离的改进版-将分量事先标准化到均值,方差都相同。
    • 将分量事先处理 减去均值,除以标准差
  • 马氏距离

    • 消除量纲
    • M是协方差矩阵
  • 余弦距离

凸函数,凹函数

凸集

设有D∈Rn,如果对任意的x,y∈D与任意的α∈[0,1],都有:
αx + (1-α) y = 0,
那么称D为凸集。

凸集的几何意义:若两个点属于此集合,则这两个点上的任意一点均属于此集合。

凸集的性质:

在这里插入图片描述

凸函数

设D是非空集,f是定义在D上的函数,如果对任意的x1,x2∈D,均有在这两点之间的点的函数值小于等于这两点的加权函数值之和,那么称f为D上的凸函数。

是属于凸集D的两个变量, 满足下式:

image-20240930160242384

几何意义:凸函数任意两点之间的曲线段总是在弦下方。

image-20240930160030940

判断函数的凹凸性

一元函数: 二阶导数大于等于0,则为凸函数,有极小值; 凹函数亦然。

多元函数:使用海森矩阵,根据矩阵的正定性,判断凹凸性。半正定为凸函数,非半正定则是凹函数。

模型评估和选择

统计学习方法三要素: 方法 = 模型 +策略 + 算法

模型&假设空间

  • 模型(model):是所要学习的条件概率分布或决策函数或映射函数
  • 假设空间(hypothesis space):包含所有可能的条件概率分布或决策函数集合

image-20240930163703781

更加细节的公式:

image-20240930163755509

也就是模型都是通过参数刻画的,而参数取自于n维欧氏空间,因此也叫做参数空间。

策略

  • 策略(strategy):如何从假设空间中选择最优的假设模型

  • 损失函数(loss function)或者代价函数(cost function)

    • 度量模型一次预测的好坏,记为𝐿( 𝑌,𝑓(𝑋) ),Y是实际值,f(x)是预测值
    • 通常为一个非负实值函数
    • 常见的损失函数如image-20240930164051544
  • 风险函数(risk function)或期望损失(expected loss)

    • 度量平均意义下模型预测的好坏,记为=𝐸[𝐿(𝑌,𝑓(𝑋) ) ]
    • 遗憾的是期望损失并不能直接计算 (需要使用大量的样本计算经验风险来近似得到风险函数)
  • 经验风险(empirical risk):模型在训练数据集上的平均损失,记为

  • image-20240930164505944

  • 经验风险最小化(empirical riskminimization, ERM):

    • 经验风险最小的模型就是最优的模型
    • 即求解最小化的优化问题:哪个模型满足
    • 有时候会出现过拟合(over-fitting)现象,例如样本量很少的情况下
  • 结构风险最小化(structural riskminimization, SRM):

    • 结构风险最小的模型就是最优的模型

    • 增加衡量模型复杂度正则化项(regularizer)或罚项(penalty term)

    • 即求解最小化的优化问题:

      image-20240930165121221

算法

学习模型的具体计算方法

  • 统计学习问题往往形式化为一个最优化问题,如果最优化问题有解析解/闭式解(closed-form expression),直接求解
  • 如果最优化问题没有有解析解/闭式解(closed-form expression)
    • 梯度下降(gradientdescent)
    • 牛顿法(Newton method)
    • 拟牛顿法(quasi-Newton method)

泛化误差 vs 经验误差

泛化误差:在未来样本上的误差,当然越小越好。

经验误差:在训练集上的误差,不是越小越好,否则过拟合。

模型选择

  • 如何获得测试结果?评估方法

  • 如何评估性能优劣?性能度量

  • 如何判断实质差别?比较检验

评估方法

关键:怎么获得测试集?测试集应该与训练集“互斥”

数据分类方法:

  • 留出法 :将数据集按比例划分为训练集和测试集

注意:

  1. 要保证测试集中数据的分布不变,可采用分层抽样法
  2. 多次随机划分确定最后的测试集
  3. 测试集比例在1/3-1/5
  • k折-交叉验证法:将数据集分为k折,如10折即10部分。然后将第10折,第9折…分别作为测试集进行测试,共测试10次,取平均值作为最后的测试结果

  • 自助抽样法:通过有放回抽样抽取样本,数据集共m个样本则抽取m次,根据数学公式计算可得最后没被抽取的样本集合约占1/3,这部分作为测试集,抽取到的作为训练集

注意:

  1. 训练集与原样本集同规模
  2. 数据分布有所改变

调参和最终模型

  • 算法的参数:一般由人工设定,亦称“超参数”

  • 模型的参数:一般由学习确定

验证集可以从训练集中抽取一部分得到,当超参数选定后,要将训练集+验证集重新训练得到最终模型

验证集用于帮助选择最佳的超参数 :如KNN中的K,网络层数,网络节点数,迭代次数等等

注意:测试集仅在最终评价模型使用,不能参与学习过程

性能度量:衡量模型泛化能力的评价标准,反映了任务需求

回归任务

使用均方误差 (误差平方和的均值)

分类任务

错误率、精度、查准率、查全率计算

混淆矩阵

也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示

image-20241004165832953

正例:positive,即最后结果是正向的(比如好瓜);
反例:negative,即最后结果是负向的(比如烂瓜);
TP:True Positive,把正例预测为正例,也就是说,首先预测出来是个正例,其次这是一个真正的正例(比如预测出来是个好瓜,而且是个好瓜);
FP:False Positive,把反例预测为正例,也就是说,首先预测出来是个正例,其次这是个反例(比如预测出来是个好瓜,但是是个烂瓜);
FN:False Negative,把正例预测为反例,也就是说,首先预测出来是个反例,其次这是个正例(比如预测出来是个烂瓜,但是是个好瓜);
TN:True Negative,把反例预测为反例,也就是说,首先预测出来是个反例,其次这是一个真正的反例(比如预测出来是个烂瓜,而且是个烂瓜)

错误率:分类错误的次数除以总样本数

精度:分类正确的次数除以总样本数 也等于 1- 错误率

查准率:预测出来为正类中真正的正类所占的比例。

准确率

查全率:预测出来正确的正类占所有真实正类的比例。

召回率

查准率(准确率)和查全率(召回率)是一对矛盾的度量,查准率高则查全率低,反之亦然。我们可以通过将学习器得到的预测结果对样例进行排序,最前面的是最有可能为正例的样本,越往后越不可能然后依次对这些样本作为正例进行预测(不断累积计算,如得到第一个样本的预测情况计算一次,得到第二个预测情况则和第一个一同计算,第三个和第二个,第一个一同计算),可以得到当前的查准率,查全率,以查准率为纵轴,查全率为横轴,得到P-R曲线,其中平衡点即为:查准率=查全率的点,比较这几个点和原点之间的欧氏距离大小,越大越优。(距离越大,查准率,查全率均越大)

F1度量:(用于为查准率,查全率加入不同的考虑权重,而非同等看待)

查准率和查全率的 调和平均数 的倒数: 注意调和平均数的性质! 调和平均数有惩罚机制,会更靠近较小值(重视较小值)我们引入这样的惩罚机制就不会使得过小的值发不出声音,从而使评估变得更准确。

改进: 引入权重系数 作为超参数,看到底倾向于哪个量

Fβ度量

宏/微查准率,查全率

若能得到多个混淆矩阵 : (例如多次训练/测试的结果,多分类的两两混淆矩阵)

宏查准率就是评判所有的混淆矩阵的综合查准率。

image-20241004181522045

ROC AUC

ROC 曲线,即接收者操作特征曲线 用来评价二分类模型性能的常用图形工具。它通过显示真阳性率(True Positive Rate,简称 TPR)与假阳性率(False Positive Rate,简称 FPR)之间的权衡来帮助我们理解模型的分类能力。

AUC 曲线下面积(Area Under Curve),是 ROC 曲线下面积的一个数值表示。它提供了一个定量的指标,用来衡量分类模型的整体表现。AUC 值范围从 0 到 1,值越大表示模型性能越好

为何需要 ROC/AUC

在分类任务中,特别是当数据集类别不平衡时,单纯依赖准确率(Accuracy)可能会造成误导。假设我们有一个武侠元素的数据集,其中 95% 的样本是普通弟子,5% 的样本是高手。则若总是预测所有样本为普通弟子,模型的准确率就为 95%,看起来表现很好,但实际上它根本无法识别高手,是一个毫无用处的分类器。

分类器为每一个样本给予一个实值,如果这个值大于分类阈值则为正类,小于则为负类。我们可以将预测的实值从可能性大小进行排序,然后用分类阈值进行截断。ROC就是测量这个排序的性能好坏的。

如何绘制ROC

给定m+个正例,m-个反例。 最开始先将分类阈值设为最大,(即全部预测反例。然后将分类阈值依次设置为每一个样例的预测值,即依次将每一个样例预测为正例,如果为真正例,则坐标向上移动 变为;假正例则向右移动 变为

img

非均等代价

犯不同的错误往往会造成不同的损失 此时需考虑“非均等代价”(unequal cost)

image-20241004183705538

代价敏感错误率: 预测错误的代价是不同的

image-20241004183725351

比较检验

在某种度量下取得评估结果后,是否可以直接比较以评判优劣?
NO ! 因为:

  • 测试性能不等于泛化性能
  • 测试性能随着测试集的变化而变化
  • 很多机器学习算法本身有一定的随机性

假设检验:计算显著性

image-20241004184851237

回归任务中,均值误差可以分解为:

偏差(真实输出与期望输出的差别 bias)

方差(同样大小训练集下输出变动 variance)

系统误差(训练数据本身的误差)

image-20241004185009640

偏差-方差窘境

一般而言,偏差与方差存在冲突:

  • 训练不足时,学习器拟合能力不强,偏差主导
  • 随着训练程度加深,学习器拟合能力逐渐增强,方差逐渐主导
  • 训练充足后,学习器的拟合能力很强,方差主导

image-20241004185158982

如何减少高偏差
  • 结合数据其他的特征,来提高模型的精度
  • 增加训练的迭代次数,使得模型可以学习更加复杂的数据
  • 避免使用高偏差的算法,如线性回归、逻辑回归、判别分析等,而是使用非线性算法,如K-近邻、支持向量机、决策树等
  • 在不同程度上减少正则化,以帮助模型更有效地学习训练集,并防止欠拟合
如何减少高方差
  • 减少模型中特征的数量
  • 将当前模型替换为更简单的模型
  • 增加训练数据的多样性以平衡模型的复杂度和数据结构
  • 避免使用高方差算法(支持向量机、决策树、K近邻等),而选择低方差算法,如线性回归、逻辑回归和线性判别分析
  • 进行超参数调优以避免过拟合
  • 增加输入的正则化以减少模型的复杂度并防止过拟合
  • 使用新的模型架构(如果其他方法不起作用,应将其视为最后的手段)

决策树

基于树进行决策,每个内部节点对应于一个属性的“测试”,边是测试结果,叶节点表示一个最终的预测结果。

image-20241004190411393

学习过程:通过对训练样本的分析确定一个“划分属性”(内部节点所对应的属性)

预测过程:将测试实例从根节点开始,沿着划分属性构成的”判定测试序列“下行,直到叶节点

学习基本流程

策略:分而治之;自根到叶的递归过程,

停止条件:当前节点包含的样本都是同一个类别 当前的属性为空,所有样本在所有属性上的集合为空。

从属性集合A中获取最优划分属性

划分度量

在每一个节点选择什么属性进行测试,才能让其分支节点所包含的样本属于同一类别?换句话说,如何才能让被分开的样本尽可能不同,而分为一类的样本尽可能相似?

信息增益

信息熵:度量样本集合纯度的指标,越小,纯度越高,类别越相似。

信息熵的定义:假设当前样本集合D共K类样本,第k类样本所占的比例为

如果某一个属性选择的很好,依照该属性划分完的样本信息熵应该很高。

信息增益:可以通过划分前的信息熵减去划分后的信息熵来得到信息增益(这就是划分好坏的度量)

image-20241005110845495

例如:对于西瓜来说,纹理是一个可以用来作为划分的属性,它的取值有{清晰,稍糊,模糊}三种,现在共有17个西瓜作为样本D 。易于计算划分之前的信息熵(直接根据好坏分类计算),划分之后的信息熵通过看属性各个取值下西瓜比例,好瓜比例,坏瓜比例代入公式即可。image-20241005111244620

image-20241005111513892

增益率

信息增益缺点: 对可取值数目多的属性更偏好,如果将编号作为属性,编号的信息增益很大(确实是完全分开了,每个类别都很纯,只有一个瓜)。

作为改进——增益率:将信息熵除以一个IV(a)

其中: 也就是属性本身的信息熵

属性a的可取值数目多,即V越大,则IV(a)更大。

启发式:先从划分属性中找出信息上增益高于其他水平的,从其中选取增益率最高的(防止对取值较少的属性偏好)。

基尼指数

信息增益和增益率都要计算对数

基尼指数只需要计算比例

:样本点属于第𝑘类的概率

$$Gini(D) = \sum^{|y|}{k=1}\sum{k_\neq k}p_kp_{k_} $$

反映了从集合D中随机抽取两个样例,其类别标记不一致的概率。该指数越小,表示集合D纯度越高,即划分纯度越高。

image-20241008110743266

所有候选属性集合中,选择使得划分后基尼指数最小的那个属性。

剪枝

  • 划分选择的各种方法在大多数情况下只影响决策树大小,但对泛化性能的影响不大

  • 剪枝方法和程度对决策树泛化性能影响非常大。剪枝是对抗“过拟合”的主要手段

  • 为了尽可能的正确分类样本,会导致决策树分支过多,剪枝来减少过拟合。

预剪枝:提前剪掉一些分支的生长。

后剪枝:对完全树”回头“进行剪枝。

剪枝过程中要评估剪枝前后决策树的优劣。

预剪枝

对每一个节点比对划分前后的预测精度:如果划分后的精度增大,则进行划分,否则禁止划分。

image-20241005113928722

后剪枝

自底向上:如果将倒数第二层一个内部节点替换为叶子节点,如果验证集的精度上升,则剪枝,否则不剪枝。

image-20241005114351760

分析

预剪枝:测试时间开销降低,训练时间开销降低
后剪枝:测试时间开销降低,训练时间开销增加

预剪枝:过拟合风险降低,欠拟合风险增加
后剪枝:过拟合风险降低,欠拟合风险基本不变

泛化性能:后剪枝通常优于预剪枝

连续值属性处理

基本思路:连续数值离散化。

常见做法:二分法

n个属性值从小到大排序,可形成n-1个区间,在这n-1个区间中每个可以选择1个阈值作为划分点,共n-1种样本集合的划分方式。当选择了一个阈值进行划分时,此时就已经和离散数值处理一样了,就看哪种划分方式最好即可 。

如:密度阈值=0.3,就是将0.3当作一个阈值,分出大于 小于0.3的两个分支。

缺失值处理

  1. 如何划分属性(内部节点中的测试属性该选哪个)
  2. 给定划分属性,但是缺少属性值,(走哪个分支)

使用完全没有缺失值的样例是不现实的,会浪费很多数据。所以我们分析某一个属性的时候,只看该属性下没有缺失值的样本即可。

image-20241005154416507

image-20241005154442825

image-20241005154458338

关键是这里的 ,是无缺失值样例的占比,加入这个权重即可。

每个决策树对应一个规则集,可解释性比较高。

拓展 轴平行划分

每个节点只讨论一个属性时 就是单变量决策树。

多变量决策树:例如斜决策树, 不失为不是为每个非叶节点进行最优属性划分,而是建设一个线性分类器

还可以在节点嵌入神经网络和SVM进行混合决策。

KNN k近邻

距离度量

例如欧氏距,余弦相似性,马氏距离等等。(在预备知识提到过)

k近邻分类器

算法流程

  1. 计算测试样本中所有训练样本之间的距离d

  2. 对所有距离值(相似度值)进行升序或者降序排列

  3. 选择k个最近的训练样本

  4. 再用投票法,将近邻中样本数最多的标签分配给

k取值的影响

  • k取奇数值,避免平局
  • k取不同的值,分类结果可能不同
  • k值较小,对噪声敏感,模型复杂 容易过拟合(直觉上想,离得越近影响越大,k小一点可以得到比较好的分类,但是对噪声敏感)
  • k值大,对噪声不敏感,整体模型变得简单,容易欠拟合(比如取全集,怎么测试都输出一个类型,无法正常分类)

最近邻分类器(1-NN)

当k=1时的KNN

泛化错误率

最近邻分类器的错误率(测试样本为x,最近邻为z)

最优贝叶斯分类:

最近邻分类器的泛化错误率,不超过贝叶斯错误率的两倍。

K-近邻回归

最后一步不同:

将距离值的倒数作为权重,然后将k个邻近的标签值加权平均,作为的预测值

近邻平滑

核平滑法:核函数

二次核,次方核,高斯核

讨论

k-NN是典型的“懒惰学习”

训练阶段仅仅是把样本保存下来,训练时间开销是0,等到测试样本在开始处理。

SVM,CNN,在训练阶段进行学习处理的方法,这类方法在训练期间构造一个通用的,输出无关的目标函数。

优点:精度高,对异常值不敏感,不用假定输入样本

缺点:计算复杂度高(距离函数计算慢),空间复杂度大(训练集大)

测试时间复杂度:计算距离时间+排序时间

降低近邻计算

维诺图

每个维诺图都是一个凸多边形,画好每一个分类的图,看看测试点是否会落到这个点中

KD树

对K维空间中的实例点进行计算,

构造流程:

  • 确定split域 计算每一个特征维度的方差,方差最大的维度即为spilt域的值。(x方向方差大,就竖着划分,以中位数为界画一条竖线,将样本空间划分为两个部分。)

  • 确定Node-data域,数据集点集按照其spilt域的值排序。中位数的数据点击被选为Node-data

  • 对剩下的数据点进行划分,确定左右子空间

  • 递归,每个字空间继续进行空间划分,直到空间中只包含一个数据点

kd树搜索:

  1. 二叉搜索
  2. 到达叶子节点就选择为当前最优,
  3. 回溯
  4. 分析完根结点的所有子节点,结束分析

例子:

降维

通过数学变换将高维属性空间进行转变,成为一个低维属性空间。(增加距离的计算速度)

近似最近邻

搜索可能是近邻的数据项而不再是只局限于返回最可能的数据项,在牺牲可接受范围内的精度的情况下获得最近邻。

哈希

通过编码的方式进行降低代价

SVM 支持向量机

生成式模型

判别式模型(SVM)

感知机

将训练样本分开的超平面有很多,哪一个更好

“正中间的”:鲁棒性最好,容错率高,泛化能力最强

线性支持向量机

间隔和支持向量

一个点(样例)对应的间隔margin是其到分界线的垂直距离。

SVM最大化(所有训练样本的)最小间隔margin

具有最小间隔的点称为支持向量

#聚类 无监督学习

聚类的好坏没有绝对标准,聚类采用某一种偏好来进行聚类划分。

聚类(簇、类)。数据对象的集合。同一个类中,数据对象是相似的,不同聚类中,数据对象是不相似的

聚类算法:根据给定的相似性评价标准,将一个数据集合分出几个聚类。

  • 簇之间交集为空集
  • 并集是样本集合D

##聚类依据

将整个数据集中每个样本的特征向量看作是分布到特征空间中的一些点点与点之间的距离(不一定是欧氏距离)可作为相似性度量标准。根据距离函数的大小进行聚类。

好的聚类算法,类之间不相似,类内部高相似性。

根据数据的相似性和距离进行划分。

##粒度对聚类的影响

聚类的关键:

  • 特征的选取或者设计,特征选择的好,容易区分。

  • 距离度量函数的选择

数据点的分布也是一群一群的,同一群样本密集,这样容易聚类。不同特征样本混在一起不容易聚类。

距离度量

度量同样本之间的相似性,和不同样本点之间的差异性

常用度量函数:各种距离函数。(之前提到过)

类的定义

类的定义有很多种,其中混合了人为规范性。定义的好不好要看实际情况

还需要基于数值的准则函数。如果聚类准则函数选择的好,聚类的质量就会高

聚类准则

直接试探法:凭感觉和经验定义一种度量的函数(人为告诉一个规则)

  • 设置距离阈值m

  • 任取一个样本点作为聚类中心初始值

  • 计算其他样本点和中心的距离

  • 若大于m,则确定一个新的聚类中心,否则即属于该聚类中心

  • 假设已经有两个聚类中心,则第三个样本距离这两个样本都大于m,则称为新的聚类中心。

影响因素:

  • 初始点不同
  • 阈值T不同

优化:

最大最小距离思想(另一种算法):

对于聚类中心的选择有改变:先选择距离初始聚类中心最远的点当第二个聚类中心。

###准则函数法: 聚完类之后,根据准则函数计算损失函数,告诉聚类模型,优化模型

J代表c个聚类全部样本和对应类别均值之间的距离和。

系统聚类法

将数据样本按距离准则逐步分类,类别由多到少,直到获得合适的分类要求为止。

算法:

主要的计算准则:

动态聚类法K-means

首先选择若干个点作为样本中心,然后按照某种聚类准则进行划分,使得聚类向样本中心靠拢

算法:

  1. 选择聚类数量k
  2. 初始化聚类中心(随机选择k个点)
  3. 对每个样本点,到这k个聚类中心的距离,将样本点划分到离他最近的聚类中心。
  4. 重新计算聚类中心,为属于该聚类所有样本的均值中心。

影响因素:

  • 聚类数目
  • 聚类中心的初始分布
  • 样本分布的几何性质

实际中需要试探不同的K值和选择不同的聚类中心初始分布。

适合分类数目已知的情况

优化 K-means++

每个聚类中心应该分的足够开。

ISODATA算法

过程中根据各个类别的实际情况进行分裂和合并两种操作来进行聚类中心调整

  1. 判断类别中的样本数量是不是小于M,如果小于就减少一个聚类中心,然后将这个聚类中的各个样本分到其他聚类中心。
    如果样本数量太大,

合并:计算聚类中心两两之间的距离,若两个类别之间的中心距离小于一个阈值,就合并为一个类。新中心选在样本数量多的一侧

分裂:计算样本在各个维度下的方差。类别中样本方差最大的,就进行分裂操作。

聚类评价

  • 聚类中心之间的距离
  • 聚类中的样本数量
  • 聚类内样本的距离方差

外部指标:

内部指标:

紧密度:计算每个xi和各自聚类中心的距离的求和,然后取一个平均。

间隔度:

戴维森堡丁指数:

邓恩指数:

自然语言处理

理性主义——经验主义——深度学习

他们的可解释性和性能比例是相反的。

基于规则的方法

进行规则形式定义,设置一系列规则进行翻译

如: if 源语言主语 = 我 then 翻译为 I

基于机器学习的方法

数据创建——数据预处理(词汇分析,结构分析,语义分析)——特征构建()——模型学习

将自然语言处理变为一种分类任务:在此基础上根据任务特性构建特征表示

深度学习方法

将特征构建和模型学习合并。不做后处理,通过优化算法,自动的学习出好的特征表示。

基于大模型方式

大规模模型构建——通用能力注入——特定任务使用

使用一个基本的大模型,增加分类层(预训练+微调)

文本规范化

句子切分——词语切分——词语规范化

词语切分

将一句话中每一个词语都分开。

挑战:歧义分割?分词规范(如何分);未登录词识别(新词)

最大匹配分词算法:

最佳匹配算法:

分词工具jieba

词语规范化

将词语转化为标准形式,相同语义词语归一化——They->they

One-Hot编码

每个词表示为一个向量,向量的维度就是词表的大小

忽视了词频,没有权重

TF-IDF编码 词频*逆文档频率篇章表示

词汇频率:词语在文档中的频率

逆文档频率:在整个语料库中的频率

两者相乘

IF =

Onehot和TF-IDF缺点

频率的缺陷——词是独立计算的没有关联——特征稀疏,导致维度灾难

Word-Embedding

将词语映射到特征空间中的稠密矩阵(固定维度)

语义相似的词语空间距离更近。特征值的相减和相加就能进行词语的计算(语义和语法的相似度)。

分布式表示:通过训练将词语设置为固定长度的向量,

词向量:每一个词语都是一个低位的稠密向量 Word2Vec算法使用浅层神经网络实现

上下文

滑动窗口——将词语附近的其他词语划分到一个窗口中,通过其他词语得到这个词的语义。

前馈神经网络

定义参数化映射:

通过风险最小化和正则化样本上学习参数t,添加到函数中

神经元没有反馈链接,所以是前馈。多层的连续的非线性函数。

有一个语料库,遍历语料库中每一个位置t上的词语,这称为中心词c,窗口以内,c之外的词语就是上下文词语。

ship gram

给出一个中心词,以此预测他的上下文内容。

  1. 初始化:独热向量x
  2. 根据查询表获得向量h,查询表等同于输入的权重矩阵,操作为
  3. 每个位置预测 维度=词典大小
  4. 根据该位置真实的独热向量和p计算损失值loss

CBOW

连续词袋模型。

更好的表征?

现有词向量的缺点:都是静态的

预训练

通过预训练嵌入更多的背景知识。引入上下文有关的信息。

预训练模型中的encoder结构实现动态向量表示。

遍历语料库,自主产生伪标签嵌入词向量。

要求

收集大量数据。

基于tansformer的预训练模型。

BERT 预训练模型

transformer编码器端

预训练任务:

掩码语言模型:遮蔽文本中k%词语,让模型基于上下文预测被遮蔽的词语。

K的选择有讲究:k小,数据量少训练昂贵。K大被遮蔽的太多 15%最好。

下一句预测:判断两句话A,B是否有关系:B是A的下一句话。

微调

情感分类使用[CLS]向量作为文本整体的表示。以此预测类别

SQuAD问答:

支持向量机

###感知机

###线性支持向量机

###非线性支持向量机

数据集是非线性可分:将数据投影到高维度空间,转变成线性可分的问题。

特征空间映射:将样本从原始维度映射到高位空间。

内积:线性和非线性的联系

x和z的内积K(x,z):计算二维空间中相似度

K是核函数:

现在有两个向量x,y:通过K(x,y)计算两者相似度:先将x,y映射到高位空间,

是投影函数(特征空间):将输入向量投影到一个空间中。可以是有限维度可以是无限维

什么样的限制条件

必须存在特征映射:才可以将非线性函数表示为特征空间中的内积。

Mercer条件(判断K是否是核函数):两种断定方式

核支持向量机

核函数

对偶形式:

分类边界:

怎样预测:

在对偶空间中,呈现内积的形式,替换成为核函数。

非线性核函数

超参数:如何确定C,

必须给定这些值 才能进行SVM学习,SVM本身不能学习

###多类支持向量机

多类:转化为2类

启发:
SVM从线性,二类,可分的情况开始

神经网络

连接强度调整量和输入输出乘积成正比。显然经常出现的模式将增强神经元之间的联系。

image-20240713223829502

还可以向sum加一个偏置常数,权重为

激活函数:决定是否放电(是否输出,或者输出值的大小)?

image-20240713224212475

sigmoid始终有导数:而且一直小于1。容易造成梯度消失问题,指数计算代价大。

Relu在大于零的时候,倒数恒为1。所以梯度不会消失

局限

输入方面:线性求和 (非线性求和)

输出方面:单一值 (电脉冲)

更新频率:时钟周期(异步更新)

感知机学习

非线性前馈式神经网络 最简单的结构

同层没有连接

不同层没有反馈

有下层往上层传递

输入输出都是离散值

由阈值函数决定其输出

有监督的学习方式

学习权重的过程,如果感知机结果不正确,就根据下面的公式进行更新。

缺点

感知机是单层神经网络,无法分析非线性可分问题,如XOR异或

多层感知机

一个隐藏层可以增加函数的非线性程度。非线性加权求和,非线性映射……不断循环。

将样本输入特征空间进行了投影:原本不好划分的点现在好划分了。

实际是特征检测算子:逐步发现可化训练数据的突出特征。

多层前馈神经网络:每一层之间是全连接的。没有同层或者跨层链接

具有非常强的表示能力,仅需一个隐藏层,就能以任意精度逼近任意复杂度的函数。

如何设置隐藏层神经元个数还是未决的()。常用试错法。

输入的神经元是4个。就是有4个特征。10个中间隐藏层说明就是将4维特征投影到了10维空间。

反向传播算法

给定训练集D

输入:d维特征向量

输出:L个输出值

假设有q个隐藏层神经元

激活函数:sigmoid

总参数个数:(d+L+1)q+L (q和L都是偏置权重,剩下就是边的数量)

对于一个训练例(x,y)xy都是向量:实际输出是,代表标签

然后计算均方误差。越小越好。

BP是一个迭代学习算法:迭代的每一轮:

。若是负的

BP基于梯度下降策略,以目标的负梯度方向对参数做出调整

卷积神经网络

卷积

  • 特征提取
  • 超参数
  • 过滤器:3x3x3x95 95个滤波器,一个滤波器是3x3x3,核大小是3x3

张量是三维,滤波器也是相同大小

将3x3的区域和图像对应大小的区域做点乘,然后往右移动一个像素,继续3x3对应的计算。(从上到下,从左到右),有多少个滤波器,就要多少个通道的输出。

池化、下采样

  • 减少参数
  • 避免过拟合
  • 扩大感受域

抽取特征,将矩阵缩小。

####全连接层

  • 全局特征抽取
  • Softmax-layer 分类层

池化层之后,将张量变为一个向量

向量维度很大,要乘以矩阵变为低维向量。

Dropout

对大神经网络进行平均的方法。最简单的情况下,每个神经元都以固定概率保留。

训练的过程中,网络结构在不断调整,相当于训练了很多神经网络符合而成的网络。类似于集成学习。

Batch Normalization

梯度(SGD)

模型轻量化

减少机器学习、深度学习模型的计算量。

  • 减少模型大小
  • 加快推理速度
  • 保持相同精度

量化——蒸馏——剪枝——二值化

剪枝 pruning

尝试修建 删除不重要的权重。

结构化剪枝(剪去一个维度块)——非结构化剪枝(一次剪一个通道)

蒸馏

将大模型知识蒸馏到小的模型。

  1. 知识

  2. 蒸馏算法
    离线:

  3. 师生架构

量化

将浮点计算转为低比特定制计算的方式。

交叉熵损失函数

回归损失

L2-Norm :

三元组损失,三元组包含三个样本:如分类样本,输入形式为 xa是锚点,xn是负样本,xp是正样本。

排序,ranking

深度学习技巧

数据增广:数据量比较少,如何得到更好的效果?mixup

水平翻转,随机裁剪,颜色抖动

预处理:如何初始化神经网络权重

Zero-center 正态化 PCA白花

初始化:

过滤器:大小如何定,一般是3x3

一般是2的指数

池化大小:2x2

学习率:模型影响最大。学习率大,训练的比较快,收敛的比较快

学习率小,收敛的慢。微调时学习率要小。

大数据量 比较少的数据量
相似的数据集 线性分类器
非常不同的数据集

在预训练模型上微调

激活函数的选择

包含fc层或者是全连接层,或嵌入batch,导致网络的差异。

对学习的参数进行正则化:L2,L1,Max norm 防止过拟合

图像分析:在各个数据集上的精度图

横坐标:epoch:所有训练数据集都训练过一次 称为一次epoch。

纵坐标:损失 lose

深度学习工具箱

小样本学习

计算机视觉中一个目标分类问题,旨在通过一个或者少量样本来学习一个目标类别

数据稀缺、标注代价昂贵:如医学图像的分割,人脸关键点标注。

泛化新样本 分割目标得到关系,创造新样本,创造新概念

现在的机器学习和深度学习都不好解决小样本学习。

名词

支撑集:S 小样本训练集 (极少量的带标记数据)

查询集:Q 小样本测试集

C-way K-shot:包含C个类别,每个类别是K个标记样本构成。

使用浅层的机器学习模型或者深度学习模型都有过拟合问题。

解决方式:通过辅助集进行学习,再迁移一些知识,帮助新的类别的识别。样本相当于预训练之后再学习小样本

辅助集和小样本任务的支撑集和查询集的类别不相交。不然说明可以找到样本,就不是小样本了。

  • Title: 机器学习概念总结
  • Author: HangYF
  • Created at : 2025-02-17 14:25:54
  • Updated at : 2025-02-17 22:14:24
  • Link: https://redefine.ohevan.com/2025/02/17/机器学习概念总结/
  • License: This work is licensed under CC BY-NC-SA 4.0.