机器学习算法之二——回归(三)

1 公式推导

我们先给定一个线性回归的方程

h(\theta) =\theta_1 x_1 + \theta_2 x_2

损失函数:要求得最优变量就要使得计算值与实际值的偏差的平方最小

J(\Theta)=\frac{1}{2 m} \sum_{j=1}^{m}\left[h_{\Theta}\left(x^{i}\right)-y^{i}\right]^{2}

随机梯度下降算法对于系数需要通过不断的求偏导求解出当前位置下最优化的数据,公式中的θ会向着梯度下降最快的方向减少,从而推断出θ的最优解。对损失值求导:

\frac{\sigma J(\Theta)}{\sigma \Theta_{j}}=\frac{1}{m} \sum_{i=1}^{m}\left[h_{\Theta}\left(x^{i}\right)-y^{i}\right] x_{j}^{i}

给定一个下降系数(也可以叫学习率、下降的幅度)

\Theta=\Theta-\frac{\sigma J(\Theta)}{\sigma \Theta_{j}}=\Theta-\alpha \frac{1}{m} \sum_{j=1}^{m}(h_\theta(x^i)-y^i)x_j^i

2 实例

本文中的实例的:求解y = \theta_1 x_1 + \theta_2 x_2 + b的最优解

上一部分参见https://blog.csdn.net/selinaqqqq/article/details/89362553

#上一篇文章中的实例进行梯度下降
def Logistic_Regression(x, y, lr, num_iter):
    intercept = np.ones((x.shape[0], 1))  # 初始化截距为 1
    x = np.concatenate((intercept, x), axis=1)
    w = np.zeros(x.shape[1])  # 初始化参数为 1

    l_list = []  # 保存损失函数值
    for i in range(num_iter):  # 梯度下降迭代
        z = np.dot(x, w)  # 线性函数
        h = sigmoid(z)  # sigmoid 函数

        g = gradient(x, h, y)  # 计算梯度
        w -= lr * g  # 通过学习率 lr 计算步长并执行梯度下降

        z = np.dot(x, w)  # 更新参数到原线性函数中
        h = sigmoid(z)  # 计算 sigmoid 函数值

        l = loss(h, y)  # 计算损失函数值
        l_list.append(l)

    return l_list


lr = 0.01  # 学习率
num_iter = 30000  # 迭代次数
l_y = Logistic_Regression(x, y, lr, num_iter)  # 训练

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值