手把手神经网络讲解和无调包实现系列(1)线性回归【R语言】【小白学习笔记】

本文旨在介绍不依赖现成库实现神经网络的基础,从线性回归开始,讲解模型背后的理论和数学原理。通过R语言实现线性回归,包括模型、损失函数和小批随机梯度下降法,并讨论了L1和L2惩罚项在模型优化中的作用。
摘要由CSDN通过智能技术生成

第一次写文章,写的不好还希望大家见谅。
感觉我们数据分析/科学行业都会经常被调侃成调包侠,所以我想尝试自我挑战一下,真正去学习模型算法背后的基本理论和数学原理(当然有些数学的推导还是省略了),然后在不调包的情况下把模型实现出来,我希望通过把我的个人学习笔记整理起来再分享给大家,也希望能帮助到像我这样的初学者们。

这算是神经网络系列的第一本笔记吧,所以会从最基本(也是用的最多)的线性回归来开始,接下也会讲通用逻辑回归(softMax),然后一步一步的从简单神经网络(如MLP)到更复杂的网络(如CNN,RNN)。笔记是按已经拥有一定线性数学和微积分知识的背景来写,因此一些常见的数学知识不会做详细的讲解。

那我们就开始啦!

在我们用代码去实现模型前,我们会尝试弄懂模型的每个一步骤。

已知数据里面有特征(自变量)【features】 X X X和目标值(因变量)【target】 y y y。线性回归的目的是从新的特征中准确的预测出新的目标。写成数学公式的话,
y ^ = w 1 x 1 + . . . + w m x m + b , \hat{y} = w_{1}x_{1} + ... + w_{m}x_{m} + b , y^=w1x1+...+wmxm+b,
其中 y ^ \hat{y} y^ 代表模型预测的目标, w w w是模型的权重参数【weights】, b b b是偏差【bias/intercept】, m m m代表特征的总数。

把上面的等式矢量化【vectorize】,
y ^ = X W + b , \boxed{\hat{y} = XW + b }, y^=XW+b,

X X X会变成一个 n ∗ m n*m nm的矩阵(也就是拥有 n n n个数据点和 m m m个特征, W , y ^ , b W, \hat{y}, b W,y^,b 都是 m ∗ 1 m*1 m1的 列向量【column vectors】。

简单来说,我们经常听到的训练模型其实就是算出一组最优化的 ( W , b ) (W,b) (W,b)进而把模型预测得出的误差值控制在最小。

另外一点的是上面的矢量化公式也叫作假设函数【hypothesis function】。

上面提到了模型预测的误差值,我们可以把这个误差值量化,也就是模型里面的损失函数【loss function】,
l ( i ) ( W , b ) = 1 2 ( y ^ ( i ) − y ( i ) ) 2 = 1 2 [ ( X ( i ) W + b ) − y ( i ) ] 2 , \boxed{l^{(i)}(W,b) = \frac{1}{2}(\hat{y}^{(i)} - y^{(i)})^2 = \frac{1}{2}[(X^{(i)}W + b) - y^{(i)}] ^2 }, l(i)(W,b)=21(y^(i)y(i))2=21[(X(i)W+b)y(i)]2,

其中 i i i指标代表我们算的是每一个数据点,同时这也叫平方损失【squared loss】。另外标量【scalar】 1 / 2 1/2 1/2是随意的(你可以不放或者放别的标量),目的是为了让后面的推导变的更整洁。

当我们把目光放在所有数据时,

L ( W , b ) = 1 n ∑ i = 1 n 1 2 [ ( X ( i ) W + b ) − y ( i ) ] 2 . L(W,b) = \frac{1}{n} \sum_{i=1}^{n} \frac{1}{2}[(X^{(i)}W + b) - y^{(i)}] ^2 . L(W,b)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值