手写逻辑回归 ——Logistic Regression的详细推导与python实现

本文详述了Logistic Regression的理论与Python实现,包括决策边界的推导、Sigmoid函数的应用、代价函数的构建及梯度下降等优化算法。通过实例展示了逻辑回归在解决二分类问题上的应用,并给出了完整的代码实现。
摘要由CSDN通过智能技术生成

Logistic Regression是一种分类算法,返回分类0或者1

逻辑回归将样本线性分割为两类,跟样本距离分割线的距离和正负来推算样本可能的类别

产生的分割线,也叫 决策边界,Decision Boundary为

y=\theta^TX

样本到分割线的距离为

z^{(i)}=\theta^TX^{(i)}

则预测函数为

h_\theta(X)=g(\theta^TX)

对于二分类问题,代价的分布可以认为是伯努利分布,则根据极大似然估计法可以推得其中g一般为S型函数 sigmoid function 或者 logistic function

g(z)=\frac{1}{1 + e^{-z}}

把这个函数画出来

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为

h_\theta(X) = \frac{1}{1 + e^{-\theta^T X}}

    #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的概率,即

h_\theta(X) = P(y=1|x; \theta)

通过添加多项式回归参数,比如 x1, x1^2, x2, x2^2等等,线性逻辑回归也可以分类非线性问题。

单个代价为

cost(x) = -h_\theta(x)^y (1-h_\theta(x))^{1-y}

取Log, 最大化L既可以得到theta

logcost=-(y \log h_\theta(x) + (1-y) \log (1-h_\theta(x)))

 #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)

这是,代价函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值