Logistic Regression是一种分类算法,返回分类0或者1
逻辑回归将样本线性分割为两类,跟样本距离分割线的距离和正负来推算样本可能的类别
产生的分割线,也叫 决策边界,Decision Boundary为
样本到分割线的距离为
则预测函数为
对于二分类问题,代价的分布可以认为是伯努利分布,则根据极大似然估计法可以推得其中g一般为S型函数 sigmoid function 或者 logistic function
把这个函数画出来
def __sigmoid(z):
epart = np.exp( z )
return epart / (1 + epart)
z = np.arange(-20,20)
plt.plot(z, __sigmoid(z))
plt.title('sigmoid')
plt.show()
所以总的预测函数hyperthesis为
#for n feature, x = 0:n, theta = 0:n
def __hypothetic(self, x):
z = np.dot(self.theta, x) + self.intercept
return self.__sigmoid(z)
这样h将返回给定x, y=1的概率,即
通过添加多项式回归参数,比如 x1, x1^2, x2, x2^2等等,线性逻辑回归也可以分类非线性问题。
单个代价为
取Log, 最大化L既可以得到theta
#y log h + (1 - y) log( 1- h )
def __loglikelihood(self, x, y):
h = self.__hypothetic(x)
return y * np.log(h) + (1 - y)*np.log(1 - h)
这是,代价函数