机器学习--线性回归

线性回归

引入

我们在高中的时候都学过线性回归,在这我们回顾一下

在高中的课程中,我们会被给得到一组 x m {x_m} xm 和一组 y m {y_m} ym,然后我们想用 h ( x ) = y ^ = a x + b h(x) = \hat{y} = ax + b h(x)=y^=ax+b 来拟合这组数据使得整体上 h ( x i ) ≈ y i h(x_i) \approx y_i h(xi)≈yi 也就是这样:

而在高中教材中 a a a 和 b b b 都给出的准确的计算式(其中 x ˉ \bar{x} xˉ 和 y ˉ \bar{y} yˉ 是 x m {x_m} xm 和 y m {y_m} ym 的平均数):

b ^ = ∑ i = 1 m ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 m ( x i − x ˉ ) 2 = ∑ i = 1 m x i y i − m x ˉ y ˉ ∑ i = 1 m x i 2 − m x ˉ 2 a = y ˉ − b ^ x ˉ \begin{aligned} \hat{b} = & \frac{\sum\limits_{i = 1}^m(x_i - \bar{x})(y_i - \bar{y})}{\sum\limits_{i = 1}^m(x_i-\bar{x})^2} = \frac{\sum\limits_{i = 1}^mx_iy_i - m\bar{x}\bar{y}}{\sum\limits_{i = 1}^mx_i^2 - m\bar{x}^2} \\ a = & \bar{y} - \hat{b}\bar{x} \end{aligned} b^=a=i=1∑m(xi−xˉ)2i=1∑m(xi−xˉ)(yi−yˉ)=i=1∑mxi2−mxˉ2i=1∑mxiyi−mxˉyˉyˉ−b^xˉ

而在机器学习中,我们希望计算机通过某种算法学习出一组 a , b a, b a,b,使得这条直线满足上述要求。

进入正题

在我们要解决的线性回归问题中,我们不仅不能使用上述已知的表达式解,我们还可以将维度升高。比如我们的数组 x m {x_m} xm 中的每个 x ( i ) x^{(i)} x(i) 不再是一个标量,而是一个 n n n 维的向量,同理我们的 w ( i ) w^{(i)} w(i) 也是一个 n n n 维的向量:

x ( i ) = [ x 1 ( i ) x 2 ( i ) ⋮ x n ( i ) ]              w = [ w 1 ( i ) w 2 ⋮ w n ] x^{(i)} = \begin{bmatrix} x^{(i)}_1 \\ x^{(i)}_2 \\ \vdots \\ x^{(i)}_n \end{bmatrix} \;\;\;\;\;\; w = \begin{bmatrix} w^{(i)}_1 \\ w_2 \\\vdots \\ w_n \end{bmatrix} x(i)= x1(i)x2(i)⋮xn(i) w= w1(i)w2⋮wn

然后我们就要用我们构造出来的 h ( x ( i ) ) h(x^{(i)}) h(x(i)) 来拟合 y ( i ) y^{(i)} y(i):

y ^ = h ( x ( i ) ) = ∑ j = 1 n w j x j ( i ) + b = w T x ( i ) + b \hat{y} = h(x^{(i)}) = \sum_{j = 1}^n w_jx^{(i)}_j + b = w^Tx^{(i)} + b y^=h(x(i))=j=1∑nwjxj(i)+b=wTx(i)+b

在这里,我们定义 J ( w , b ) = 1 2 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 J(w, b) = \frac 1{2m}\sum\limits_{i = 1}^m(h(x^{(i)}) - y^{(i)})^2 J(w,b)=2m1i=1∑m(h(x(i))−y(i))2 叫做损失函数 c o s t    f u n c t i o n cost\;function costfunction,这个损失函数描述的是预测值 y ^ \hat{y} y^ 与真实值 y y y 的差异程度,上述表达式很好的符合这个定义。

并且显然的,我们希望这个 J ( w , b ) J(w, b) J(w,b) 越小越好。当 J ( w , b ) J(w, b) J(w,b) 取到最小值时,我们认为 h ( x ) h(x) h(x) 对 y y y 的拟合达到最完美。

梯度下降---最小化 J ( w , b ) J(w, b) J(w,b)

我们觉得写成 h ( x ) = w T x + b h(x) = w^Tx + b h(x)=wTx+b 太丑了,所以我们考虑令 x 0 ( i ) = 1 x^{(i)}_0 = 1 x0(i)=1,并新增 w 0 w_0 w0 使得每个 x ( i ) x^{(i)} x(i) 和 w w w 都变成一个 n + 1 n + 1 n+1 维的向量:

x ( i ) = [ x 0 ( i ) x 1 ( i ) x 2 ( i ) ⋮ x n ( i ) ]              w = [ w 0 w 1 ( i ) w 2 ⋮ w n ] x^{(i)} = \begin{bmatrix} x^{(i)}_0 \\ x^{(i)}_1 \\ x^{(i)}_2 \\ \vdots \\ x^{(i)}_n \end{bmatrix} \;\;\;\;\;\; w = \begin{bmatrix} w_0 \\ w^{(i)}_1 \\ w_2 \\\vdots \\ w_n \end{bmatrix} x(i)= x0(i)x1(i)x2(i)⋮xn(i) w= w0w1(i)w2⋮wn

于是 h ( x ) = w T x h(x) = w^Tx h(x)=wTx 这样就好看多了qwq,并且此时 J ( w ) = 1 2 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 J(w) = \frac 1{2m}\sum\limits_{i = 1}^m(h(x^{(i)}) - y^{(i)})^2 J(w)=2m1i=1∑m(h(x(i))−y(i))2

我们想做的就是一下描述的事情:

  1. 开始时对 w w w 随机赋值
  2. 持续改变 w w w 的值,使得 J ( w ) J(w) J(w) 的值减小,直到我们最后走到期望的最小值

然后这里我们介绍一种名为梯度下降 g r a d i e n t    d e s c e n t gradient \; descent gradientdescent 的算法来执行第二部,感性的理解就是在某一点找到 "下山" 的方向,并沿着这个方向走一步,并且重复这个动作知道走到 "山脚下"。

具体来说就是每次计算 J ( w ) J(w) J(w) 对每个 w i w_i wi 的偏导数,然后执行:

f o r    i    r a n g e    f r o m    0    t o    n {                  w j : = w j − α ∂ ∂ w j J ( w ) } \begin{aligned} &for \; i \; range \; from \; 0 \; to \; n \{ \\ &\;\;\;\;\;\;\;\; w_j := w_j - \alpha \frac{\partial}{\partial w_j}J(w) \\ &\} \end{aligned} forirangefrom0ton{wj:=wj−α∂wj∂J(w)}

其中 α \alpha α 是 步长 l e a r n i n g    r a t e learning \; rate learningrate,表示这一步的大小。

这样看着可能不太直观,我们举个二维的例子更清晰的展示一下:

这里,这个红色的曲线就是我们的 J ( w ) J(w) J(w)。我们在起点对 J ( w ) J(w) J(w) 求导,得到了蓝色的切线的斜率,这个斜率显然是个正数,于是我们沿着负方向走一步,这一步的大小取决于 α \alpha α。

相关推荐
qianbo_insist4 分钟前
c++ python 共享内存
开发语言·c++·python
今天背单词了吗98018 分钟前
算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·开发语言·后端·算法·最短路径问题
手握风云-28 分钟前
优选算法的链脉之韵:链表专题
数据结构·算法·链表
Coding小公仔32 分钟前
LeetCode 151. 反转字符串中的单词
开发语言·c++·算法
稳兽龙32 分钟前
P1098 [NOIP 2007 提高组] 字符串的展开
c++·算法·模拟
凌览37 分钟前
有了 25k Star 的MediaCrawler爬虫库加持,三分钟搞定某红书、某音等平台爬取!
前端·后端·python
G.E.N.38 分钟前
开源!RAG竞技场(2):标准RAG算法
大数据·人工智能·深度学习·神经网络·算法·llm·rag
写个博客42 分钟前
暑假算法日记第三天
算法
这里有鱼汤1 小时前
给你的DeepSeek装上实时行情,让他帮你炒股
后端·python·mcp
✿ ༺ ོIT技术༻1 小时前
剑指offer第2版:动态规划+记忆化搜索
算法·动态规划·记忆化搜索