1 Matching Annotations
  1. Sep 2018
    1. 如何解决分类问题无法微分

      1. perceptron(introduce in future)
      2. SVM(introduce in future)
      3. generative model: probability based method(introduce here)

      基于概率(Bayes)的分类问题解法 --- 生成模型:

      蓝盒子,绿盒子,其中各置5个球,球也有蓝色和绿色。已知:

      1. 蓝盒:4蓝 + 1绿
      2. 绿盒:2蓝 + 3绿

      问:现抽出一蓝球,问他来自两个盒子概率各是多少:P(blueBox | blueBubble)=?

      这个问题使用 bayes 条件概率公式非常好求,只需要知道四个值

      1. Prior of blueBox: \(P(blueBox)\)
      2. Priof of greenBox: \(P(greenBox)\)
      3. condition probability of blueBubble given blueBox: \(P(blueBubble | blueBox)\)
      4. condition probability of blueBubble given greenBox: \(P(blueBubble | greenBox)\)

      类比:

      蓝盒子 --- class 1;

      绿盒子 --- class 2;

      class 1,class 2,各有很多样本。已知:

      1. class 1:海龟,金枪鱼,
      2. class 2:老鹰,白鸽,

      问:现有一鸭嘴兽,问他来自两个分类的概率各是多少?

      我们同样需要知道 4 个值

      1. Prior
      2. Prior
      3. condition prob
      4. condition prob

      counting based method for Prior

      从训练集中,直接“数”出标签为 C1 的样本数量,和标签为 C2 的样本数量各是多少,记做 N1 , N2.

      \(P(C1) = N1/(N1 + N2)\)

      \(P(C2) = N2/(N1 + N2)\)

      naive bayes method for condition probability

      分类问题中的条件概率不同于“盒子抽球”的最大地方在于:你要计算的 \(P(x|C1)\) 中的 x 是现有样本集中没有的

      把当前 c1 样本 和 c2 样本都想象成概率分布,而当前数据集仅仅是根据概率分布做的抽样(全体中的部分)

      如果我们能得到这个概率分布,我们就可以知道鸭嘴兽属于陆生和海生的概率各是多少。

      假设:c1 和 c2 的概率分布是高斯分布,且他们都是高斯分布集合( gaussian distribution hypothesis )中的一个 gaussian distribution, 我们该如何找到这个高斯分布呢 --- 只需确定 \(\Sigma\) 和 \(\mu \), 就可以唯一确定一个高斯分布。

      那如何通过样本来倒推出 \(\Sigma\) 和 \(\mu \) 呢?

      maximum likelihood

      找到一个 \(\mu, \Sigma\) ,由他确定的高斯分布在所有的高斯分布中,产生数据集的概率是最高的。

      \(f_{\mu,\Sigma}(x) = \frac{1}{(2\pi)^{D/2}}\frac{1}{|\Sigma|^{1/2}}exp(-\frac{1}{2}(x-\mu)^T\Sigma^-1(x-\mu))\)

      \(L(\mu,\Sigma) =f_{\mu,\Sigma}(x^1)f_{\mu,\Sigma}(x^2)f_{\mu,\Sigma}(x^3)......f_{\mu,\Sigma}(x^N)\)

      \(\mu^\star, \Sigma^\star = \arg\max_{\mu,\Sigma}L(\mu,\Sigma)\)

      这个 \(argmax\) 有一个很直观的公式解,可以直接记住:

      \(\mu^\star = \frac{1}{N}\sum_{n=1}^{N}x^n\)

      \(\Sigma^\star = \frac{1}{N}\sum_{n=1}^{N}(x^n-\mu^\star)(x^n-\mu^\star)^T\)

      Naive Bayes

      如果不适用极大似然估计,也可以使用 Naive Bayes 方法来推算 Prior probability.

      \(P(y|x) = \frac{P(x|y)P(y)}{P(x)=\sum^K_{i=1}{P(x|y_i)P(y_i)}}\)

      通过 count-based methodNaive Bayes(

      \(P([1,3,9,0] | y_1)=P(1|y_1)P(3|y_1)P(9|y_1)P(0|y_1)\) ) 先计算出:

      \(P(x|y_1)P(y_1)\)

      \(P(x|y_2)P(y_2)\)

      \(P(x|y_3)P(y_3)\)

      ...

      All done

      一旦得到了这个 \(\mu,\Sigma\) 我们就可以得到分类1 产生 x 的概率(即便他不存在于数据集中)的概率:

      \( P(x | C_1) = P(x | Gaussian_1(\mu_1, \Sigma_1))\)

      分类2 产生 x 的概率, 也很容易得到:

      \( P(x | C_2) = P(x | Gaussian_2(\mu_2, \Sigma_2))\)

      根据 bayes 公式:

      \(P(C_1 | x) = \frac{P(x | C_1) * P(C_1)}{P( x | C_1) * P(C_1) + P(x | C_2) * P(C_2)}\)