zoukankan      html  css  js  c++  java
  • Lineage逻辑回归分类算法

    Lineage逻辑回归分类算法

    线性回归和逻辑回归参考文章:

    http://blog.csdn.net/viewcode/article/details/8794401

    http://www.cnblogs.com/jerrylead/archive/2011/03/05/1971867.html

    1、概述

    Lineage逻辑回归是一种简单而又效果不错的分类算法

    什么是回归:比如说我们有两类数据,各有50十个点组成,当我门把这些点画出来,会有一条线区分这两组数据,我们拟合出这个曲线(因为很有可能是非线性),就是回归。我们通过大量的数据找出这条线,并拟合出这条线的表达式,再有新数据,我们就以这条线为区分来实现分类。

    学习过程:

    下图是一个数据集的两组数据,中间有一条区分两组数据的线。

     

    显然,只有这种线性可分的数据分布才适合用线性回归

    逻辑回归的模型 是一个非线性模型,sigmoid函数,又称逻辑回归函数。但是它本质上又是一个线性回归模型,因为除去sigmoid映射函数关系,其他的步骤,算法都是线性回归的。可以说,逻辑回归,都是以线性回归为理论支持的。

    只不过,线性模型,无法做到sigmoid的非线性形式,sigmoid可以轻松处理0/1分类问题。

     2、算法思想

    Lineage回归分类算法就是将线性回归应用在分类场景中

    在该场景中,计算结果是要得到对样本数据的分类标签,而不是得到那条回归直线

    2.1、算法图示

    1) 算法目标()?

    大白话:计算各点的y到拟合线的垂直距离,如果

    距离>0, 分为类A

    距离<0, 分为类B

    2) 如何得到拟合线呢?

    大白话:只能先假设,因为线或面的函数都可以表达成

    y(拟合)=w1*x1 + w2*x2 + w3*x3 + ...

    其中的w是待定参数

    x是数据的各维度特征值

    因而上述问题就变成了 样本y(x) - y(拟合) >0 ? A : B

    3) 如何求解出一套最优的w参数呢?

    基本思路:代入“先验数据”来逆推求解

    但针对不等式求解参数极其困难

    通用的解决办法,将对不等式的求解做一个转换:

    1. “样本y(x) - y(拟合) ”的差值压缩到一个0~1的小区间,
    2. 然后代入大量的样本特征值,从而得到一系列的输出结果;
    3. 再将这些输出结果跟样本的先验类别比较,并根据比较情况来调整拟合线的参数值,从而是拟合线的参数逼近最优

    从而将问题转化为逼近求解的典型数学问题

     2.2、sigmoid函数

    上述算法思路中,通常使用sigmoid函数作为转换函数

    函数表达式:

     

    注:此处的x是向量

    函数曲线:

    之所以使用sigmoid函数,就是让样本点经过运算后得到的结果限制在0~1之间,压缩数据的巨幅震荡,从而方便得到样本点的分类标签(分类以sigmoid函数的计算结果是否大于0.5为依据)

     3、算法实现分析

    3.1、实现思路

    算法思想的数学表述:

    把数据集的特征值设为x1x2x3......

    求出它们的回归系数wi

    z=w1*x1+w2*x2..... 然后将z值代入sigmoid函数并判断结果,即可得到分类标签

    问题在于如何得到一组合适的参数wi

    通过解析的途径很难求解,而通过迭代的方法可以比较便捷地找到最优解

    简单来说,就是不断用样本特征值代入算式,计算出结果后跟其实际标签进行比较,根据差值来修正参数,然后再代入新的样本值计算,循环往复,直到无需修正或已到达预设的迭代次数

    注:此过程用梯度上升法来实现。

    3.2、梯度上升算法

    通俗解释:通过小步前进——》调整方向——》继续小步前进——》最终逼近最优解

    梯度上升是指找到函数增长的方向。在具体实现的过程中,不停地迭代运算直到w的值几乎不再变化为止。

    如图所示:

     

     

  • 相关阅读:
    45 岁,还写代码吗?
    给你 8 个接私活的网站
    一文回顾 Java 入门知识(下)
    5 种前途迷茫的编程语言
    JVM 内存的结构模型、堆与堆栈原理、对象在内存中的结构
    mysql 索引是否能提高UPDATE,DELETE,INSERT 处理速度
    【诈尸】【游戏】多人联机游戏推荐
    250.统计同值子树
    366. 寻找二叉树的叶子节点
    156.上下翻转二叉树
  • 原文地址:https://www.cnblogs.com/ahu-lichang/p/7172145.html
Copyright © 2011-2022 走看看