zoukankan      html  css  js  c++  java
  • Generative Learning algorithms

    "generative algorithm models how the data was generated in order to categorize a signal. It asks the question: based on my generation assumptions, which category is most likely to generate this signal?discriminative algorithm does not care about how the data was generated, it simply categorizes a given signal."

    discriminative:

    试图找到class之间的差异,进而找到decision boundary,最大可能性地区分数据。他是通过直接学习到$p(y|x)$(例如Logistic regress)或者$X ightarrow Yin (0,1,...,k)$(例如perceptron algrithm)

    generative:

    采取另外一种方式,首先由先验知识prori-knowledge得到 $p(x|y),p(y)$ 然后,通过Bayes rule:$p(y|x) = frac{p(x|y)p(y)}{p(x)} $来求得$p(y|x)$,其中$p(x)=p(x|y=1)p(y=1)+p(x|y=0)p(y=0)$。这个过程可以看做由先验分布去derive后验分布。当然,在只需要判断出可能性大小的情况下,分母无需考虑,即:$$argmax_yp(y|x) = arg max_yfrac{p(x|y)p(y)}{p(x)}\=argmax_yp(x|y)p(y)$$

    先验知识获取$p(x|y)和p(y)$的方式,是通过现有训练数据样本获得参数的过程。
    1. 首先假设一个模型,即样本分布的模型(是伯努利还是高斯分布)
    2. 然后通过似然估计likelihood function估计出参数
    3. 最后通过贝叶斯公式导出$p(y|x)$

    example

    数据集:$X=(x_1,x_2)$,$Yin{0,1}$

     

    1. 首先我们假设数据的条件分布$p(x|y)$服从多元高斯正态分布(multivariate normal distribution),则model形式如下:$$ysim extrm{Bernoulli}(phi) \ x|y=0 sim mathcal{N}(mu_0,Sigma) \ x|y = 1sim mathcal{N}(mu_1,Sigma )$$
    2. 接着通过最大似然估计(max likelihood estimate)估计参数。首先写出log似然函数:$$ell(phi,mu_0,mu_1,Sigma) = logprod_{i=1}^{m}p(x^{(i)},y^{(i)},mu_0,mu_1,Sigma) \ =logprod_{i=1}^mp(x^{(i)}|y^{(i)};mu_0,mu_1,Sigma)p(y^{(i)};phi).$$
      然后似然函数$ell$最大化,即求解似然函数对参数导数为零的点:$$phi=frac{1}{m}sum_{i=1}^{m}1{y^{(i)}=1} \ mu_0= frac{sum_{i=1}^{m}1{y^{(i)}=0}x^{(i)}} {sum_{i=1}^m1{y^{(i)}=0}} \ mu_1= frac{sum_{i=1}^{m}1{y^{(i)}=1}x^{(i)}} {sum_{i=1}^m1{y^{(i)}=1}} \ Sigma = frac{1}{m}sum_{i=1}^m(x^{(i)}-mu_{y^{(i)}})(x^{(i)}-mu_{y^{(i)}})^T$$得到参数的估计值$(phi,mu_0,mu_1,Sigma)$,亦即得到分布函数$p(x|y)$。对照上面的图,$mu_0,mu_1$是两个二维向量,在图中的位置是两个正态分布各自的中心点,$Sigma$则决定者多元正态分布的形状。
      ![此处输入图片的描述][2]
      从这一步可以看出获取参数的方式是“学习”得到的,即从大量样本-先验知识去估计模型,这样想是很自然的逻辑.然而严格的依据却是大数定律law of large numbers (LLN),大数定律的证明很精彩,可自行查找资料。

    3. 通过贝叶斯公式比较$p(y=1|x)$和$p(y=0|x)$,来判别类属性。
  • 相关阅读:
    leetcode33. Search in Rotated Sorted Array
    pycharm 设置sublime text3 monokai主题
    django class Meta
    leetcode30, Substring With Concatenation Of All Words
    Sublime text3修改tab键为缩进为四个空格,
    sublime text3 python打开图像的问题
    安装上imesupport输入法依然不跟随的解决办法,
    sublime text3 的插件冲突弃用问题,
    sublime text3 BracketHighlighter括号匹配的设置
    windows 下wget的使用
  • 原文地址:https://www.cnblogs.com/vin-yuan/p/5094960.html
Copyright © 2011-2022 走看看