zoukankan      html  css  js  c++  java
  • 机器学习知识体系

    这是机器学习知识体系中的逻辑回归内容,完整的知识体系可以查看这里

    分类问题和逻辑回归

    不同于线性回归,逻辑回归是用于解决离散型的输出结果的问题(分类问题)。典型的分类问题例如:

    - 判断是否垃圾邮件

    - 判断肿瘤良恶性

    - 判断是否存在恶意的在线交易 

    对于分类问题,y的输出等于 0 或者 1。逻辑回归函数式输出,它的输出范围是: ,以0.5作为临界值(Threshhold),y的取值如下:

    如果 ,y = 1

    如果, y = 0

    函数式表达

    逻辑回归的函数表达如下:

    其中

    被称为logistic function 或者 sigmoid function。这个函数图形如下:

    在这里我们不去研究如何得出这个函数,但可以仔细观察这个函数的几点特性:

    1. g(z)是一个输出值在[0,1]的函数,并且当z >= 0, g(z) >= 0.5,z < 0, g(z) < 0.5,所以从这点来说非常符合我们对逻辑回归函数的期望。

    2. 这个函数在z=0附近曲率非常陡峭,所以输出值很有很大的区分度。举个例子,一旦z > 0,那么g(z)往往会比0.5大较多。

    代价函数

    逻辑回归的代价函数如下:

    代价函数的图形如下:

      

    可以看出:

    当y=1时: h(x) -> 1, cost(h(x), y) -> 0, h(x) -> 0, cost(h(x),y) ->  

    当y=0时: h(x) -> 0, cost(h(x), y) -> 0, h(x) -> 1, cost(h(x),y) ->  

    所以这个函数很好的表达了我们的意愿,h(x)和y越是接近,代价函数越小,反之则越大,并且这个函数是个凹函数始终存在最优解。

    将y=1和y=0的代价函数合并,可以得到如下函数

    整个代价函数表示如下:

    梯度下降算法

    梯度下降算法基本方式如下:

    所以关键是推导出对于的偏导数如下:

    "Conjugate gradient", "BFGS", 和 "L-BFGS" 算法可以比梯度下降算法更好的计算出,所以建议可以直接使用Octave或者matlab里面自带的方法。

    1. 首先需要计算出 和

    function [jVal, gradient] = costFunction(theta)
    jVal = [...code to compute J(theta)...];
    gradient = [...code to compute derivative of J(theta)...];
    end

    2. 使用“fminunc()”方法计算出

    options = optimset('GradObj', 'on', 'MaxIter', 100);
    initialTheta = zeros(2,1);
       [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

     

    多分类问题

    多分类问题指的是分类存在多种情况:

    对于多分类问题,我们通常将其转化成Binary Classification问题,例如:

    我们把Class 1(三角形)标记为一种类型,然后把其他几种类型都当成另一种类型,然后训练出 ,h(x) 代表 y = i的概率情况。于是每个分类,我们都可以得出对应的h(x)。

    所以将来对于一个测试数据x,我们需要找到那个 i (某个分类)可以最大化 , 于是那个 i 就是测试数据x对应的分类值。

  • 相关阅读:
    [转发]深入浅出EventSourcing和CQRS
    [转载]缓存与数据库双写一致性问题
    关于com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“java.lang.RuntimeException: Could not generate DH keypair”
    [转载]安装sql2016时提示Polybase 要求安装Oracle JRE 7更新51 (64位)或更高版本”规则失败
    windows安装配置压缩版mysql
    virtualbox虚拟机centeros7系统桥接网卡网络配置
    oracle导入dmp文件(恢复数据)
    解决PL/SQL DEVELOPER12查询中文乱码问题(本地没装Oracle)
    JAVA线程Thread
    深入构造器
  • 原文地址:https://www.cnblogs.com/wdsunny/p/6369916.html
Copyright © 2011-2022 走看看