logistic回归不是线性回归,线性回归是一种预测算法,logistic回归是一种分类算法。什么是回归,如果存在一些数据点,用一条直线对数据进行拟合,这个拟合的过程就叫做回归。logistic回归就是根据数据的边界建立回归方程以此来进行分类。logistic回归算法训练分类器就是寻找最佳拟合参数。

Sigmoid函数


logistic回归模型控制变量 logistic回归模型简介_数据结构与算法

当x取值为0的时候 函数的值为0.5 ,当x变大是 函数值趋近与1,当x减小是函数值趋近与0.

可以利用如下公式 y = w0x0+ w1x1+w2x+.......wnx将n个特质值每一个都乘以一个对应的系数,将相得到值带入Sigmoid函数 大于0.5 的归为一类 小于0.5的归为一类。我们需要求得这一组w系数,使之乘以特质值之后代入sigmoid函数 输出正确的分类的结果。在这里需要用到梯度上升法。

梯度上升法

假如有函数 f(x,y), 那么有该函数的的剃度

logistic回归模型控制变量 logistic回归模型简介_logistic回归_02

,也就是沿x方向移动

logistic回归模型控制变量 logistic回归模型简介_数据结构与算法_03

, 沿y的方向移动 

logistic回归模型控制变量 logistic回归模型简介_logistic回归_04

。当我们的n个特征乘以对应的系数w之后,

带入sigmoid函数之后输出值与实际值做比较,得到的差值作为方向,一次类推N条数据的差值向量,将数据的每一类特征与这个差值向量矩阵相乘 ,得到系数矩阵w对应的每一个元素应该增大,还是减小

logistic回归模型控制变量 logistic回归模型简介_logistic回归_05

w是系数矩阵 ,

logistic回归模型控制变量 logistic回归模型简介_数据结构与算法_06

是步长,

logistic回归模型控制变量 logistic回归模型简介_系数矩阵_07

转置特征矩阵 (Y-y)实际值与输出值得差值矩阵。循环迭代上面的公式得到最后系数矩阵。

#梯度上升法
def gradAscent(dataMatIn, classLabels):
    dataMatrix = mat(dataMatIn)        #输入数据转换为矩阵
    labelMat = mat(classLabels).transpose() #将1*n的标签数组转换为n*1的矩阵
    m,n = shape(dataMatrix)
    alpha = 0.001
    maxCycles = 500 #权重循环迭代次数
    weights = ones((n,1)) #初始化权重为1
    for k in range(maxCycles):             
        h = sigmoid(dataMatrix*weights)    
        error = (labelMat - h)              #标签矩阵差
        weights = weights + alpha * dataMatrix.transpose()* error #权重迭代
    return weighs


 

总结

logistic回归的目的就是得到一个sigmoid函数的最佳拟合参数,求解这个最佳拟合参数的方法,可以可以采用梯度上升法。