逻辑回归(Logistic)

来源:互联网 发布:qt多线程共享数据 编辑:程序博客网 时间:2024/06/18 14:31

算法介绍

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、分类精度不高。




0 0
原创粉丝点击