最小二乘法就是机器学习的开始,设这个最简单的式子是:
y=wx+by=wx+by=wx+b

平方损失函数为:
L=12∑i=1n(ti−yi)2L=\frac{1}{2}\sum_{i=1}^n(t_i-y_i)^2L=21​i=1∑n​(ti​−yi​)2

之所以有12\frac{1}{2}21​是因为在接下来化简过程中会非常漂亮(仅限于高数,矩阵不算),其中tit_iti​是已测数据的结果集,现成的。那么如何降低损失函数呢?就是求导让其对www求导等于0,那就是整个损失函数的最低点(损失函数是下凸函数):
L=12∑i=1n(ti−yi)2=12∑i=1n(ti−(wxi+b))2=12∑i=1n(ti2+w2xi2+b2−2tiwxi−2tib+2wxib)L =\frac{1}{2} \sum_{i=1}^n(t_i-y_i)^2\\ =\frac{1}{2} \sum_{i=1}^n(t_i-(wx_i+b))^2\\ =\frac{1}{2} \sum_{i=1}^n(t_i^2+w^2x_i^2+b^2-2t_iwx_i-2t_ib+2wx_ib)L=21​i=1∑n​(ti​−yi​)2=21​i=1∑n​(ti​−(wxi​+b))2=21​i=1∑n​(ti2​+w2xi2​+b2−2ti​wxi​−2ti​b+2wxi​b)

ϑLϑw=∑i=1n(wxi2−tixi+xib)\frac{\vartheta L}{\vartheta w}=\sum_{i=1}^n(wx_i^2-t_ix_i+x_ib)ϑwϑL​=i=1∑n​(wxi2​−ti​xi​+xi​b)

ϑLϑb=∑i=1n(b−ti+wxi)\frac{\vartheta L}{\vartheta b}=\sum_{i=1}^n(b-t_i+wx_i)ϑbϑL​=i=1∑n​(b−ti​+wxi​)
接下来让偏导等于0,求出w,bw,bw,b:
∑i=1n(wxi2−tixi+xib)=0w∑i=1nxi=∑i=1n(ti−b)w=∑i=1n(ti−b)∑i=1nxi\sum_{i=1}^n(wx_i^2-t_ix_i+x_ib)=0\\ w\sum^n_{i=1}x_i=\sum_{i=1}^n(t_i-b)\\ w=\frac{\sum_{i=1}^n(t_i-b)}{\sum^n_{i=1}x_i}i=1∑n​(wxi2​−ti​xi​+xi​b)=0wi=1∑n​xi​=i=1∑n​(ti​−b)w=∑i=1n​xi​∑i=1n​(ti​−b)​

∑i=1n(b−ti+wxi)=0nb=∑i=1n(ti−wxi)b=∑i=1n(ti−wxi)n\sum_{i=1}^n(b-t_i+wx_i)=0\\ nb=\sum^n_{i=1}(t_i-wx_i)\\ b=\frac{\sum^n_{i=1}(t_i-wx_i)}{n}i=1∑n​(b−ti​+wxi​)=0nb=i=1∑n​(ti​−wxi​)b=n∑i=1n​(ti​−wxi​)​

就这样算出来了。注意www中有bbb,bbb中有www。用均值取代掉∑\sum∑:
w=t‾−bx‾w=\frac{\overline{t}-b}{\overline{x}}w=xt−b​

b=t‾−wx‾b=\overline{t}-w\overline{x}b=t−wx

相互带入,完全一样的:
w0x‾+b0=t‾w_0\overline{x}+b_0=\overline{t}w0​x+b0​=t

意料之外,情理之中,表示数据集均值在这条直线上,接下来用这个式子带入上面的偏导式,消b0b_0b0​(b最小值的时候),这样就会出现w0w_0w0​了。
ϑLϑw=∑i=1n(wxi2−tixi+xib0)=∑i=1n(wxi2−tixi+xi(t‾−w0x‾))=w∑i=1nxi2−∑i=1ntixi+(t‾−w0x‾)∑i=1nxi=w0nx2‾−ntx‾+(t‾−w0x‾)nx‾=0w0=tx‾−t‾x‾x2‾−x‾2\frac{\vartheta L}{\vartheta w}=\sum_{i=1}^n(wx_i^2-t_ix_i+x_ib_0)\\ =\sum_{i=1}^n(wx_i^2-t_ix_i+x_i(\overline{t}-w_0\overline{x}))\\ =w\sum^n_{i=1}x_i^2-\sum^n_{i=1}t_ix_i+(\overline{t}-w_0\overline{x})\sum_{i=1}^nx_i\\ =w_0n\overline{x^2}-n\overline{tx}+(\overline{t}-w_0\overline{x})n\overline{x}=0\\ w_0=\frac{\overline{tx}-\overline{t}\overline{x}}{\overline{x^2}-\overline{x}^2}ϑwϑL​=i=1∑n​(wxi2​−ti​xi​+xi​b0​)=i=1∑n​(wxi2​−ti​xi​+xi​(t−w0​x))=wi=1∑n​xi2​−i=1∑n​ti​xi​+(t−w0​x)i=1∑n​xi​=w0​nx2−ntx+(t−w0​x)nx=0w0​=x2−x2tx−tx​

更一般的,大家都这么写:
w=1n∑i=1nxiti−t‾x‾1n∑i=1nxi2−x‾x‾w=\frac{\frac{1}{n}\sum_{i=1}^nx_it_i-\overline{t}\overline{x}}{\frac{1}{n}\sum^n_{i=1}x^2_i-\overline{x}\overline{x}}w=n1​∑i=1n​xi2​−xxn1​∑i=1n​xi​ti​−tx​

bbb直接用www推出,自此最小二乘法推导完毕。

接下来用线代推,用线代推不仅更简洁,更重要的一点是,它支持多www,也就是多元超平面,这个是高数方法永远也解决不了的了(它会得出n个等式)。
f=wn∗1xn∗1+bn∗1f=\textbf{w}_{n*1}\textbf{x}_{n*1}+\textbf{b}_{n*1}f=wn∗1​xn∗1​+bn∗1​

设一共n组数据,每组数据有k个参数。
这里进行了一个整理,把bbb添加进www里了,具体见下:
w=(bw),x=(1x)\textbf{w} = \begin{pmatrix} b \\ w \end{pmatrix} , \textbf{x} = \begin{pmatrix} 1 \\ x \end{pmatrix} w=(bw​),x=(1x​)

这样wTx=b+wx\textbf{w}^T\textbf{x}=b+wxwTx=b+wx,按照这个角度来说,b用w0w_0w0​来表示比较合适了,接下来的参数为w1,w2...w_1,w_2...w1​,w2​...,而变量也是从1,x1,x2...,x_1,x_2...,x1​,x2​...特别完美,实际上的矩阵就是n+1的,参数矩阵第一个是w0w_0w0​,变量矩阵第一个是111,直接wx\textbf{wx}wx得出解,下面都是多变量多参数的了。
损失函数为
L=∑i=1n(ti−wTxi)2L=\sum^n_{i=1}(t_i-\textbf{w}^T\textbf{x}_i)^2L=i=1∑n​(ti​−wTxi​)2

取代∑\sum∑,变成如下的:
L=(t−Xw)T(t−Xw)L=(\textbf{t}-\textbf{X}\textbf{w})^T(\textbf{t}-\textbf{X}\textbf{w})L=(t−Xw)T(t−Xw)

L=wTXTXw−2wTXTt+tTtL=\textbf{w}^T\textbf{X}^T\textbf{Xw}-2\textbf{w}^T\textbf{X}^T\textbf{t}+\textbf{t}^T\textbf{t}L=wTXTXw−2wTXTt+tTt

注意此时的X\textbf XX是n∗kn*kn∗k的矩阵,包含所有的数据了(但x\textbf xx是k∗1k*1k∗1矩阵),这里w\textbf ww是k∗1k*1k∗1矩阵,只有这样Xw\textbf{Xw}Xw才是n∗1n*1n∗1的矩阵,是所有的解,转置相乘恰好就是平方差的形式。
接下来自然是求导了:
ϑLϑw=(ϑLϑw0ϑLϑw1⋮ϑLϑwk)\frac{\vartheta L}{\vartheta \textbf{w}}= \begin{pmatrix} \frac{\vartheta L}{\vartheta w_0} \\ \frac{\vartheta L}{\vartheta w_1} \\ \vdots \\ \frac{\vartheta L}{\vartheta w_k} \end{pmatrix} ϑwϑL​=⎝⎜⎜⎜⎛​ϑw0​ϑL​ϑw1​ϑL​⋮ϑwk​ϑL​​⎠⎟⎟⎟⎞​

ϑLϑw=2XTXw−2XTt=0\frac{\vartheta L}{\vartheta \textbf{w}}=2\textbf{X}^T\textbf{X}\textbf{w}-2\textbf{X}^T\textbf{t}=0ϑwϑL​=2XTXw−2XTt=0

这里的矩阵求导是固定式子(这里是对www求导),(wTx)′=x,(xTw)′=x,(wTw)′=2w,(wTCw)′=2Cw(w^Tx)'=x,(x^Tw)'=x,(w^Tw)'=2w,(w^TCw)'=2Cw(wTx)′=x,(xTw)′=x,(wTw)′=2w,(wTCw)′=2Cw(跟普通函数求导差不多)。
XTXw=XTt\textbf{X}^T\textbf{X}\textbf{w}=\textbf{X}^T\textbf{t}XTXw=XTt

w=(XTX)−1XTt\textbf{w}=(\textbf{X}^T\textbf{X})^{-1}\textbf{X}^T\textbf{t}w=(XTX)−1XTt

这就是w\textbf ww的最小值,注意是所有的(包括w,bw,bw,b),矩阵最小二乘法完毕。

这样求得的式子是线性的,有时候平方式子可能更拟合(这是很有可能的),即f=w0+w1x+w2x2f=w_0+w_1x+w_2x^2f=w0​+w1​x+w2​x2,这样参数就会是超过两个。但是,越高阶,其实就没有多少作用了,它会在有数据的地方过拟合,没数据的地方偏十万八千里。
如何验证模型的最优复杂度?就是用验证集测,得出最好的。

当数据集特别小,以至于分出一个验证集太奢侈,那么就将数据集分成k份,每次取一份作为验证集,其他作为测试集,一圈下来取平均值(交叉验证)。当k=n时,也就是验证集就一个数据,这叫留一交叉验证LOOCV。

那么什么是模型复杂度?就是www尽可能的小和少:
∑i=0kwi2\sum^k_{i=0}w_i^2i=0∑k​wi2​

那么损失函数就变成了:
L′=L+λwTwL'=L+\lambda \textbf w^T\textbf wL′=L+λwTw

L(w)=(t−Xw)T(t−Xw)+λwTwL(\textbf w)=(\textbf t-\textbf X\textbf w)^T(\textbf t-\textbf X\textbf w)+\lambda \textbf w^T\textbf wL(w)=(t−Xw)T(t−Xw)+λwTw

ϑLϑw=2XTXw−2XTt+2λw=0\frac{\vartheta L}{\vartheta \textbf{w}}=2\textbf{X}^T\textbf{X}\textbf{w}-2\textbf{X}^T\textbf{t}+2\lambda\textbf w=0ϑwϑL​=2XTXw−2XTt+2λw=0

w=(XTX+λE)−1XTt\textbf w=(\textbf{X}^T\textbf{X}+\lambda\textbf{E})^{-1}\textbf{X}^T\textbf{t}w=(XTX+λE)−1XTt
λ\lambdaλ值太小,函数就可能太过复杂(后面项就没多大用了),值太大,又不利于逼近数据(太简化了)。 这就叫正则化误差,正则化最小二乘法。也叫结构误差,这个以后讲。如何确定λ\lambdaλ(超参数)选什么好呢?交叉验证。

岭回归: 以损失部分信息(说明加入正则化项确实有深刻的缺点)、降低精度(加入正则化项)为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的拟合要强于最小二乘法。实际上也是新瓶装旧酒,都一样的。

为了保证回归系数w\textbf ww可求,岭回归模型在目标函数上加了一个L2范数的惩罚项
J(w)=∑(y−Xw)2+λ∣∣w∣∣22=∑(y−Xw)2+∑λw2J(\textbf w)=\sum(y-\textbf X\textbf w)^2+\lambda||\textbf w||^2_2\\ =\sum(y-\textbf X\textbf w)^2+\sum\lambda \textbf w^2J(w)=∑(y−Xw)2+λ∣∣w∣∣22​=∑(y−Xw)2+∑λw2

w=(XTX+λI)−1XTy\textbf w=(\textbf X^T\textbf X+\lambda\textbf I)^{-1}\textbf X^Tyw=(XTX+λI)−1XTy

单位矩阵III的对角线上全是1,像一条山岭一样,这也是岭回归名称的由来。

每日小常识

0-1损失函数
L(Y,f(X))={1Y≠f(X)0Y=f(X)L(Y,f(X))=\left\{\begin{array}{l} 1 &Y\neq f(X)\\ 0 &Y=f(X) \end{array}\right.L(Y,f(X))={10​Y​=f(X)Y=f(X)​
特点是比较严格,直接分类,但它是一个非凸函数,不太适用。

绝对值损失函数
L(Y,f(x))=∣Y−f(x)∣L(Y,f(x))=|Y-f(x)|L(Y,f(x))=∣Y−f(x)∣

log对数损失函数
L(Y,P(Y∣X))=−logP(Y∣X)L(Y,P(Y|X))=-logP(Y|X)L(Y,P(Y∣X))=−logP(Y∣X)
log对数损失函数能非常好的表征概率分布,如果需要知道结果属于每个类别的置信度,那它非常合适。但健壮性不强,对噪声敏感。

大名鼎鼎的平方损失函数
L(Y∣f(X))=∑N(Y−f(X))2L(Y|f(X))=\sum_N(Y-f(X))^2L(Y∣f(X))=N∑​(Y−f(X))2

不解释

指数损失函数
L(Y∣f(X))=e−yf(x)L(Y|f(X))=e^{-yf(x)}L(Y∣f(X))=e−yf(x)

对噪声非常敏感

Hinge损失函数
L(y,f(x))=max(0,1−yf(x))L(y,f(x))=max(0,1-yf(x))L(y,f(x))=max(0,1−yf(x))

SVM就用这个损失函数

交叉熵损失函数
这个后面讲,值得注意的是对数损失函数和交叉熵损失函数是等价的。

机器学习 之 最小二乘法,各种损失函数相关推荐

  1. 一文看懂机器学习中的常用损失函数

    作者丨stephenDC 编辑丨zandy 来源 | 大数据与人工智能(ID: ai-big-data) 导语:损失函数虽然简单,却相当基础,可以看做是机器学习的一个组件.机器学习的其他组件,还包括激 ...

  2. 机器学习中的常见问题—损失函数

    机器学习中的常见问题--损失函数 一.分类算法中的损失函数 在分类算法中,损失函数通常可以表示成损失项和正则项的和,即有如下的形式: J(w)=∑iL(mi(w))+λR(w)J(w)=∑iL(mi( ...

  3. 机器学习中的各种损失函数(Hinge loss,交叉熵,softmax)

    机器学习中的各种损失函数 SVM multiclass loss(Hinge loss) 这是一个合页函数,也叫Hinge function,loss 函数反映的是我们对于当前分类结果的不满意程度.在 ...

  4. 机器学习中常见的损失函数_机器学习中最常见的损失函数

    机器学习中常见的损失函数 现实世界中的DS (DS IN THE REAL WORLD) In mathematical optimization and decision theory, a los ...

  5. 机器学习之最小二乘法完成一元线性回归【内附Python实现】

    最小二乘法代码实现 import numpy as np import matplotlib.pyplot as plt# 利用最小二乘法定义损失函数,w与b是预测函数的未知参数,ponits是坐标信 ...

  6. 机器学习笔记七:损失函数与风险函数

    一.损失函数 回顾之前讲过的线性回归模型,我们为了要学习参数使得得到的直线更好的拟合数据,我们使用了一个函数 这个函数就是比较模型得到的结果和"真实值"之间的"差距&qu ...

  7. 机器学习中目标函数、损失函数以及正则项的通俗解释

    目录: 前言: 1.什么是目标函数? 2.损失函数 3.正则化 总结: 目录: 前言: 今天看到一篇很精简的文章来说明目标函数.损失函数以及正则项是什么.以下是文章正文. 转自:https://xia ...

  8. 机器学习中目标函数、损失函数、代价函数之间的区别和联系

    首先给出结论:损失函数和代价函数是同一个东西,目标函数是一个与他们相关但更广的概念,对于目标函数来说在有约束条件下的最小化就是损失函数(loss function) 举个例子解释一下:(图片来自And ...

  9. 入门|机器学习中常用的损失函数你知多少?

    本文作者将常用的损失函数分为了两大类:分类和回归.然后又分别对这两类进行了细分和讲解,其中回归中包含了一种不太常见的损失函数:平均偏差误差,可以用来确定模型中存在正偏差还是负偏差. 机器通过损失函数进 ...

最新文章

  1. JavaEE 获取路径全攻略
  2. python简单体育竞技模拟_Python程序设计思维练习---体育竞技分析-阿里云开发者社区...
  3. sqlserver 实现数据库全文检索
  4. C语言学习之将一个二维数组的行和列互换,存到另一个二维数组中
  5. 百度黄埔学院学员开题 | ‘首席 AI 架构师’实战之旅开启!
  6. 最大正方形Python解法
  7. java NIO 复习
  8. 实测!让M1芯片版mac也能写入NTFS格式磁盘,完整教程附上!
  9. python如何进行人口预测_如何使用matlab建立人口预测模型
  10. 计算机二级vf查询,计算机二级《VFP》知识点讲解:查询和视图
  11. [日推荐]『足球欧洲』.这里有关于足球的一切!
  12. 机动车c1科三考试语言灯光,史上最全科目三灯光模拟图解
  13. 论文笔记-基于代码属性图和Bi-GRU的软件脆弱性检测方法
  14. bimodal or multimodal data test and analysis in R
  15. 国内免费cdn汇总2023最新
  16. 【Python自动化办公】批量将Excel表格数据导出为PDF文件
  17. Hive学习之抽样(tablesample)
  18. (详细)强化学习--贝尔曼方程
  19. 师徒制,多么好的工具
  20. NSA局长:美军网络部队已处于战备状态

热门文章

  1. 数据结构,链表基本操作
  2. Python使用pandas对CSV进行操作(11种基础操作含源码)
  3. QCC51XX---BLE广播
  4. Web协议详解与抓包实战之HTTP1.1 学习笔记【一】
  5. 虚幻4能够救《仙剑奇侠传》么?
  6. php小刀教程网源码,小刀网站自动收录源码
  7. 《Pthyon数学编程》练习-day004:复数
  8. ROS学习-ROS简介
  9. Mysql与正则表达式笔记-松勤
  10. 考研:研究生考试(五天学完)之《线性代数与空间解析几何》研究生学霸重点知识点总结之第二课矩阵及其运算