您的位置:首页 > 其它

逻辑回归(Logistic)

2016-09-18 11:51 204 查看

算法介绍

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、分类精度不高。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐