逻辑回归(Logistic)

本文介绍了逻辑回归的基本概念,它是一种广义线性模型,与多重线性回归相似但因变量处理方式不同。重点讲解了使用梯度上升法优化的逻辑回归,包括随机梯度上升算法的流程,并给出了Python实现。此外,还讨论了该算法的优点(如计算成本低、易于理解和实现)和缺点(如欠拟合和过拟合问题,分类精度有限)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法介绍

Logistic回归是一种广义线性回归(generalizedlinear model),因此与多重线性回归分析有很多相同之处。它们的模型形式基本上相同,都具有 w`x+b,其中w和b是待求参数,其区别在于他们的因变量不同,多重线性回归直接将w`x+b作为因变量,即y =w`x+b,而logistic回归则通过函数L将w`x+b对应一个隐状态p,p =L(w`x+b),然后根据p 与1-p的大小决定因变量的值。如果L是logistic函数,就是logistic回归,如果L是多项式函数就是多项式回归。本系统的L函数采用的是梯度上升法,梯度上升法的模型图如下:


它的公式如下:

算法的关键点就聚焦在 这个参数的设置上。

通过优化,本系统采用的是随机梯度上升算法:

流程图如下:


基本步骤说明:

1、   每次迭代都需要调整, 修改的目的是环节模型的高频波动,本系统的 计算方法是:  ,使得每次迭代的 值会变小,但是不会缩小为0;

2、  通过随机选取样本来更新回归参数,这种方式避免了顺序数据的周期性波动。

3、  Sigmod函数就是一个类阶跃函数 ,作用是把数据进行归一化

Python代码实现如下:

def stocGradAscent1(dataMatrix, classLabels, numIter=150):
    m,n = shape(dataMatrix)
    weights = ones(n)   #初始化权重值
    index = 1;
    for j in range(numIter):
        dataIndex = range(m)
        for i in range(m):
#aplha值每次随机调整大小通过i和j
            alpha = 4/(1.0+j+i)+0.0001   
#随机选择数据
            randIndex = int(random.uniform(0,len(dataIndex)))
#依据数据向量和权重内乘预测标签值
            h = sigmoid(sum(dataMatrix[randIndex]*weights))
#依据预测标签值和现有标签值计算delta值
            delta = classLabels[randIndex] – h
#更新权重
            weights = weights + alpha * delta * dataMatrix[randIndex]
            del(dataIndex[randIndex])
return weights

优点

1、计算代价不高,易于理解和实现

缺点

1、容易产生欠和过拟合。

2、分类精度不高。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值