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)是这样设定的:

  • 相关阅读:
    有关系统架构的高可用原则
    Redis面试篇 -- 如何保证缓存与数据库的双写一致性?
    Redis面试篇 -- Redis常见性能问题和解决方案?
    Redis面试篇 -- Redis主从复制原理
    Python3如何安装pip工具?
    Redis面试篇 -- Redis持久化的方式有哪些?优缺点分别是什么?
    Linux在丢失的情况下重置密码
    APC (Asynchronous Procedure Call)
    eigenface资料整合
    python+opencv模拟生成运动模糊核
  • 原文地址:https://www.cnblogs.com/wangshen31/p/6921296.html
Copyright © 2011-2022 走看看