(笔记)logistic回归

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

Sigmoid函数

  

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

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

梯度上升法

假如有函数 f(x,y), 那么有该函数的的剃度,也就是沿x方向移动, 沿y的方向移动 。当我们的n个特征乘以对应的系数w之后,

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

w是系数矩阵 ,是步长,转置特征矩阵 (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函数的最佳拟合参数,求解这个最佳拟合参数的方法,可以可以采用梯度上升法。

猜你喜欢

转载自www.cnblogs.com/FMS-Shaw/p/8947843.html