zoukankan      html  css  js  c++  java
  • 第一个分类算法

    以前我们要预测的y是连续的,现在我们即将要讨论的分类算法中,y是离散的值。

    先看一些分类的问题,像medical diagnosis——医学诊断,判断你是否生病;垃圾邮箱过滤器——判断一封邮件是不是垃圾邮箱。

    也不是说这样的问题完全不能用线性回归的方式进行分类,但有很多时候,线性回归不能很好地进行分类。

    假设现在我们知道这个y∈{0,1},y只能取0或1. ,所以我们的假设hθ(x)不能再是线性函数                                    所以现在我们要改变我们的hypothesis,即hθ(x) ,使新的hθ(x) 的值在[0,1]里。

    我们选择

               hθ(x) = g(θT*x) = 1    /  ( 1+exp(-θT*x)  )

          g(z) = 1/(1+e^-z)

    is called the logistic function or the sigmoid function

    P(y = 1 | x;θ) = hθ(x)

    P(y = 0 | x;θ) = 1−hθ(x)   即用这个hθ(x)来预测y=1或0的概率

    合在一条式子里就是:p(y | x;θ) = (hθ(x))^y* (1−hθ(x))^(1−y) 

    和之前一样:L(θ)=p(y | x;θ)=

    =(连乘,从i=1到i=m)p(y^(i) | x^(i);θ)

    = (连乘,从i=1到i=m)   (hθ*(x^(i))^y(i) * (1−hθ(x^(i))  ^(1−y(i))

    同样的,为了更好的数学计算,我们又定义ℓ(θ) = logL(θ)

    = (连加,从i=1加到i=m)y(i) logh(x^(i)) + (1−y^(i))log(1−h(x^(i)))   这里hθ(x^(i))漏写了θ

     好的那么我们怎么另这个函数最大化呢?

    我们可以用之前学过的梯度下降算法,虽然那个是最小化。

    这就是logistics regression

    这玩意看起来是不是很眼熟!!感觉和之前那个线性回归的表达式一毛一样,就是那个减号变成加号而已

    但这根本是两个完全不同的算法!因为这个hθ(x^(i))不是线性函数

    来再讲一下这个感知器算法(perceptron algorithm)

    在logistic regression中,我们的 g(z)会生成0-1之间的数,而感知器算法的g(z)是这样设定的:

  • 相关阅读:
    Selenium+Java(三)Selenium元素定位
    Selenium+Java(二)Selenium打开IE浏览器
    Selenium+Java(一)Selenium基础环境配置
    Spring缓存注解@Cacheable
    [阿里云] 阿里云修改主机名
    [openwrt]openWrt安装管理界面中文包
    [Git] 仅仅Pick一次commit 合并到另一个分支
    [线程池]线程池参数设置
    [Kibana] Kibana 语法
    [mybatis]list的foreach的使用
  • 原文地址:https://www.cnblogs.com/wangshen31/p/6921296.html
Copyright © 2011-2022 走看看