• 逻辑回归-1.原理


    逻辑回归

    解决分类问题:将样本的特征和样本发生的的概率联系起来,逻辑回归既可以看作是分类算法,也可以看作回归算法

    考虑之前的线性回归算法:$hat y = f(x) $ --> $ hat y = X_b cdot heta $ ,其中值域为:$ (-infty,+infty)$
    对于概率来讲,它的值域为[0,1],所以,需要将结果作为特征值传入$ sigma $函数:

    [hat p = sigma (X_b cdot heta) ]

    其中$ sigma $ 的表达式为:$ sigma (t)= frac{1}{1+e^{-t}} $

    绘制$ sigma(t) $函数

    import numpy
    import matplotlib.pyplot as plt
    
    def sigmoid(t):
        return 1/(1+numpy.exp(-t))
        
    x = numpy.linspace(-10,10,500)
    y = sigmoid(x)
    plt.plot(x,y)
    plt.show()
    

    由上可以看出,函数将值域映射到[0,1]了,当t取0时,$ sigma $取0.5
    逻辑回归结构:

    逻辑回归的损失函数

    如果y的真实分类值为1,而预测的p越大,损失越小,预测的p越小,损失越大
    如果y的真实分类值为0,而预测的p越大,损失越大,预测的p越小,损失越小

    由此特性,可以定义损失函数:

    画出y=1时的损失函数:$ -log(hat p) $:

    def log(t):
        return numpy.log(t)
        
    p = numpy.linspace(0,1,500)
    y1 = -log(p)
    plt.plot(p,y1)
    plt.show()
    

    预测的概率p越大,准确率越高,损失值越小,当p为1时,准确率100%,损失为0
    画出y=0时的损失函数:$ -log(1-hat p) $:

    预测的概率p越大,准确率越低,损失值越大,当p为1时,准确率为0,损失无穷大

    将上面损失函数合二为一:$ cost = -ylog(hat p)-(1-y)log(1-hat p) $

    由此得出逻辑回归的损失函数:

    [J( heta) = -frac{1}{m}sum_{i=1}^{m}y^{(i)}log(hat p^{(i)})+(1-y^{(i)})log(1-hat p^{(i)}) ]

    其中:$ hat p^{(i)} = sigma ( heta^T cdot x_b) = frac{1}{1+e{-X_b{(i)} cdot heta }} $

  • 相关阅读:
    并发编程(四)—— ThreadLocal源码分析及内存泄露预防
    并发编程(三)—— ReentrantLock的用法
    并发编程(二)—— CountDownLatch、CyclicBarrier和Semaphore
    并发编程(一)—— volatile关键字和 atomic包
    Java 多线程(四)—— 单例模式
    Java 多线程(三)—— 线程的生命周期及方法
    Java 多线程(二)—— 线程的同步
    星空雅梦
    星空雅梦
    星空雅梦
  • 原文地址:https://www.cnblogs.com/shuai-long/p/11348320.html
Copyright © 2020-2023  润新知