线性回归算法

本文深入解析了线性回归的基本原理,包括输入数据处理、假设函数设定、成本函数计算及梯度下降算法应用。此外,还探讨了数据预处理、超参数调优(如学习率α和多项式次数)以及模型性能评估的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我认为自己学习到的线性回归非常简单:

  • 输入数据(X,y)。
    y 是 X 的标签,X 是 m ∗ {*} n 的矩阵,m 表示 X 的样本数量,n 是每个样本的特征的数量。
    有时候为了方便处理,X 是 (n, m) 的矩阵。
  • 初始化 θ {\theta} θ 值,指定假设函数 h θ {h_\theta} hθ。代入成本函数 J ( θ ) {J(\theta)} J(θ),成本函数梯度 ∂ J ( θ ) ∂ θ {\frac{\partial J(\theta)}{\partial \theta}} θJ(θ)公式中
  • 最小化成本函数,课程中使用的是梯度下降算法。当然还有其他优化算法。
  • 将最小化成本函数后得出的最优 θ {\theta} θ 值代入假设函数中,取一新样本也代入假设函数,便可求得预测值。

逻辑回归的算法也是类似的,只将函数替换,其他的步骤没变。

但这次我想将一个完整的回归机器学习模型设计复习一下,不仅包括核心算法,也包括预处理,查找最适 α {\alpha} α 值,最适多项式次数也加入到其中。

  • 首先将数据载入到模型中,分为 X,y
  • 将数据归一化处理
  • 将数据以 6:2:2 分为 训练集 (x_train, y_train)、交叉验证集 (x_cv, y_cv)、检验集 (x_test, y_test)。
    这三个集作用不再陈述,有问题可以点击这篇文章:模型选择与训练集、验证集、测试集
  • 使用正则化的成本函数计算 J ( θ ) {J(\theta)} J(θ)
  • 使用梯度下降算法(其他优化方法也可以)最小化成本函数,得到 theta_train 。

至此,模型训练部分结束,进行下一部分,寻找模型的最优参数(学习率 α {\alpha} α, 假设函数的多项式次数…等等)

  • α {\alpha} α 初始化为 i = 0.01,0.03,0.1,…, 3。使用 for 循环对各个 α {\alpha} α 值计算损耗函数。本次计算使用交叉验证集数据 (x_cv, y_cv)。θ 值使用的是 theta_train
  • 绘制图形,以 α {\alpha} α 为横轴, J ( θ ) {J(\theta)} J(θ) 为纵轴绘制二维曲线图。 J ( θ ) {J(\theta)} J(θ) 为最小处对应的 α {\alpha} α 即为最优 α {\alpha} α
  • 多项式次数也是由此求得。重新进行一次计算、绘图。本次图形以多项式次数为 X 轴, J ( θ ) {J(\theta)} J(θ) 为 y 轴。
    找出最小 J ( θ ) {J(\theta)} J(θ) 对应的多项式次数就可以了。
    注意: 随着多项式次数增加, J ( θ ) {J(\theta)} J(θ) 会逐渐变小(这里次数指 8 次或者 9 次这样的高幂),最终趋于平缓。但是所需要的计算量每增加一个次数,就增加 x n {x^n} xn 次计算。例如 n = 9, 与 n = 10,可能 J ( θ ) {J(\theta)} J(θ) 相差不大,但是增加了一个 x 1 0 {x^10} x10

至此,最优参数选择完毕。接着进行所训练模型性能评定。

  • 将 theta_train 代入 测试集中,计算 J t e s t ( θ ) {J_test(\theta)} Jtest(θ),绘制学习曲线,查看是否有偏差或者方差问题。
  • 比较 J t r a i n ( θ ) {J_train(\theta)} Jtrain(θ) J t e s t ( θ ) {J_test(\theta)} Jtest(θ),得出模型性能。

暂时就这些,仍需要补充,在进行知识总结的时候,我会对这篇文章需要的地方进行补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值