logistic回归算法详细分析与Python代码实现注释
2017-10-31 19:42
976 查看
logistic回归是线性回归算法的一种。
线性模型
基本结构为f(x)=w0+w1∗x1+...+wn∗xn=wTx
其中wi是每个特征的参数。
当我们知道了w向量的值之后,我们就可以根据给定的x向量来计算f(x),给出预测结果。
损失函数
我们采用平方损失函数作为我们训练的损失函数J(w)=12∑m1(yi−fw(xi)2
1/2是为了在后边求偏导数的时候用到
梯度下降
在进行预测的时候目标就是损失函数最小,是用梯度上升或者梯度下降的方式来进行最优化求解。其基本思想是:要找到某函数的最大/小值,最好的方式就是沿着函数上升或者下降的梯度方向探寻。也就是我们说的导数。对J(w)进行求偏导之后得到的结果为∂J(w)∂wj=(hw(x)−y)xj
可以看出对wj求偏导只依赖于xj
根据求得到导数我们就有了该点下降速度最快的方向,向该方向移动
于是我们更新参数向量
wj:=wj+α(yi−fw(xi))xij
上标表示行,下标表示列
于是我们有梯度下降的Python代码
def gradAscent(dataMatIn,classLabels): dataMatrix=mat(dataMatIn) labelMat=mat(classLabels).transpose() #将行向量转置为列向量 #transpose()是对矩阵尽心转置 #mat的作用是讲numpy的2维数组装换为矩阵 m,n=shape(dataMatrix) #这里m为行的数量,n为列的数量,这里是三 alpha=0.001 #alpha表示向目标移动的步长 maxCycles=500 #maxcycles表示迭代次数 weights=ones((n,1)) #weights初始化为n行一列的列向量 for k in range(maxCycles): h=sigmoid(dataMatrix*weights) #矩阵运算得到一个列向量,就是在当前参数情况下的分类结果 error=(labelMat-h) #计算y-label weights=weights+alpha*dataMatrix.transpose()*error return weights
梯度下降算法优化
梯度下降需要把所有权重参数一次性计算完毕,然而每个参数的收敛速度可能是不一样的,有些参数在计算的而中间可能已经收敛了,所有可以使用随机梯度下降的方式python代码def stocGradAscent1(dataMatrix,classLabels,numIter=150): m,n=shape(dataMatrix) weight=ones(n) for j in range(numIter): dataIndex=range(m) for i in range(m): alpha=4/(1.0+j+i)+0.01 #alpha有了改进 randIndex=int(random.uniform(1,len(dataIndex))) #从测试数据中随机选取一个测试数据 h=sigmoid(sum(dataMatrix[randIndex]*weight)) error=classLabels[randIndex]-h weight=weight+alpha*error*dataMatrix[randIndex] del(dataIndex[randIndex]) return weight
logistic回归是一种分类算法,利用sigmoid函数记性分类函数原型为
S=11+e−z
该函数的特点是x的取值范围为(−∞,+∞),函数值范围为(0,1)
我们是用f(x)作为z就可以利用梯度或者上升的方式找到一个最合适的参数向量w得到预测函数f(x)然后利用sigmoid函数进行分类。
分类代码
def classifyVector(inx,weights): prob=sigmoid(sum(inx*weights)) if prob>0.5: return 1.0 else: return 0.0
logistic回归算法的特点
优点:计算代价不高,易于理解和实现
缺点:容易欠拟合,分类精确度可能不高
全部代码
在进行分类之前最好可以进行归一化处理
相关文章推荐
- Logistic回归分类算法原理分析与代码实现
- 第七篇:Logistic回归分类算法原理分析与代码实现
- 决策树基本理论学习以及Python代码实现和详细注释
- 决策树ID3算法python实现代码及详细注释
- [深度学习]Python/Theano实现逻辑回归网络的代码分析
- Objective-C 【电商APP应用代码-系统分析-详细注释-代码实现】
- Apriori算法第二篇----详细分析和代码实现
- 利用Spark-mllab进行聚类,分类,回归分析的代码实现(python)
- python实现的 K-近邻算法代码详细解释
- [深度学习]Python/Theano实现逻辑回归网络的代码分析
- Apriori算法第二篇----详细分析和代码实现
- 机器学习算法的Python实现 (1):logistics回归 与 线性判别分析(LDA)
- Logistic Regression 逻辑回归算法例子,python代码实现
- Logistic Regression 逻辑回归算法例子,python代码实现
- KNN算法Python实现(代码来自机器学习实战)及注释
- k-近邻算法(详细代码注释与调参性能分析)
- 分类算法系列2----逻辑回归Logistic原理和Python实现
- Python 实现神经网络逆向传播算法(含详细注释)
- Objective-C 【电商APP应用代码-系统分析-详细注释-代码实现】
- logistic回归算法原理及python实现