1 算法概述
Logistic的目标函数为:,当目标函数大于0.5时,认为是类别1,当目标函数小于0.5时被归为0类。所以,这是一种典型的二分类。
求目标函数实际上主要是求回归系数θ(权重)。通常的做法是:①将θ代入到一个代价函数J(θ)中,通过下降法,最小二乘法等方法最小化J(θ),从而找到θ;②将θ代入到一个似然函数中L(θ),使似然函数L(θ)达到最大,从而找到θ。
2 实现
1)使用梯度上升找最佳权重
#梯度上升算法-计算回归系数
def gradAscent(dataMatIn, classLabels):
dataMatrix = mat(dataMatIn) #convert to NumPy matrix
labelMat = mat(classLabels).transpose() #A.transpose()表示对A矩阵的转置
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) #预测值
error = (labelMat - h) #误差计算
weights = weights + alpha * dataMatrix.transpose()* error #权重更新
return weights
2)分类
def classifyVector(inX, weights):
prob = sigmoid(sum(inX*weights))
if prob > 0.5: return 1.0
else: return 0.0