一.二项logistic回归模型:
1. 现有样本x,它的预测值为0或1,预测为1的概率为p,使事件的对数几率;
等于x的线性模型预测值:
,这样得到 ;
这个函数称为logistic函数;
图像如下:
线性函数的值接近正无穷,概率值接近1;线性函数的值接近负无穷,概率值接近0;
这个模型就是logistic模型;
对于二分类,我们设置一个阀值,例如0.5,大于0.5,分类为1,小于0.5,分类为0;
2.模型的参数估计:
对于一个样本:
似然函数:
对数似然:
对数似然最大,求出参数theta;
梯度上升,求梯度:
参数求解:
转化为矩阵形式:
其中:
3.loss函数:
对数似然的相反数;
4.代码如下:
from numpy import *
def sigmoid(inX):
return 1.0/(1+exp(-inX))
def gradAscent(dataMatIn, classLabels):
dataMatrix = mat(dataMatIn) #convert to NumPy matrix
labelMat = mat(classLabels).transpose() #convert to NumPy matrix
m,n = shape(dataMatrix)
alpha = 0.001
maxCycles = 500
weights = ones((n,1))
for k in range(maxCycles): #heavy on matrix operations
h = sigmoid(dataMatrix*weights) #matrix mult
error = (labelMat - h) #vector subtraction
weights = weights + alpha * dataMatrix.transpose()* error #矩阵相乘
return weights
二.多项logistic回归: