zoukankan      html  css  js  c++  java
  • 【2008nmj】Logistic回归二元分类感知器算法.docx

    给你一堆样本数据(xi,yi),并标上标签[0,1],让你建立模型(分类感知器二元),对于新给的测试数据进行分类。

     

    要将两种数据分开,这是一个分类问题,建立数学模型,(x,y,z),z指示[0,1],那么假设模型是线性的,如下图所示。有一道线ax+b=y

    那么左右两边数据实际上并不等量,那么这时最小二乘并不好用,因为它没有考虑到可能性的大小等因素。那么用最小二乘建模的比较粗糙。(并没有用到标签数据……?用到了。)而感知器又比较粗暴简单的分为0、1两种情况。实际上属于0的可能性和属于1的可能性都是有可能的,只是大或小而已。因此用Logistic回归建模的方法是最好的?(也许还有神经网络、遗传算法、灰度模型等模型)

    x1(x)

    x2(y)

    z(z)标签

    7

    31

    0

    12

    22

    0

    13

    42.5

    0

    15

    34

    0

    18

    9

    0

    22.5

    35

    0

    23

    44.5

    0

    25

    25

    0

    25

    34

    0

    25

    54.5

    0

    32

    19

    0

    34

    45

    0

    36

    37

    0

    36

    36

    0

    45

    51

    0

    40

    42

    1

    48

    9

    1

    48

    24

    1

    54

    16

    1

    56

    6

    1

    56

    38

    1

    61

    30.5

    1

    64.5

    23

    1

    69

    13

    1

    74

    40

    1

    76

    4

    1

    由标签可知这是监督分类。

    设每个样本为0和为1的可能性符合sigmoid分布。

    设模型x=w0+w1x1+w2x2

    按sigmoid函数的形式求出:

     

    由于sigmoid函数的定义域为(-∞,∞),值域为(0,1),因此最基本的LR分类器适合对两类目标进行分类。

    所以Logistic回归最关键的问题就是研究如何求得w0,w1,…,wn这组权值。这个问题是用极大似然估计来做到。

    怎样分类效果最好呢?

    下面正式地来讲Logistic回归模型。

    考虑具有2个独立变量的向量x=(x1,x2),设条件概率

    P(y=1|x)=p为根据观测量相对于某事件x发生的概率。那么Logistic回归模型可以表示为

     

    这里称为Logistic函数。其中

    那么在x条件下y不发生的概率为

     

    所以事件发生与不发生的概率之比为

     

    这个比值称为事件的发生比(the odds of experiencing an event),简记为odds。

    对odds取对数得到

     

    可以看出Logistic回归都是围绕一个Logistic函数来展开的。接下来就讲如何用极大似然估计求分类器的参数。

    假设有个观测样本,观测值分别为,设为给定条件下得到的概率,同样地,

    的概率为,所以得到一个观测值的概率为

    因为各个观测样本之间相互独立,那么它们的联合分布为各边缘分布的乘积。得到似然函数为

     

    然后我们的目标是求出使这一似然函数的值最大的参数估计,最大似然估计就是求出参数

    ,使得

    取得最大值,对函数取对数得到

     

    继续对这分别求偏导,得到个方程,比如现在对参数求偏导,由于

     

    所以得到

    这样的方程一共有个,所以现在的问题转化为解这个方程形成的方程组。

    上述方程比较复杂,一般方法似乎不能解之,所以我们引用了牛顿-拉菲森迭代方法求解。

    利用牛顿迭代求多元函数的最值问题以后再讲。。。

    简单牛顿迭代法:http://zh.m.wikipedia.org/wiki/%E7%89%9B%E9%A1%BF%E6%B3%95

    实际上在上述似然函数求最大值时,可以用梯度上升算法,一直迭代下去。梯度上升算法和牛顿迭代相比,收敛速度

    慢,因为梯度上升算法是一阶收敛,而牛顿迭代属于二阶收敛。

    http://blog.csdn.net/ariessurfer/article/details/41310525

    参考文献:

    1. 公式法

     

    >>X=[7 31;12 22;13 22;15 34;18 9;22.5 35;23 44.5;25 25;25 34;25 54.5;32 19;34 45;36 37;36 36;45 51;40 42;48 9;48 24;54 16;56 6;56 38;61 30.5;64.5 23;69 13;74 40;76 4];

    >>Y=[-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;1;1;1;1;1;1;1;1;1;1;1]

    >>A=inv(X'*X);

    >>theta=A*X'*Y;

    2. logistic regression

    ?

     

  • 相关阅读:
    Oracle的分区打点
    学习Struts2经验总结
    优化MVC,实现数据库表的记录的添加、删除、修改、查询。
    基于struts研究传值问题
    基于“MVC”框架集设计模式,开发用户管理系统!
    使用Struts,实现简单的登录
    QT学习4:使用窗口部件
    QT学习9:绘制函数
    QT学习8:准备战斗
    QT学习6:组装丰富的积木!
  • 原文地址:https://www.cnblogs.com/2008nmj/p/8342216.html
Copyright © 2011-2022 走看看