线性回归 Linear Regression python实现(含最小二乘法、梯度下降)

这篇博客介绍了线性回归的基础,包括最小二乘法和梯度下降的原理及Python实现。作者通过机器学习实践课的学习,详细阐述了如何确定权重w和截距b,以及在不同参数情况下的应用。同时,给出了使用Python代码构建线性回归模型的例子。
摘要由CSDN通过智能技术生成

这一系列的博客,主要是记录在学校的Machine Learning实践课中,一些学习的过程,以及自己补充的基础知识(以引用来表示)。原理在西瓜书上都有,因此本系列博客主要是用python来实现,会包含一些公式。
“机器学习就是自动找函数”


regression基础

regression:函数的输出是一个数值(举例:stock market forecast, self-driving car, recommendation)
binary classification:二分类
generation:生成

给出label -> 函数的loss -> 机器自动找出loss最低的函数

在这里插入图片描述
在这里插入图片描述


1. 最小二乘法求解Linear Regression

最小二乘法 least square method:
最小二乘法通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

1.1 在LR中,我们的目的是确定w和b

(小写的Ω没找到,用w代替了),西瓜书的公式如下(带*是指的这个变量的解):
在这里插入图片描述
以w为例,最后的求解公式为:
在这里插入图片描述

1.2 python代码实现
import numpy as np


def LinerRgressionLSQ(X , Y):
    """
    线性回归的最小二乘法实现
    X.T表示该矩阵的转置
    np.dot(X,Y)表示矩阵X和Y的乘积
    np.det(X)表示求矩阵X的行列式
    np.linalg.inv(X)表示numpy中用于求解矩阵逆
    """
    XTX = np.dot(X.T,X)
    if np.linalg.det(XTX) == 0.0:
        print("Can not resolve the problem")
        return
    W = np.dot(np.dot(np.linalg.inv(XTX), X.T), Y)
    return W


矩阵的行列式
矩阵行列式是指矩阵的全部元素构成的行列式,设A=(aij)是数域P上的一个n阶矩阵,则所有A=(aij)中的元素组成的行列式称为矩阵A的行列式,记为|A|或det(A)
矩阵相当于向量,行列式相当于向量的模。


2. 梯度下降求解Linear Regression

只要是可微分的函数,梯度下降(gradient descent)都可以用

2.1 以一个参数为例

在这里插入图片描述

在linear regression中,没有local minima,因为是凸函数convex

2.2 推到两个参数

在这里插入图片描述

为什么wi越小越好?
wi越接近0,wiΔxi越小,function也会越平滑。

在这里插入图片描述

λ选择
其值越大,越倾向于考虑w本来的值,而减少考虑error,因此在Training data 上error会变大是合理的,Testing data上error会下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Simone Zeng

给作者来杯咖啡吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值