zoukankan      html  css  js  c++  java
  • 逻辑回归-监督学习

       

    1、解决的问题

      分类的问题,例如以下的二元分类问题:

      

    2、输入数据

      标称型数据,有特征有结果,依据特征与结果的对应关系来进行分类预测

    3、学习流程

      

      输入数据有噪声,使用一个概率分布来P(Y|X)描述数据,这个概率分布就是要找的target, 对于二元分类问题来说一个理想的分布:

      

      如果将输出结果限制到(0,1),那就就是一个“soft”二元分类:

      

    4、“soft”二元分类

      找到一个hypothesis使得在训练数据上的err最小;

      

      理想的数据都是由同一个概率分布P(Y|X)产生的:

      

      但是真正得到的数据是没有办法像理想数据一样给出了输出的概率值,而只是给出了一个二元分类的输出{+1, -1}:

      

      那么怎么使用只有{+1, -1}的数据进行输出属于(0, 1) 的预测结果;

    5、hypothesis set的形式

      根据输入数据以及相应的权重计算出“风险值”;

      

      配和权重计算“风险值”:

      

      将“风险值”映射到logistics function上转化成(0,1) 上的输出:

      

      

      最终得到一个hypothesis set

      

      

    6、三种模型的Ein的选择

      1、线性分类

      风险值计算完成使用sign()函数进行0/1转化,error function使用0/1函数:

      

      2、线性回归

      使用得到的W计算好风险值后直接输出,error function使用平方函数;

      

      3、logistics回归

      使用W计算好风险值后使用sigmoid函数进行输出转换成(0,1)的范围;

      

      逻辑回归的target:

      

      对于以下的数据集:

      

      该数据集是由同一分布f(x) = P(Y|X)产生的,那么产生上面的数据集的概率是:

       ==

      假设h= f,那么由h(x)产生以上数据集的概率是:

      

      如果这两个h(x) 和 f(x)很接近,表示Ein很小,那么就可以使用h(x)来代替f(x),表示该数据集由f(x)产生的概率很大;

      

      f和h很接近表示h和f的分布相同的情况的概率很大,同时由f产生该数据集的概率很大,因此g(X)应该是h假设集合中使得likelihood(h)最大的那个;

      

      likelihood(h)函数为:

      

      考虑到logistics 函数的对称行:

      

      likelihood(h)函数可以写成:

      

      由于对于所有的hypothesis set集合中的函数来说,数据集都是同一个,那么P(x1),P(x2),.....P(xN)同时相等的可以省去,同时考虑数据集各自的输出结果,上述likelihood(h)函数还可以简化为:(正比于)

      

      由于同一个hypothesis set 中唯一不同就是W权重系数的不同,因此上式可以变化为关于W的一个式子:

      

      由于处理连乘的问题比较复杂,因此可以加对数变成求和,同时在线性回归中采取的式最小化h,为了保持一致,可以将这里求最大改成求负数的最小:

      

      结合sigmoid函数:

      

      最终得到优化目标和Ein

      

      

    7、Ein(w)的优化方法:梯度下降法

      1) 优化目标的梯度求解

      

      使用微分的连锁性可得:

      

      最终结果:

      

      2、求解梯度为0 的点

      

      整个梯度的表达式由两部分相乘然后求和得到,want 梯度为0,如果求和的每一项都是0,那么和自然是0,每一个求和项都是0又可以分成以下两种情况:

      乘积的第一部分logistics 函数为0,或者(-ynxn)为0,这部分是由数据集决定的,相当于是个常数;

      logistics 函数为0,则要求(-ynWTxn)<<0,也就是(ynWTxn)>>0,这个条件表示数据集是线性可分的,那么只有在数据集是线性可分的情况下才满足这个条件;

      

      如果考虑整体的话,那么这个方程是一个非线性方程,不好解,放弃,

      

      以上的分析表明在logistics回归中没有像线性回归那样直接使用公式进行求解梯度的方式;

      参考PLA的梯度优化求解方法,逐步优化目标函数;

      

      修正参数:

      1) η 调整步长

      2) V 调整方向,V单位化后每次的调整的步长就是η

      

      

      

      

      η参数的选择:

      太小的太慢:                 太大的话不稳定:                动态的η参数

                  

      η参数要和这点的梯度大小成正相关:

      

      8、算法流程

      

      

       

       

      

  • 相关阅读:
    JS Function Arguments
    C# CuttingEdge.Conditions 验证帮助类库 文档翻译
    JS AngualrJs 指令
    每日踩坑 2018-06-19 AutoMapper简单性能测试
    C# 集合类-使用
    工具 EZDML表结构设计器
    unittest的discover方法
    转:unittest的几种运行方式
    unittest学习5-断言
    unittest学习4-跳过用例执行
  • 原文地址:https://www.cnblogs.com/daguankele/p/6289989.html
Copyright © 2011-2022 走看看