L20 ML I

  • 本节主题 --- model-based classification with Naive Bayes 用朴素贝叶斯网络进行分类的应用和训练

  • 之前我们一直在讲如何利用 model 去实现最优决策,ML 是讲如何从数据或经验中得到一个model

    • 学习参数(e.g. probabilities)
    • 学习结构(e.g. BNs)
    • 学习隐藏状态 (e.g. clustering, neural nets)
  • Classification

    • 数据集:每个数据点x都与某个标签(即类别)y相关联
    • 分类目标:给定输入x,编写一个算法来预测标签y
    • 过程工作流程
      • 从输入中提取特征:描述每个x的属性,并希望有助于分类
      • 在特征上运行某些机器学习算法:比如朴素贝叶斯
      • 输出一个预测的标签y
  • Training

    • 机器学习算法从数据中学习特征和标签之间的模式
    • 你不必自己推理数据
    • 你被提供了训练数据:大量的示例数据点和它们的实际标签
  • 基于模型的方案 Model-based approach

    • 建立一个模型(例如贝叶斯网络),其中输出标签和输入特征都是随机变量
    • 实例化任何观察到的特征
    • 查询在特征条件下的标签分布
  • Naive Bayes Model

    • 它的结构就是 两层树结构
    • 我们需要学习 root 的概率分布以及各个 leave 在给定root下的条件概率分布 i.e. CPTs
    • 执行训练:
      • 使用训练数据集来估计概率表
      • 估计 P[Y] = 每个标签出现的频率是多少?
      • 估计 P(F|Y) = 标签如何影响特征?
    • 执行分类:
      • 实例化所有特征:你知道输入特征,所以它们是你的证据
      • 查询 P(Y|f1, f2 ..., fn)
      • 给定所有输入特征的标签概率,使用推理算法(例如变量消除)来计算这个概率
    • Naive Bayes Inference 示例

      • ![[NaiveBayesInfe.png]]
    • Bag-of-words Naive Bayes

      • 在区分垃圾邮件与否是,一般我们会提取邮件的特征作为 leave,而标签作为 root
      • 但是 Bag-of-words中,我们将完整的邮件内容全部考虑进去,即将每个位置的词都作为一个特征 leave,标签依旧是root
      • 两者的计算方式是一致的,只是特征上不同
  • Parameter Estimation 参数估计

    • 利用 Maximum Likelihood,即选择一个参数设置 \(\theta\) 使得 \(P(observation|\theta)\) 最大化
    • 最大似然估计
      • \(\theta_{ML}= argmax_\theta P(X|\theta)=argmax_\theta \prod_i P_\theta(x_i)\)
      • \(P_{ML}(x)=\frac{count(x)}{total \ samples}\)
    • 另一种视角
      • \(\theta_{MAP}=argmax_\theta P(\theta|X)=argmax_\theta P(X|\theta)P(\theta)/P(X)\)
  • Overfitting 过拟合

    • 过拟合会对没见过的sample表现非常差,也会因小噪声而导致不正确的结果
    • 如果只针对训练数据疯狂训练就容易产生过拟合

    • 为了更好的泛化性来防止过拟合,我们需要 smoothing

      • Laplace Smoothing
        • 将所有可能出现的情况都加 1 or k (这个可以指定),当然也可以指定只加 \(\alpha\) 这些情况
        • 如下图所示为Laplace(+1)的例子![[LaplaceEstimate.png]]
    • 同时我们的数据往往分成 三份
      • Training、Held-out Data、Test Data
      • 其中,Held-out Data 是验证集,不作为训练,而是作为 Tuning
        • 根据 smoothing,我们会有超参数 k(具体加多少),\(\alpha\)(具体加哪些),而Tuning,就是在 held-out Data上调整超参数