【机器学习实战】logistic回归

Sigmoid函数

逻辑函数.png

逻辑函数图像.png

     作用:接受所有的输入然后预测出类别。进行分类时,我们在每个特征上都乘上一个回归系数,然后将所有的结果相加,作为输入参数z,带入Sigmoid函数得到一个范围在0~1之间的数值。任何大于0.5的被归入1类,否则归入0类。所以,logistic回归也可以看成是一种概率估计。

梯度上升法确定最优回归系数

     sigmoid函数的输入记为z,即z=w0x0+w1x1+w2x2+...+wnxn,如果用向量表示即为z=wTx,它表示将这两个数值向量对应元素相乘然后累加起来。其中,向量x是分类器的输入数据,w即为我们要拟合的最佳参数。logistic回归最重要的是要找到最佳的拟合参数。

     sigmoid梯度上升法,它的基本思想是:要找到某函数的最大值,最好的方法就是沿着该函数的梯度方向搜寻。如果函数为f,梯度记为D,a为步长,那么梯度上升法的迭代公式为:w:=w+a*Dwf(w)。该公式停止的条件是迭代次数达到某个指定值或者算法达到某个允许的误差范围。
     sigmoid更新机制简单理解为:将对应权重的z带入Sigmoid函数,计算出结果(范围0~1),将该结果与样本已知的类别相减得到误差值,用每个样本对应的步长*系数*差值来更新原来的系数。
     sigmoid

def gradAscent(dataMatIn, classLabels):
    dataMatrix = mat(dataMatIn)             #convert to NumPy matrix
    labelMat = mat(classLabels).transpose() #convert to NumPy matrix
    m,n = shape(dataMatrix)
    alpha = 0.001
    maxCycles = 500
    weights = ones((n,1))
    for k in range(maxCycles):              #heavy on matrix operations
        h = sigmoid(dataMatrix*weights)     #matrix mult
        error = (labelMat - h)              #vector subtraction
        weights = weights + alpha * dataMatrix.transpose()* error #matrix mult
    return weights

随机梯度上升

     梯度上升法每次更新回归系数都需要遍历整个数据集,当样本数量较小时,该方法尚可,但是当样本数据集非常大且特征非常多时,那么随机梯度下降法的计算复杂度就会特别高。一种改进的方法是一次仅用一个样本点(随机选取样本最好,使用之后删掉该值)来更新回归系数,即随机梯度上升法。由于可以在新样本到来时对分类器进行增量式更新,因此随机梯度上升法是一个在线学习算法。
     改进:将alpha在每次迭代中进行调整,alpha=4/(1.0+i+j)+0.01,其中i样本点的下标,j是迭代次数,当j<<max(i)时,alpha并不是严格下降。避免参数的严格下降常见于优化算法中。随机选取样本解决了周期波动的问题,调整alpha

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Logistic回归 主要内容Sigmoid函数和Logistic回归分类器最优化理论初步梯度下降最优化算法数据中...
    geekLiu阅读 1,491评论 0 2
  • 【主要内容】 Sigmoid函数和Logistic回归分类器 最优化理论初步 梯度下降最优算法 数据中的缺失项处理...
    小二金刚阅读 659评论 0 2
  • 一、Logistic回归介绍   回归算法有很多,比如:线性回归、Logistic回归、多项式回归、逐步回归、岭回...
    nobodyyang阅读 935评论 0 1
  • 一位朋友谈到他亲戚的姑婆,一生从来没有穿过合脚的鞋子,常穿着巨大的鞋子走来走去。儿子晚辈如果问她,她就会说:“大小...
    Gardenia_3094阅读 155评论 0 0
  • 你看着我 我在你眼里 隔着一朵微笑的玫瑰 我看着你 你在我心里 闪烁着一支美丽的蜡烛 恰如你美丽的脸庞 小提琴拉出...
    歌馆楼台阅读 154评论 0 1