山大软件23年下半年机器学习基础

注意是[机器学习基础],不是[机器学习],考的范围不一样

总之就是结合老师讲课PPT来复习吧,数媒的考的简单,其他专业的应该会更难点(maybe)

一、模型评估与选择

机器学习定义:

正如我们根据过去的经验来判断明天的天气,吃货们希望从购买经验中挑选一个好瓜,那能不能让计算机帮助人类来实现这个呢?机器学习正是这样的一门学科,人的“经验”对应计算机中的“数据”,让计算机来学习这些经验数据生成一个算法模型,在面对新的情况中,计算机便能作出有效的判断,这便是机器学习

  • 所有记录的集合为:数据集。
  • 每一条记录为:一个实例(instance)或样本(sample)
  • 测试集(test set):所有测试样本的集合
  • 训练集(training set):所有训练样本的集合
  • 一个样本的特征数为:维数(dimensionality)
  • 泛化能力(generalization):机器学习出来的模型适用于新样本的能力,即从特殊到一般
  • 预测值为离散值的问题为:分类(classification)。
  • 预测值为连续值的问题为:回归(regression)。
  • 训练数据有标记信息的学习任务为:监督学习(supervised learning),容易知道上面所描述的分类和回归都是监督学习的范畴。
  • 训练数据没有标记信息的学习任务为:无监督学习(unsupervised learning),常见的有聚类和关联规则。

1、经验误差与过拟合

错误率、精度、误差、训练误差/经验误差、泛化误差、过拟合、欠拟合

误差:学习器对样本的实际预测结果与样本的真实值之间的差异

  • 训练误差/经验误差:学习器在训练集上的误差
  • 泛化误差:学习器在新样本上的误差
  • 过拟合:学习器把训练样本自身的一些特点当作了所有潜在样本都会具有的性质
  • 欠拟合:学习器对训练样本的一般性质尚未学好

2、评估方法

如何选择合适的算法:选择泛化误差最小的学习器

测试集、测试误差、Hold-out留出法、Cross validation交叉验证法、Bootstrapping自助法

  • 测试集来测量学习器对新样本的判别能力,测试集应尽可能与训练集互斥
  • 测试误差作为泛化误差近似

留出法Hold-out

直接将数据集$D$划分成两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T(采用分层抽样保持数据分布一致)

交叉验证法Cross validation

先将数据集$D$划分成$k$个大小相似的互斥子集,每个子集$D_i$都尽可能保持数据分布的一致性,即从D中通过分层采样得到,然后,每次用$k-1$个子集的并集作为训练集,余下的那个子集作为测试集。这样就可获得$k$组训练/测试集,从而可进行$k$次训练和测试,最终返回的是这$k$个测试结果的均值

通常把交叉验证法称为**“**$k$折交叉验证”

若$k$等于数据集内样本数,则也称留一法,更准确但计算量更大

Untitled

自助法Bootstrapping

直接以自助采样法为基础,给定包含m个样本的数据集$D$,我们对它进行采样产生数据集$D'$:

每次随机从$D$中挑选一个样本,将其拷贝放入$D'$,然后再将该样本放回初始数据集$D$中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行$m$次后,我们就得到了包含$m$个样本的数据集$D'$

通过自主采样,初始数据集$D$中约有36.8%(采样次数足够多时)的样本未出现在采样数据集$D'$中,于是我们可将$D'$用作训练集,$D/D'$用作测试集;这样的测试结果,亦称“包外估计”。

3、性能度量

查准率、查全率、真/假、正/反、平衡点(P=R,简称BEP)

Untitled

Untitled

4、比较检验

Hypothesis假设检验、t-检验、t-分布、交叉验证t检验

假设检验

假设:对学习者泛化错误率分布的一些判断/猜测。

泛化错误率$\epsilon$的学习器在一个样本上犯错的概率是$\epsilon$;测试错误率$\widehat{\epsilon}$意味着在$m$个测试样本中恰有$\widehat{\epsilon}×m$个被误分类。

在包含了$m$个样本的测试集上,泛化错误率$\epsilon$的学习器被测得测试错误率$\widehat{\epsilon}$的概率为:

Untitled

t-检验

我们得到k个错误率:$\hat{\epsilon_1},\hat{\epsilon_2},...,\hat{\epsilon_k}$

平均测试错误率:$\mu={1\over k}\sum_{i=1}^k\hat{\epsilon_i}$

平均方差:$\epsilon^2={1\over k+1}\sum_{i=1}^k(\hat{\epsilon_i}-\mu)^2$

考虑到这k个测试错误率可以看作泛化错误率$\epsilon_0$的独立采样,则变量$\tau_t={\sqrt k(\mu-\epsilon_0)\over\sigma}$服从自由度为$k-1$的$t$分布

自由度df愈大,t分布曲线愈接近正态分布曲线,当自由度df=∞时, t分布曲线为标准正态分布曲线

Untitled

对假设$\mu=\epsilon_0$和显著度$\alpha$,若$\mu$与$\epsilon_0$之差在$[-t_{\alpha \over 2},t_{\alpha \over 2}]$内,则不能拒绝假设$\mu=\epsilon_0$,即可认为泛化错误率为$\epsilon_0$,置信度为$1-\alpha$;否则可拒绝该假设

  • 例题

    Untitled

5、偏差和方差

偏差(bias)、方差(variance)、偏差-方差分解

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

  • 期望泛化误差=方差+偏差
  • 偏差刻画学习器的拟合能力
  • 方差体现学习器的稳定性

Untitled

方差和偏差具有矛盾性,这就是常说的偏差-方差窘境(bias-variance dilamma),随着训练程度的提升,期望预测值与真实值之间的差异越来越小,即偏差越来越小,但是另一方面,随着训练程度加大,学习算法对数据集的波动越来越敏感,方差值越来越大。换句话说:在欠拟合时,偏差主导泛化误差,而训练到一定程度后,偏差越来越小,方差主导了泛化误差。因此训练也不要贪杯,适度辄止。

Untitled

二、贝叶斯分类器

贝叶斯例题

运算规则:条件概率

Untitled

贝叶斯公式:

Untitled

**先验概率(prior probability):**指根据以往经验和分析。在实验或采样前就可以得到的概率。

**后验概率(posterior probability):**指某件事已经发生,想要计算这件事发生的原因是由某个因素引起的概率。

  • 判别式模型:$给定x,通过直接建模P(c|x)来预测x$。如决策树,BP 神经网络,支持向量机
  • 生成式模型:$先对联合概率分布P(x,c)建模,然后再由此获得P(c|x)$。如Naive Bayes, AODE Restricted Boltzmann Machine

1、基于最小错误率的贝叶斯决策

若将上述定义中样本空间的划分Bi看做为类标,A看做为一个新的样本,则很容易将条件概率理解为样本A是类别Bi的概率。在机器学习训练模型的过程中,往往我们都试图去优化一个风险函数,因此在概率框架下我们也可以为贝叶斯定义“条件风险”(conditional risk)。

Untitled

我们的任务就是寻找一个判定准则最小化所有样本的条件风险总和,因此就有了贝叶斯判定准则(Bayes decision rule):为最小化总体风险,只需在每个样本上选择那个使得条件风险最小的类标。

Untitled

若损失函数λ取0-1损失,则有:

Untitled

即对于每个样本x,选择其后验概率P(c | x)最大所对应的类标,能使得总体风险函数最小,从而将原问题转化为估计后验概率P(c | x)。

Untitled

或者PPT上的直观表述:

Untitled

2、极大似然估计

极大似然估计(Maximum Likelihood Estimation,简称MLE),是一种根据数据采样来估计概率分布的经典方法。常用的策略是先假定总体具有某种确定的概率分布,再基于训练样本对概率分布的参数进行估计。运用到类条件概率p(x | c )中,假设p(x | c )服从一个参数为θ的分布,问题就变为根据已知的训练样本来估计θ。极大似然法的核心思想就是:估计出的参数使得已知样本出现的概率最大,即使得训练数据的似然最大。

Untitled

所以,贝叶斯分类器的训练过程就是参数估计。

总结最大似然法估计参数的过程,一般分为以下四个步骤:

* 1.写出似然函数;
* 2.对似然函数取对数,并整理;
* 3.求导数,令偏导数为0,得到似然方程组;
* 4.解似然方程组,得到所有参数即为所求。

上述结果看起来十分合乎实际,但是采用最大似然法估计参数的效果很大程度上依赖于作出的假设是否合理,是否符合潜在的真实数据分布。这就需要大量的经验知识,搞统计越来越值钱也是这个道理,大牛们掐指一算比我们搬砖几天更有效果。

3、朴素贝叶斯分类器

不难看出:原始的贝叶斯分类器最大的问题在于联合概率密度函数的估计,首先需要根据经验来假设联合概率分布,其次当属性很多时,训练样本往往覆盖不够,参数的估计会出现很大的偏差。为了避免这个问题,朴素贝叶斯分类器(naive Bayes classifier)采用了“属性条件独立性假设”,即样本数据的所有属性之间相互独立。这样类条件概率p(x | c )可以改写为:

Untitled

为每个样本估计类条件概率变成为每个样本的每个属性估计类条件概率。

Untitled

相比原始贝叶斯分类器,朴素贝叶斯分类器基于单个的属性计算类条件概率更加容易操作,需要注意的是:若某个属性值在训练集中和某个类别没有一起出现过,这样会抹掉其它的属性信息,因为该样本的类条件概率被计算为0。因此在估计概率值时,常常用进行平滑(smoothing)处理,拉普拉斯修正(Laplacian correction)就是其中的一种经典方法,具体计算方法如下

Untitled

当训练集越大时,拉普拉斯修正引入的影响越来越小。对于贝叶斯分类器,模型的训练就是参数估计,因此可以事先将所有的概率储存好,当有新样本需要判定时,直接查表计算即可。

拉普拉斯修正通俗来说就是:每种都来一个

4、贝叶斯分类器扩展

  • 基于最小风险的贝叶斯分类器

    考虑各种错误造成损失不同时的一种最优决策,就是所谓的最小风险贝叶斯决策

    Untitled

    决策表中$\lambda(\alpha_i,w_j)$代表表示当真实状态为$w_j$,而所采取的决策为$\alpha_i$时所带来的损失,这样可以得到一般决策表。

    在采取决策$\alpha_i$情况下的条件期望损失为:

    Untitled

  • 参数估计

    • 参数估计:是假设某个研究的问题服从某个分布,这个分布中有一些确定的参数,然后用样本的统计量来估计总体的参数。

    • 非参数估计:样本所属的类别是已知的,但概率密度函数的形式是未知的,所以需要我们直接推断出概率密度函数本身。(比如Parzen Window和KNN)

    • Parzen Window估计方法

      是非参数估计概率密度的一种 主题思想是固定窗口区域容积,去看有多少个样本点在里面

    • KNN K-近邻概率密度估计方法

      主要思想是固定样本点的个数(k个)看需要的多大的容积。

      已知训练样本数据x1,x2,…,xn而估计p(x),以点x为中心,不断扩大体积Vn,直到区域内包含k个样本点为止,其中k是关于n的某一个特定函数,这些样本被称为点x的k个最近邻点。

5、半朴素贝叶斯分类器

朴素贝叶斯分类器的属性条件独立性假设在现实任务中很难成立,所以我们半朴素贝叶斯分类器的基本思想是:

适当考虑一部分属性间的相互依赖信息,从而既不需进行完全联合概率计算,又不至于彻底忽略了比较强的属性依赖关系。

  • 独依赖估计(简称ODE)是半朴素贝叶斯分类器最常用的一种策略。
  • 超父SPODESuper-Parent ODE):假设所有属性都依赖于同一个属性,这个属性叫超父。
  • AODE(平均单相关估计量):将每个属性作为超父来构建SPODE,然后将那些具有足够训练数据支撑的SPODE集成起来作为最终结果。

6、拓展(lx没讲)

  • 贝叶斯网

    借助有向无环图(DAG)来刻画属性之间的依赖关系,并使用条件概率表(CPT)来描述属性的联合概率分布函数。

    Untitled

  • 结构

    • 同父结构
    • V型结构
    • 顺序结构

    Untitled

  • EM算法(Expectation-Maximization)

    EM算法是常用的估计参数隐变量的算法,它是一种迭代式的方法,其基本思想是:

    第一步是期望(E)步,利用当前估计的参数值来计算对数似然的期望值;第二步是最大化(M)步,寻找能使E步产生的似然期望最大化的参数值,然后,新的到的参数值重新被用于E步,直至收敛到局部最优解。

    Untitled

三、决策树

决策树例题

  • 决策树是一个预测模型,它代表的是对象属性与对象值之间的一种映射关系。其学习的基本流程遵循分治策略。
  • 决策树的生成是一个递归的过程,在决策树算法中,有三种情形会导致递归返回:
    • 1、当前结点包含的样本全属于同一类别,无需划分;
    • 2、所有样本在所有属性上取值相同,无法划分;
    • 3、当前结点包含的样本集合为空,不能划分。

1、划分选择

  • 信息增益(ID3决策树学习算法)

    • 信息增益准则对可取值数目较的属性有所偏好。

    • 信息熵度量样本集合纯度最常用的一种指标。信息熵的值越小,样本集合纯度越高。

      $$ Ent(D)=-\sum_{k=1}^{|y|}p_k\log_2p_k $$

    • 信息增益:属性的信息增益是对该属性进行分区所导致的熵的预期减少

      $$ Gain(D,a)=Ent(D)-\sum_{v=1}^V{|D^v|\over|D|}Ent(D^v) $$

      ID3决策树学习算法以信息增益为准则来选择划分属性,每次选择信息增益最大的作为划分标准(ID3倾向于选择具有更多价值的属性作为最佳属性)。

      信息增益由信息熵计算得到。

      一般来说,信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大

    • ID3决策树优点:

      • 简单易行
      • 分类速度快,适用于大规模数据集
    • ID3决策树缺点:

      • 不能处理连续属性和缺失值
      • 对可取值数目较多的属性有所偏好,容易过拟合
  • 增益率(C4.5决策树算法)

    • 增益率准则对可取值数目较的属性有所偏好。

    $$ Gain\_ratio(D,a)={Gain(D,a)\over IV(a)} $$

    其中

    $$ IV(a)=-\sum_{v=1}^V{|D^v|\over|D|}\log_2{|D^v|\over|D|} $$

    称为属性a的固有值。属性a的可能取值数目V越大,则IV(a)的值通常会越大

    • C4.5决策树算法并不直接选择增益率最大的候选划分属性,而是:

      从候选划分属性中找出信息增益高于平均水平的属性,从中选择增益率最高的。

    • C4.5决策树的优点:

      • 简单易行
      • 可以处理连续属性与缺失值
      • 采用信息增益率选择属性,避免了ID3算法中对可取值数目多的属性有所偏好的问题
      • 在树构造过程中进行后剪枝,避免了过拟合问题
    • C4.5决策树的缺点:

      • 速度较慢,对大规模数据集的处理能力较差

2、剪枝处理(pruning)

过拟合:过拟合表示训练过度使泛化能力下降。

剪枝处理是为了解决过拟合问题。

  • 有两种剪枝方式:预剪枝(前向剪枝),后剪枝(后向剪枝)
    • 预剪枝:我们在构建决策树的过程中停止添加属性。
      • 在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。
      • 预剪枝处理降低了过拟合的风险,但带来了欠拟合的风险。
    • 后剪枝:我们在构建完整的决策树之后对属性进行剪枝
      • 先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。
      • 后剪枝欠拟合风险通常于预剪枝
      • 后剪枝泛化能力通常于预剪枝
      • 后剪枝的训练时间开销要比预剪枝得多
  • 泛化能力是通过对验证集的准确度来估计的

3、连续与缺失值

  • 连续值

    连续属性离散化技术

    • C4.5使用二分法处理连续属性:
      • 找到一个阈值,根据大于阈值小于阈值,将连续属性分为离散属性
      • 我们选择信息增益最高的分区对应的阈值。
      • 与离散属性不同,若当前结点划分属性为连续属性,该属性还可作为其后代结点的划分属性, 即一个连续属性可作多次划分。
  • 缺失值

    我们需要解决两个问题:

    • 如何在属性值缺失的情况下进行划分属性选择?

      • 我们给每个样本$x$赋予一个权重$w_x$,$\tilde{D}$表示$D$中在属性$a$上没有缺失值的样本子集,$\rho$表示无缺失值样本所占的比例(注意乘权重),$\tilde{r}_v$表示无缺失值样本中在属性$a$上取值$a^v$的样本所占的比例(注意权重)。

        然后选择信息增益最大的属性进行划分。(C4.5)

      $$ Gain(D,a)=\rho × Gain(\tilde{D},a)\\=\rho ×\big(Ent(\tilde{D})-\sum_{v=1}^V\tilde{r}_vEnt(\tilde{D}^v)\big) $$

    • 给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?

      • 若样本$x$在划分属性$a$上的取值已知,则将$x$划入与其取值对应的子结点,且样本权值在子结点中保持为$w_x$
      • 若样本$x$在划分属性$a$上的取值未知,则将$x$同时划入所有子结点,且样本权值在与属性值$a^v$对应的子结点中调整为$\tilde{r}_v*w_x$(直观来看,相当于让同一个样本以不同概率划入不同的子结点中去)

四、支持向量机SVM

支持向量机 (Support Vector Machine,SVM) 是一类按监督学习 (supervised learning)方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面。

1、间隔与支持向量

Untitled

  • 如上图,距离超平面最近的这几个训练样本点使$w^Tx_i+b=1或w^Tx_i+b=-1$成立,它们被称为“支持向量”(support vector)。

    简单来说,就是支持平面上把两类类别划分开来的超平面的向量点。margin边界上的样本决定了直线的位置。其余点往外移动或者去掉不影响直线位置,直线最终确定的位置是由支持向量决定的。(间隔定义为边界在到达数据点之前可以增加的宽度。

  • 分类器与间隔一一对应,我们要找到具有“最大间隔”的分类器,也就是让$\gamma={2\over||w||}$最大,也就是让$||w||^2$最小(平方是避免有根号),这就是支持向量机SVM的基本型。

2、对偶问题Dual problem

我们希望求解间隔最大得到对应的模型:$f(x)=w^Tx+b$

目标:最大化间隔最小化误分类的损失

拉格朗日乘子法:引入一个新的参数$\alpha_i$(即拉格朗日乘子),将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得到原函数极值的各个变量的解。

对式${min}_{w,b}{1\over2}||w||^2$使用拉格朗日乘子法可得到其“对偶问题”

该问题的拉格朗日函数可写为:

$$ L(w,b,\alpha)={1\over2}||w||^2+\sum_{i=1}^m\alpha_i(1-y_i(w^Tx_i+b)) $$

让L对w和b的偏导为0

$$ w^*=\sum_{i=1}^m\alpha_iy_ix_i\\0=\sum_{i=1}^m\alpha_iy_i $$

代入得到$\min\limits_{w,b}{1\over2}||w||^2$的对偶问题:

$$ \max_\alpha\sum_{i=1}^m\alpha_i-{1\over2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_i^Tx_j \\s.t. \sum_{i=1}^m\alpha_iy_i=0,\\\alpha_i>=0,i=1,2,...,m $$

解出$\alpha$后,求出$w$与$b$即可得到模型(至于计算b,需要找到一个支持向量,然后代入求得):

$$ f(x)=w^Tx+b=\sum_{i=1}^m\alpha_iy_ix_i^Tx+b $$

上述过程需满足KKT条件

  • KKT条件

    $$ \begin{cases}\alpha_i>=0\\y_if(x_i)-1>=0\\\alpha_i(y_if(x_i)-1)=0\end{cases} $$

    这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关

  • SMO算法(顺序最小优化算法)

    目的:解决大量训练样本数给支持向量机问题造成的过大开销问题。

    基本思路:先固定$a_i$之外的所有参数,然后求$a_i$上的极值。由于存在约束$\sum_{i=1}^ma_iy_i=0$,若固定$a_i$之外的其他变量,则$a_i$可由其他变量导出。于是,SMO每次选择两个变量$a_i$和$a_j$,并固定其他参数

    这样,在参数初始化后,SMO不断执行如下两个步骤直至收敛:

    1、选取一对需要更新的变量$a_i$$a_j$;

    2、固定 $a_i$$a_j$以外的参数,求解式$\max_\alpha\sum_{i=1}^m\alpha_i-{1\over2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_i^Tx_j$获得更新后的$a_i$$a_j$

3、核函数

我们在前面讨论的情况建立在训练样本是线性可分的基础上,但有时原始样本空间并不是线性可分的。

线性可分:指一组二分类样本可以通过线性函数作为界限完整的分为两类

解决办法:将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。

Untitled

  • 设X是输入空间 (欧氏空间或离散集合) ,H为特征空间 (希尔伯特空间),如果存在一个从X到H的映射$\varphi(x)$: X$\to$H,使得对所有的$x,y\in X$,函数$K(x,y)$满足函数$K(x,y)=\varphi(x)*\varphi(y)$, 则称$K(x,y)$为核函数

  • $\varphi(x)$为映射函数,$\varphi(x)*\varphi(y)$为x,y映射到特征空间上的内积

  • 核函数:是映射关系$\varphi(x)$的内积。映射函数本身仅仅是一种映射关系,并没有增加维度的特性,不过可以利用核函数的特性,构造可以增加维度的核函数,这通常是我们希望的。

  • 核函数的作用:核函数的作用就是隐含着一个从低维空间到高维空间的映射,而这个映射可以把低维空间中线性不可分的两类点变成线性可分的。

  • 核函数是二元函数,输入变换前的两个向量,输出与两个向量变换之后的内积相等

  • 定理6.1(核函数) 令X为输入空间,k(·,·)是定义在X*X上的对称函数,则k是核函数当且仅当对于任意数据$D=\{x_1,x_2,...,x_m\}$,“核矩阵”K总是半正定的。

    Untitled

4、软间隔

软间隔允许支持向量机在一些样本上出错

Untitled

即:

  • 可以在一定程度上偏移超平面

  • 同时使得不满足约束的数据点尽可能少

  • 0/1损失函数

    在最大化间隔的同时,不满足约束的样本应尽可能小,于是优化目标可以写为:

    Untitled

    其中$l_{0/1}$是0/1损失函数;C是平衡参数,决定前后哪个更重要,C趋于无穷时表示错误的样本要趋于0,即为硬间隔

    Untitled

    存在问题:0/1损失函数非连续,不易求解;只记录不满足约束的样本个数,不记录不满足约束的程度多大。

  • 替代损失

    因为0/1损失函数非连续,不易求解,所以用其他函数来替代,称为替代损失。

    Untitled

    违背约束的程度越大,惩罚越大

5、支持向量回归SVR

允许模型输出和实际输出间存在$2\epsilon$的偏差

支持向量回归SVR寻求的是一个线性回归方程 (函数y=g(x)) 去拟合所有的样本点,它寻求的最优超平面不是将两类分得最开,而是使样本点离超平面总方差最小。

五、K-近邻(KNN)

k-近邻(KNN)学习是一种常用的监督学习方法,其工作机制为:给定测试样本,基于某种距离度量找出训练集中与其最靠近k个训练样本,然后基于这k个“邻居”的信息来进行预测。

通常在分类任务中采用“投票法”,在回归任务中使用“平均法”,还可以加权投票或加权平均

1、k近邻学习

  • KNN是“懒惰学习”的代表,它没有显式的训练过程,在训练阶段仅仅是把样本保存起来,训练开销为0,待收到测试样本后再进行处理
  • 算法要求:
    • k值
      • k过小可能过拟合(对“噪声”敏感)
      • k过大可能欠拟合
      • k=1时为最近邻分类器,其泛化错误率不超过贝叶斯最优分类器错误率的两倍
    • 距离度量
      • 欧式距离
      • 曼哈顿距离(出租车距离)
      • 闵可夫斯基距离
        • p=1曼哈顿
        • p=2欧式
        • p=3切比雪夫
      • 汉明距离(不同位的数目)
  • KNN优缺点
    • 优点:
      • 简单直观,训练速度较快,容易实现
      • 可用于非线性分类问题
      • 既可用来做分类又可用来做回归
      • 在无限的训练数据和足够大的K值的情况下,K-NN方法效果很好
    • 缺点:
      • 对嘈杂的特征很敏感
      • 即使在测试时,也将所有的训练数据存储在内存中
      • 查询时速度慢。对每个测试点进行O(nd)计算
      • 在高维度上可能表现不佳(维度诅咒)

2、维度灾难

  • 在高维情况下出现的数据样本稀疏、距离计算困难等问题,是所有机器学习方法共同面临的严重障碍,被称为“维数灾难”。

  • 降低多维复杂度的方法:k-d树

  • KD树

    可以快速找出K个临近点,减小时间复杂度 kd-tree(全称为k-dimensional tree),它是一种分割k维数据空间的点,并进行存储的数据结构;

    在计算机科学里,kd-tree是在k维欧几里德空间组织点的数据结构。Kd-tree是二进制空间分割树的特殊情况,常应用于多维空间关键数据的搜索,例如范围搜索和最近邻搜索。

    kd-tree的每个节点都是k维点的二叉树。所有的非叶子节点可以看做为将一个空间分割成两个半空间的超平面。

    Untitled

六、回归学习

回归学习是一个监督学习模型

回归估计输入值和输出值之间的关系,并建立数学模型,以便准确预测新样本的输出值。

1、线性回归模型

  • 线性回归模型:试图学到一个线性模型尽可能准确地预测新样本的输出值
    • 1、假设目标值(因变量)与特征值(自变量)之间线性相关(即满足一个多元一次方程,如:$f(x)=w_1x_1+...+w_nx_n+b或f(x)=w^Tx+b$)。
    • 2、然后构建损失函数。
    • 3、最后通过令损失函数最小来确定参数。(最关键的一步)
  • 基本线性回归模型损失函数:(model:$f(x)=X\hat{w}$)
    • $E_{\hat{w}}=(y-X\hat{w})^T(y-X\hat{w})$
    • $\hat{w}=(X^TX)^{-1}X^Ty$ (解析解)

2、最小二乘法

基于均方误差最小化来进行模型求解的方法称为“最小二乘法”。

在线性回归中,最小二乘法就是为了找到一条直线,使所有样本到直线上的欧式距离之和最小。 (二维空间是找直线,三维空间是找平面)

最小二乘法常用于测量模型预测值与真实值之间的误差

  • 最小二乘损失函数:$E_{(w,b)}=\sum_{i=1}^m(f(x_i)-y_i)^2$

    • 最小二乘法的损失函数有可能会造成模型过拟合
    • 样本的特征数远远超过样本数,这样会使$\hat{w}$有多个值。$\hat{w}=(X^TX)^{-1}X^Ty$
    • ridge 回归(岭回归)和lasso回归可以防止模型过拟合,也可以解决样本的特征数远超过样本数的问题
  • 最小二乘参数估计:求解$w$和$b$使$E_{(w,b)}=\sum_{i=1}^m(f(x_i)-y_i)^2$最小化的过程,称为线性回归模型的最小二乘“参数估计”。

    • 我们可将$E_{(w,b)}$分别对$w$和$b$求导,得到:

    Untitled

    • 然后令导数为0,得到$w$和$b$的最优解的闭式解:

    Untitled

  • 最小二乘法适用于

    • 已有样本中的值比较准确
    • 样本的特征数小于样本数

3、ridge 回归(岭回归)

(重复一遍…)ridge 回归(岭回归)和lasso回归可以防止模型过拟合,也可以解决样本的特征数远超过样本数的问题

岭回归实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的拟合要强于最小二乘法。

岭回归的目标函数在一般的线性回归的基础上加入了正则项,在保证最佳拟合误差的同时,使得参数尽可能的“简单”,使得模型的泛化能力强(即不过分相信从训练数据中学到的知识)。正则项一般采用一,二范数,使得模型更具有泛化性,同时可以解决线性回归中不可逆情况。岭回归一般采用二范数。

岭回归的损失函数:

$$ E_{\hat{w}}=(y-X\hat{w})^T(y-X\hat{w})+\lambda||\hat{w}||_2^2\\\lambda>0\\\hat{w}=(X^TX+\lambda I)^{-1}X^Ty $$

$(X^TX+\lambda I)$是满秩矩阵,$\hat{w}$可以得到解析解————解决特征数大于样本数的问题。

4、lasso回归(最小绝对收敛算子)

Lasso回归是以缩小变量集(降阶)为思想的压缩估计方法,通过构造一个惩罚函数,可以将变量的系数进行压缩并使某些回归系数变为0,进而达到变量选择的目的。

lasso回归的损失函数:

$$ E_{\hat{w}}=(y-X\hat{w})^T(y-X\hat{w})+\lambda||\hat{w}||_1\\\lambda>0\\||w||1=|w_1|+|w_2|+...+|w_d|=\sum{i=1}^d|w_i| $$

  • Lasso和岭回归的区别很好理解,在优化过程中,最优解为函数等值线与约束空间的交集,正则项可以看作是约束空间。可以看出二范的约束空间是一个球形,一范的约束空间是一个方形,这也就是二范会得到很多参数接近0的值,而一范会尽可能非零参数最少。

    岭回归与Lasso回归最大的区别在于岭回归引入的是L2范数惩罚项Lasso回归引入的是L1范数惩罚项,Lasso回归能够使得损失函数中的许多$\theta$均变成0,这点要优于岭回归,因为岭回归是要所有的$\theta$均存在的,这样计算量Lasso回归将远远小于岭回归

    Untitled

    Untitled

七、深度学习

  • 神经网络:一种模拟生物神经网络的结构功能和计算的模型,目的是模拟大脑某些机理与机制,实现某个方面的功能。
  • 神经元模型:神经网络中最基本的部分。

1、人工神经网络

  • M-P神经元模型

    M-P神经元模型是一种模拟生物神经元结构和行为的数学模型。

  • 激活函数

    激活函数:是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端

    理想激活函数阶跃函数,输出0表示抑制神经元,输出1表示激活神经元

    **Sigmoid函数(对数几率函数)**将较大范围内变化的输入值挤压到(0,1)输出值范围内

  • 感知机与多层网络

    感知机由两层神经元组成,输入层接受外界输入信号传递给输出层,输出层是M-P神经元 (阈值逻辑单元)。

    感知机是一种线性分类器。如果训练集是线性可分的,则感知器可以保证收敛

    • 单层感知机只能学习线性可分模式,比如异、或、非问题(不能解决异或问题)

    • 多层感知机(MLP)

      • 全连接:在完整连接层中,每个神经元都与前一层中的每个神经元相连,每个连接都有自己的权重。(神经元之间不存在同层连接和跨层连接)
      • 前馈:在这个网络中,信息只向一个方向移动,即向前移动或向后传播,从输入节点,通过隐藏节点(如果有的话),最后到达输出节点。网络中没有环路。
      • **在输入层和输出层之间添加至少一层神经元,称之为隐层或隐含层。**隐含层和输出层神经元都是具有激活函数的功能神经元。(隐层:实现非线性数据的线性变换)

      Untitled

  • BP算法(误差逆传播算法,Error BackPropagation,简称BP)

    误差逆传播算法 (Error BackPropagation,简称BP)是迄今为止最成功的训练多层前馈神经网络的学习算法。

    用于更新神经元的连接权值和阈值。(具体步骤见书P101)

    Untitled

    • 输入:训练集+学习率
    • 过程:
      • 在(0,1)范围内随机初始化网络中所有连接权值和阈值
      • 对训练集中每个元素,迭代直至达到停止条件:
        • 根据当前参数和输出层输出式计算当前样本的输出$\hat{y}_k$;
        • 根据Sigmoid激活函数计算输出层神经元的梯度项$g_j$;
        • 根据梯度下降法计算隐层神经元的梯度项$e_h$;
        • 更新连接权与阈值
    • 输出:连接权与阈值确定的多层前馈神经网络

    神经网络,BP算法的理解与推导 - 知乎 (zhihu.com)

    • BP算法基本原理:通过梯度下降法来最小化损失函数,从而调整神经网络的权重和偏置项。(BP算法的基本原理包括前向传播和反向传播两个过程。在前向传播过程中,输入数据通过神经网络被传递到输出层,得到输出结果;在反向传播过程中,根据输出结果与实际结果的误差对神经网络的权重和偏置项进行更新,以减小误差。)
    • 优点:
      • 能处理非线性问题
      • 可以使用大量数据训练
      • 具有良好的泛化能力
      • 可以通过反向传播不断调整连接权值和阈值,使神经网络能逼近目标函数
    • 缺点:
      • 学习速度慢,需要多次迭代才能收敛
      • 容易陷入局部最小而不是全局最小
      • 可能导致过拟合
      • 难以确定神经网络的层数和每层的神经元数目,以及初始化权重的选择等超参数,这些因素可能会影响神经网络的性能

    Untitled

  • 神经网络学习过程是根据训练数据调整神经元的连接权值和每个功能神经元的阈值

  • 梯度:就是分别对每个变量进行微分,然后用逗号分割开

    Untitled

  • **梯度下降思路:**沿着梯度的反方向更新参数;中心思想是沿着目标函数梯度的方向更新参数值以希望达到目标函数最小梯度下降可以寻找局部最优解但不能保证是全局最优)(梯度下降法求最小均方误差)

  • MLP的局限性:它在内存(权重)和计算(连接)方面非常昂贵,尤其是隐层神经元很多时

2、深度学习

  • CNN卷积神经网络
    • CNN卷积神经网络可以减少神经网络中参数的数量

    • Receptive Field (局部感受野)

      • 每个隐层节点制链接到图像每个局部的像素区域,从而大大减小需要训练的权值参数。
    • Parameter Sharing(权值共享)

      • 相同的形态出现在不同的区域,则共享同一组参数
    • Pooling(池化)

      • 对像素进行子采样,使图像变小
      • 虽然图像的规模减少,但是主要的特征依然保留着(减小过拟合,提高模型容错性)
      • 平均池化mean pooling:往往能保留整体数据特征,较好的突出背景信息
      • 最大池化max pooling:能更好保留纹理特征

      Untitled

    • 我们使用三种主要类型的层来构建卷积神经网络架构:

      • Convolutional Layer卷积层
      • Pooling Layer池化层
      • Fully-Connected Layer全连接层

八、集成学习

  • 集成学习:对多个分类器的结果进行某种结合来决定最终的分类

1、集成学习

  • 同质集成与异质集成
    • 同质集成:所有单独的学习器都是由同一个模型生成的
    • 异质集成:所有单独的学习器都是由不同个模型生成的
    • 弱学习器:学习器的泛化性能仅仅优于随机猜测。
  • 越精确,差异越大,集成越好
    • 准确性
    • 多样性
  • 如何构造不同的学习器:改变训练集
  • 怎样将弱分类器组合起来形成好的分类器:
    • 平均法(简单平均、加权平均)
    • 投票法
    • 学习法(再加上一层学习器)

2、集成方法(怎样生成基学习器)

  • Bagging

    个体学习器间不存在强依赖关系

    并行生成

    Bagging使用Bootstrap统计技术获得与原始训练集L大小相等的多个不同训练集。得到的训练集$L_i$, i=1,…,n,通常包含相对于L的微小变化。

    Bootstrap统计技术就是有放回的从袋子里抽取样本值

    Bagging:利用Bootstrap思想产生多个伪样本集,然后采取多种复杂的模型来预测数据类型,把最终得到的结果做平均或者投票得到最后结果。

    • 随机森林(RF)

      决策树+Bagging=随机森林

      传统决策树在选择划分属性时是在当前结点的属性集合中选择一个最优属性;而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。(这里的参数k控制了随机性的引入程度。若k=d,则RF与传统决策树相同,若k=1,则是随机选择。一般推荐$k=\log_2d$)

      随机森林改变了决策树容易过拟合的问题

  • Boosting

    个体学习器间存在强依赖关系

    串行生成(下一个分类器只在前一个分类器预测不够准的实例上训练)

    Boosting的基本思想是通过对弱学习器进行加权组合,来构造一个强学习器。(一般问的都是Adaboost的基本思想,偶尔也有问Boosting的,注意区分)

    • AdaBoost

      • AdaBoost (Adaptive Boosting) ,即自适应增强。主要思想是:对分错的样本提高权重,对分对的样本降低权重,用全新的加权样本去训练下一个分类器,直到达到某个预定的足够小的错误率
      • 或达到预先指定的最大迭代次数。
      • AdaBoost 缺点:对噪声敏感

      Untitled

      • Bagging与Adaboost的异同点

        Untitled

3、融合策略(如何组合基分类器)

  • 平均

    简单平均法

    加权平均法

  • 投票

    绝对多数投票法

    相对多数投票法

    加权投票法

4、多样性

Untitled

  • 个体学习器的准确率越高,多样性越大,则集成越好
  • 多样性度量是用于度量集成中个体分类器的多样性,即估算个体学习器的多样化程度。典型做法是考虑个体分类器的两两相似性/不相似性。
  • 在集成学习中需有效的生成多样性大的个体学习器,一般思路是在学习过程中引入随机性:
    • 数据样本扰动
      • 从初始数据集中产生出不同的数据子集,再利用不同的数据子集训练处不同的个体学习器。数据样本扰动通常是基于采样法。
      • 对于不稳定基学习器(决策树、神经网络)很有效
    • 输入属性扰动
      • 对于稳定基学习器(LDA、SVM、KNN...)从初始属性集中抽取出若干个属性子集,基于每个属性子集训练一个基学习器。
      • 对包含大量冗余属性的数据,在子空间中训练个体学习器不仅能产生多样性大的个体,还会因属性数的减少而节省时间开销。
    • 输出表示扰动
      • 将原任务拆解为多个可同时求解的子任务或者是将分类输出转化为回归输出后构建个体学习器
    • 算法参数扰动
      • 基学习算法一般都有参数需要设置,例如神经网络的神经元数,初始连接权值等,通过随机设置不同的参数。往往可产生差别较大的个体学习器。

九、聚类

  • 聚类是一种无监督学习方法,它将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个“簇”(cluster),每个簇可能对应于一些潜在的概念。
  • 聚类的基本思想是将数据集中的对象根据它们的相似性或相关性进行分组,使得同一组(簇)中的对象尽可能相似,而不同组(簇)中的对象尽可能不同。
  • 距离计算:去看k近邻学习那里四种距离计算
  • 性能度量:我们希望“簇内相似度”高且“簇外相似度”低
    • 外部指标:将聚类结果与某个“参考模型”进行比较
      • JC 值越大越好
      • FMI 值越大越好
      • RI 值越大越好
    • 内部指标:直接考察聚类结果而不利用任何参考模型
      • DBI DBI的值越小越好
      • DI DI的值越大越好

1、K-means(从距离角度)

  • k-均值:将没有标注的M个样本通过迭代的方法聚集成K个类

  • 流程:

    • 1、随机选取k个点作为类的中心
    • 2、计算样本到每个类中心的距离,找到最近的,并归入该类
    • 3、重新计算类的重心,并将其定为新的中心
    • 4、重复2、3、直至达成某个条件

    Untitled

  • k的初始化:

    • 肘部法:
      • 肘部法所使用的聚类评价指标为:数据集中所有样本点到其簇中心的距离之和的平方SSE。每次计算聚类完成后的距离之和平方就是SSE,但是肘部法选择的并不是误差平方和(SSE)最小的k,而是误差平方和突然变小时对应的k值,轮廓系数法
  • 优点:

    • 简单易行
    • 可解释性强
    • 适用于大数据集
  • 缺点:

    • 对初始值敏感
    • 对异常值(“噪声”)敏感
    • 对非凸型类簇识别效果差
    • 可能产生局部最优解而不是全局最优解

2、混合高斯(从概率角度)

高斯混合分布:

$$ p_m(x)=\sum_{i=1}^k\alpha_ip(x|\mu_i,{\sum}i)\\\sum{i=1}^k\alpha_i=1 $$

$\mu_i,\sum_i$::第i个混合分量的均值向量和协方差矩阵

$\alpha_i$:相应混合系数

Untitled

3、DBSCAN(从密度角度)

由密度可达关系导出的最大密度相连的样本集合,即为我们最终聚类的一个类别,或者说一个簇。

这个DBSCAN的簇里面可以有一个或者多个核心对象。如果只有一个核心对象,则簇里其他的非核心对象样本都在这个核心对象的$\epsilon$-邻域里;如果有多个核心对象,则簇里的任意一个核心对象的$\epsilon$-邻域中一定有一个其他的核心对象,否则这两个核心对象无法密度可达。这些核心对象的$\epsilon$-邻域里所有的样本的集合组成的一个DBSCAN聚类簇。

Untitled

Untitled

  • 优点:
    • 不用取值K(相比于k-means算法)
    • 可以找到任何形状的空间聚类
    • 可以丢弃远程点
  • 缺点:
    • 当簇间距差异很大时,这种方法不适用。
    • 参数调整比较复杂。

4、AGNES(层次聚类)

AGNES算法是一种层次聚类算法。

AGNES最初将每个对象作为一个簇,然后这些簇根据某些准则被一步一步的合并。

(例如,在簇A中的一个对象和簇B中的一个对象之间的距离是所有属于不同簇的对象之间最小的,AB可能被合并。这是一种单链接方法,其每一个簇都可以被簇中所有对象代表,两个簇间的相似度由这两个簇中距离最近的数据点的相似度来确定。)

聚类的合并过程反复进行直到所有的对象最终合并形成N个簇。在聚类中,用户能定义希望得到的簇数目作为一个结束条件。

最小距离(单链接),最大距离(全链接),平均距离(平均链接)

Untitled

Untitled

十、数据预处理

Untitled

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值