DAY11:机器学习模型_笔记分享

摘要

1. 监督式学习

  • 多元回归分析
  • 正规化回归
  • 罗吉斯回归
  • 朴素贝叶斯模型
  • KNN
  • 支援向量机
  • CART树
  • 类神经网路ANN

2. 非监督式学习

  • 主成分分析PCA
  • 关联分析
  • K-means

3. 集成学习

  • Bagging
  • Boosting
  • stacking

内容

1. 监督式学习

多元回归分析(线性)

  • 常见的回归系数估计方法:

    • 普通最小平方法(OLS):未知残差的分配,使所有观察值与估计值的残差平方和最小。
    • 最大概似法(MLE):已知残差的分配,使观察样本出现的机率最大(意即找出一组与观察值最接近的参考值)。

最常见的是普通最小平方法(Ordinary Least Squares, OLS)

  • 当为多元回归分析时(X1,X2,.....,Xn),需挑选适合的自变数X,分为三种方法:

    • 前向式(foreward):将X自变数一一加入模型,从最显着的开始加(只加显着的X)。
    • 後向式(backward):将自变数全部丢入模型,从最不显着的自变数开始剔除(只踢不显着的X)。
    • 逐步挑选(stepwise):综合前向及後向,直至模型显着後不剔除。(A变数显着,加入B变数後,A变成不显着而B显着,则剔除A变数,後加入C变数,以此类推)。

较常使用-逐步挑选(stepwise)

  • 四大假设:

    • 线性(Linearity):x与y是线性关系。
    • 常态性(Normality):若母体为常态分布,则残差项也要符合常态分布。
    • 同质性(Heteroscedasticity):残差项之间有相同的变异。
    • 独立性(Independency):残差项之间相互独立。
  • 优点:

    • 直观,线性容易理解。
    • 限制多,样本需求较少。
  • 缺点:

    • 无法处理非线性问题。
    • 会有共线性问题,但无法解决线性组合高度相关的问题。

正规化回归(Regularized Regression)

确认线性回归有over-fitting问题,再试试看"正规化回归"。

  • LASSO Regression:

    • 回归+L1 penalty(一阶惩罚项,绝对值)。
    • LASSO不仅能正规化优化模型,还能自动执行变数筛选(Feature selection)。
    • LASSO帮你识别并挑选出有最强讯号的一个变数。
  • 岭回归(Ridge Regression):

    • 回归误差平方和+L2 penalty(二阶惩罚项,平方项)。
    • 将回归系数值平均地分散在各个变数之间。
  • 弹性网罩模型(elastic nets):

    • 回归模型中,让L1惩罚项与L2惩罚项都加入模型(权重相加=1)。
    • LASSO为L2权重=0的型态,Ridge为L1权重=0的型态。
  • 参考资料:


罗吉斯回归(logistic regression)

  • 说明:
    建立二元类别机率值之胜率比,後对数值的线性分类模型,罗吉斯回归的依变项(Y)主要为二元的类别变项(亦即是或否,0或1),罗吉斯回归的自变项(X),可以是离散变数,也可以是连续变数。

    • 为线性分类模型。
    • 不需要常态分配的假设。
    • 使用的估计方法为最大概似估计法。
    • 罗吉斯回归使用的是sigmoid激活函数。
  • 参考资料:


朴素贝叶斯模型(Naïve Bayesian classifier)

为非线性分类模型。

  • 基本假设:

    • 每个变数之间相互独立关系。
    • 每个变数同等重要(权重相等)。
  • 优点:

    • 速度快,简单,有效。
    • 可用於多类别预测,并可获得Y的各类别机率。
    • 只需少量样本进行训练。
    • 可以处理带杂讯或遗缺值的资料(相对的,遗缺值会造成'零频率',导致某些特徵无法一起运算,须以平滑技术处理)。
  • 缺点:

    • 特徵同等重要且互相独立的假设通常不符合现实状况。
    • 不适合有大量数值属性的资料集。
    • 删除重复出现的高度相关的特徵,可能会丢失频率信息,影响效果。
  • 参考网址:


KNN(K nearest neighborhood)

  • 说明:

    • KNN为监督式学习,假设欲预测点是i,找出离i最近的k笔资料多数是哪一类,预测i的类型。
    • K为奇数较好,为偶数可能碰上无法分类的情况。
    • 当K=1的时候容易Over-fitting,而K很大的时候容易Under-fitting。
  • 优点:

    • 对异常值不敏感。
    • 资料输入无特别的限制。
    • 精度高。
  • 缺点:

    • 训练模型依赖训练集资料且不可丢弃。
    • 时间复杂度(计算经过几道程序)及空间复杂度(耗费的记忆体成本)较高。
    • 无法处理遗缺值。
  • 参考资料:


支援向量机 SVM (Support Vector Machines)

  • 说明:

    • 为一种监督式学习,利用统计风险最小化的原则来估计一个分类的超平面(hyperplane),找到决策边界,
    • 使到两分类的边界最大化(落在边界上或边界内的点称为支援向量support vector),以完美区隔两类别。
    • 但真实资料不可能完美分类,故SVM藉由误差限度不敏感损失函数(ε-insensitive loss)能容忍部分误差(即少许样本落在边界内)。
    • 运用到核函数,用意在於低维空间无法取得超平面的解,将维度转换到更高维空间,使其找到解。
  • 优点:

    • 解决高维特徵分类问题很有效。
    • 尽管特徵维度大於样本数依然可使用。
    • 核函数可将低维转换高维,可灵活解决各种非线性各种非线性分类回归问题。
  • 缺点:

    • 若特徵维度远高於样本数,效果则普通。
    • 对缺失值敏感。
    • 样本量过大时,映射到高维度,运算量会过高。
    • 核函数选择无适合的标准,较难选择。
  • 参考资料:


分类与回归树 (CART树)

  • 说明:

    • 可用於分类及回归,根据是否满足条件进行不断的二分。
    • 属於无母数分析方法,不需假设资料的线性关系或者常态分配。
    • 为随机森林演算法的基础。
    • 以某个目标函数,将样本递回分割(recursive partition)成许多同质群组,达到群组内异质度最小,分类就用组内多数决(基尼指数最小),回归就用均方误差(MSE)最小。
  • 优点:

    • 无须对母体进行预先假设。
    • 容易解释,视觉化。
    • 离散或连续皆可建模,且无需处理缺失值。
    • 可以透过交叉验证的剪枝来选择模型。
  • 缺点:

    • 容易overfitting或undrfitting。
    • 模型较不稳定,样本小变动,模型可能剧烈变动。
    • 准确度只局限於局部。

类神经网路ANN (Artificial Neural Networks)

  • 专有名词:

    • 输入层(Input Layer):

      • 输入资料X的地方,视为第0层节点。
    • 输出层(Output Layer):

      • 输出预测,也是最後一层。
    • 隐藏层(hidden Layer):

      • 位於输出层及输入层之间,都称为隐藏层。
    • 神经元(或称感知器,Neuron):

      • 为ANN的最基本的单元,每个神经元内都包含权重系数、线性函数、激活函数(activation function)。权重与线性函数接收输入层的数据後,做线性加权,利用激活函数转为非线性函数,後输入给下一层神经元做迭代。
         
    • 激活函数(activation function):

      • 将线性函数转换成非线性函数。
    • 损失函数(loss function):

      • 损失函数会根据预测的目标有不同的公式,目的都是为了合理的评估正向传播的输出ŷ与实际值y之间的差距,最小化损失函数。
    • 正向传播(forward propagation):

      • 由输入层输入资料至隐藏层再到输出层,为正向传播。
    • 反向传播(back propagation):

      • 将正向传播计算出的输出当成输入,利用梯度下降(gradient descent)来更新权重,最小化损失函数,回传至隐藏层,再做正向传播,反覆迭代直到终止条件为止。
  • 架构及运行方式:

    • 设定ANN的架构与初始参数:隐藏层数、各层神经元数、激活函数、初始化各层神经元的权重与偏差系数。
    • 从输入层输入样本,进行正向传播,至隐藏层转换为非线性函数後输出给下一层节点。
    • 预测的ŷ与实际值y做比较,计算出损失函数、权重及学习率等等,再进行反向传播。
    • 反覆进行迭代,直到达到终止条件为止。
    • 终止条件:
      • 迭代次数上限
      • 两次解的差异太小
  • 优点:

    • 模型稳定度佳。
    • 准确度高。
    • 有记忆功能。
    • 学习能力强。
    • 平行化处理能力强。
  • 缺点:

    • 引数多,调参数难。
    • 学习过程难以观察,模型较难解释。
    • 需要大量样本训练,且学习时间较长,甚至有可能达不到目的。
  • 参考资料:


2. 非监督式学习

主成分分析PCA(Principal components analysis,PCA)

  • 说明:

    • 为一种统计分析、简化数据集的方法,利用正交变换来对一系列可能相关的变数的观测值进行线性变换,从而投影为一系列线性不相关变数的值,这些不相关变数称为主成分(Principal Components)。
    • 将座标轴中心移至数据集的中心,利用旋转座标轴,使数据在C1轴的变异数最大,以保留更多信息,C1即为第一主成分。
    • 找一个与C1主成分的共变异数为0的C2主成分,以避免信息重叠。
    • 主成分分析经常用於减少数据集的维数,同时保留数据集当中对变异数贡献最大的特徵。
  • 优点:

    • 以变异数为衡量信息量的指标,不受数据集以外的因素影响。
    • 用正交转换方式,可消除数据成分间相互影响的因素。
  • 缺点:

    • 主成分间的特徵维度较难解释。
    • 容易舍弃一些也带有信息量的特徵,分析结果可能会受影响。
  • 参考资料:


关联分析

  • 说明:

    • 为一种简单、实用的分析技术,寻找数据之间的关联性或相关性,以预测某属性数据出现的规律。
    • 最常见的为购物篮分析,当A商品被购买时,可能会一同购买哪些商品,以寻找商品之间的关联性。
  • 衡量准则:

    • 支持度(support):计算品项集合在整个交易资料库出现的次数比,介於[0, 1],说明规则的统计显着性。

    • 信心度(confidence):利用支持度取出集合後,排列所有可能後挑出高信心度即为关联规则。比如支持度挑出{A, B}两品项,其可能规则包含{A} ⇒ {B}或{B} ⇒ {A}。{A}⇒{B}的信心度=P(B|A)=买A的人有多少个AB都买,说明规则的强度。

    • 增益率:说明项集{A}和项集{B}之间的独立性,公式为"AB共同出现次数/A和B单独出现次数",若Lift=1说明{A}和{B}相互独立,说明两个条件没有任何关联。如果Lift<1,说明两个事件是互斥的。一般认为Lift>3才是有价值的规则。

  • 参考资料:


K-means

  • 说明:

    • K-means为非监督学习,先给定K个群心(分K群),利用各个样本到每个群心,取最短欧式距离(直线距离),判给欧式距离最短的群心,群心再依照分类後的样本,再更新一次群心,直到所有群心的变动收敛为止。也被称为懒惰学习。
  • 优点:

    • 原理简单且训练速度快。
    • 算法可解释度高。
    • 主要仅需调整参数K。
  • 缺点:

    • 对於噪音及异常样本较敏感。
    • 成效很依赖输入的数据集,有些型态数据集很难收敛;或者某类别样本较少,聚类效果较差。
    • 效果较局部,并非全部类别准确。
  • 参考资料:


3. 集成学习(ensemble learning)

  • 说明:
    • 通过建立几个模型组合来解决单一预测问题。
    • 原理是在数据集上构建多个分类器/模型,各自独立学习和做出预测,这些预测最後结合成单预测,因此优於任何一个单分类器做出的预测。

引导聚集算法(Boostrap AGGregatING, BAGGING)

  • 说明:

    • 强模型的Error小但Var大。
    • 使用多个强模型结合,使Var缩小,并Error也不会有太大变化。
    • 各个模型无关联性。
    • 每个模型权重一致。
  • 方法:

    • 从训练样本中抽出(取後放回)多个同大小的data set,每个data set分别建立不同的模型。
    • 每个模型为保持多样性,不做任何改善(如决策树不做剪枝的动作),并且权重一致。
    • 结合每个模型後,若为类别就用多数决方式来决定结果,若为回归则用计算平均数来决定结果。
  • 模型:

    • 随机森林(Random Forest):
      • 为Bagging的方法。
      • 可平行运算。
      • 对离群值较不敏感。
  • 优点:

    • 原始资料具有许多噪音及杂讯,可以透过抽样方式避免噪音一同训练,进而改善模型的不稳定性。
  • 参考资料:


Boosting

  • 说明:

    • 弱模型的Error大但Var小。
    • 使用多个强模型结合,使Var缩小,并Error也不会有太大变化。
    • 每个模型有关联性。
    • 透过第一个模型对各个data set做分类/预测,用得来的错误来加强权重做学习,产第二个模型,新模型会学习到之前错误,以此类推,进而改善结果。
    • 与Bagging方法类似。
    • 不同之处在於需先进行一个模型才能找寻另一个模型,会对结果错误的模型加重权重,加以学习。
  • 模型:

    • AdaBoost:

      • 是一种Boosting分类算法。

      • 一般用於类别二分。

      • 方法:

        1. 透过一组data set训练出一个模型,data初始权重都为1。
        2. 对於分类/预测对的data减少权重,错误的data则加强权重,创造新的data set。
        3. 进行N次後,将N个模型结合(准确度高的模型权重较大,反之),进行"加权"投票决定最後结果。
    • GDBT(Gradient descent + Boosting):

      • 核心是CART回归树。

      • 引进残差的概念。

      • 与随机森林差异在於:

        1. 不可平行运算。
        2. 对於离群值较敏感。
        3. 只能用CART回归树。
        4. 具有残差的概念。
      • 与Adaboost不同在於:

        1. 用梯度下降针对模型做改善取得新的模型。
        2. 没有对训练集的data做权重的变更。
        3. 使变异数和满足误差要求,则求得最佳模型。
  • 参考资料:


堆叠法(stacking)

  • 说明:

    • 将不同的学习模型结合,给予每个模型权重,创造新的模型。
    • 与bagging和boosting不同在於,可以做模型的异质整合。
  • 参考资料:


<<:  [Day11] [笔记]React Hooks - UseRef

>>:  [2021铁人赛 Day11] General Skills 08

每个人都该学的30个Python技巧|技巧 28:想像力就是超能力,快试着自己创造模组(字幕、衬乐、练习)

之前都是教Python内建的函式,今天就要升级罗~今天要教到的是模组,模组跟函式一样都是可以自己创造...

用 Python 畅玩 Line bot - 07:Audio message

这次想要介绍的部分是 Audio message,它跟 Image message 一样可以透过li...

JavaScript IIFE (立即函数)

甚麽是立即函数? IIFE (Immediately Invoked Function Expres...

django新手村11-----缓存

缓存对於服务器的好处,在於使用者会将数据加载到内存,减少了对资料库的访问 终端输入 python m...

沟通这回事:ORID 与引导

前言 昨天分享了冰山理论,今天接着谈「焦点讨论法 | ORID」,并在後半延伸至引导学(Facili...