线性回归损失函数为什么要用平方形式
我们在前面的《线性回归》中了解到,对于训练数据样本(xi,yi)({x_i},{y_i}),我们有如下的拟合直线:
{\widehat y_i} = {\theta _0} + {\theta _1} \bullet {x_i}
我们构建了一个损失函数:
C = \sum\limits_{i = 1}^n {{{({y_i} - {{\widehat y}_i})}^2}}
表示每个训练数据点 (xi,yi)({x_i},{y_i})到拟合直线 yˆi=θ0+θ1∙xi{\widehat y_i} = {\theta _0} + {\theta _1} \bullet {x_i}的竖直距离的平方和,通过最小化这个损失函数来求得拟合直线的最佳参数 θ\theta,实际上就是求损失函数C在取得最小值情况下 θ\theta的值。那么损失函数为什么要用平方差形式呢,而不是绝对值形式,一次方,三次方,或四次方形式?
简单的说,是因为使用平方形式的时候,使用的是“最小二乘法”的思想,这里的“二乘”指的是用平方来度量观测点与估计点的距离(远近),“最小”指的是参数值要保证各个观测点与估计点的距离的平方和达到最小。
最小二乘法以估计值与观测值的平方和作为损失函数,在误差服从正态分布的前提下,与极大似然估计的思想在本质上是相同。对于极大似然估计,可以参考下前期文章《极大似然估计》。
我们设观测输出与预估数据之间的误差为:
{\varepsilon _i} = {y_i} - {\widehat y_i}
我们通常认为 ε\varepsilon 服从正态分布,即:
f({\varepsilon _i};u,{\sigma ^2}) = \frac{1}{{\sigma \sqrt {2\pi } }} \bullet \exp [ - \frac{{{{({\varepsilon _i} - u)}^2}}}{{2{\sigma ^2}}}]
我们求的参数 ε\varepsilon 的极大似然估计 (u,σ2)(u,{\sigma ^2}),即是说,在某个 (u,σ2)(u,{\sigma ^2})下,使得服从正态分布的 ε\varepsilon 取得现有样本 εi{\varepsilon _i}的概率最大。那么根据极大似然估计函数的定义,令:
L(u,{\sigma ^2}) = \prod\limits_{i = 1}^n {\frac{1}{{\sqrt {2\pi } \sigma }} \bullet } \exp ( - \frac{{{{({\varepsilon _i} - u)}^2}}}{{2{\sigma ^2}}})
取对数似然函数:
\log L(u,{\sigma ^2}) = - \frac{n}{2}\log {\sigma ^2} - \frac{n}{2}\log 2\pi - \frac{{\sum\limits_{i = 1}^n {{{({\varepsilon _i} - u)}^2}} }}{{2{\sigma ^2}}}
分别求 (u,σ2)(u,{\sigma ^2})的偏导数,然后置0,最后求得参数 (u,σ2)(u,{\sigma ^2})的极大似然估计为:
u = \frac{1}{n}\sum\limits_{i = 1}^n {{\varepsilon _i}}
{\sigma ^2} = \frac{1}{n}\sum\limits_{i = 1}^n {{{({\varepsilon _i} - u)}^2}}
我们在线性回归中要求得最佳拟合直线 yˆi=θ0+θ1∙xi{\widehat y_i} = {\theta _0} + {\theta _1} \bullet {x_i},实质上是求预估值 yˆi{\widehat y_i}与观测值 yi{y_i}之间的误差 εi{\varepsilon _i}最小(最好是没有误差)的情况下 θ\theta 的值。而前面提到过, ε\varepsilon 是服从参数 (u,σ2)(u,{\sigma ^2})的正态分布,那最好是均值 uu和方差σ\sigma 趋近于0或越小越好。即:
u=1n∑i=1nεi=1n∑i=1n(yi−yˆi)u = \frac{1}{n}\sum\limits_{i = 1}^n {{\varepsilon _i}} = \frac{1}{n}\sum\limits_{i = 1}^n {({y_i} - {{\widehat y}_i})} 趋近于0或越小越好
σ2=1n∑i=1n(εi−u)2=1n∑i=1n(yi−yˆi−u)2≈1n∑i=1n(yi−yˆi)2{\sigma ^2} = \frac{1}{n}\sum\limits_{i = 1}^n {{{({\varepsilon _i} - u)}^2}} = \frac{1}{n}\sum\limits_{i = 1}^n {{{({y_i} - {{\widehat y}_i} - u)}^2}} \approx \frac{1}{n}\sum\limits_{i = 1}^n {{{({y_i} - {{\widehat y}_i})}^2}} 趋近于0或越小越好。
而这与最前面构建的平方形式损失函数本质上是等价的。
线性回归损失函数为什么要用平方形式相关推荐
- 损失函数为什么用平方形式(二)
我们在以前谈过<线性回归损失函数为什么要用平方形式>,除了这篇文章中提到的理由外.还有什么依据呢? 平方形式的损失函数一般为: C=12∑i=1n(yi−yˆi)2 C =\frac {1 ...
- 机器学习之线性回归 损失函数、代价函数、目标函数
损失函数(Loss Function)定义在单个样本上,算的是一个样本的误差.比如: 其中 0-1损失函数: 感知器损失函数: 平方和损失函数: 绝对损失函数: 对数损失函数: 代价函数(Cost F ...
- python3**2的值,线性回归中的R*2平方值
回归分析,是对两个或两个以上变量之间的因果关系进行定量研究的一种统计分析方法.在做回归分析或者解决回归问题时,常会用到R²平方值. 定义: 1.定义:决定系数,反应因变量的全部变异能通过回归关系被自变 ...
- 线性回归中的R*2平方值
回归分析,是对两个或两个以上变量之间的因果关系进行定量研究的一种统计分析方法.在做回归分析或者解决回归问题时,常会用到R²平方值. 定义: 应用描述: 应用实现代码: 定义: 1.定义:决定系数,反应 ...
- 线性回归的损失函数与逻辑回归的损失函数
一.线性回归损失函数的两种解释 线性回归的损失函数是平方损失函数,为什么使用平方的形式,参考:线性回归损失函数为什么要用平方形式,讲得很清楚. 在线性回归中,对于训练数据样本 (xi,yi) (x_i ...
- 2020算法面经问题汇总
!!Linux系统!! linux 查看文件内容的命令 cat. vi.more.less cat -n filename 现实行号 大文件: more 一页一页显示 space向后翻页 less 和 ...
- 【2020秋招】提前批陌陌机器学习算法工程师面试经验
铺垫 时间:9.2日中午1点钟 地点:西工大翱翔会议中心(一开始去成翱翔训练馆了= =,绕着西工大走了一大圈) 形式:现场面试,如果顺利的话,会有2-3轮技术面试,1轮HR面试,HR小哥哥不错. 面试 ...
- 线性回归、逻辑回归、损失函数
回归问题的条件/前提: 1) 收集的数据 2) 假设的模型,即一个函数,这个函数里含有未知的参数,通过学习,可以估计出参数.然后利用这个模型去预测/分类新的数据. 1. 线性回归 假设 特征 和 结果 ...
- 一文读懂线性回归、岭回归和Lasso回归
(图片由AI科技大本营付费下载自视觉中国) 作者 | 文杰 编辑 | yuquanle 本文介绍线性回归模型,从梯度下降和最小二乘的角度来求解线性回归问题,以概率的方式解释了线性回归为什么采用平方损失 ...
最新文章
- linux中rm删除的文件是否可以恢复,Linux下用rm删除的文件的恢复方法
- IExtensibleObjectExtensibleHttpApplication的性能问题
- c语言数据结构篇之栈(线性栈与链式栈)
- arduino串口监视器显示nan_Arduino小白的学习记录:双色LED灯实验
- 释放锁的逻辑-LockInternals.releaseLock
- ubuntu 12.04 /sbin/ldconfig.real: /usr/local/lib/*.so.8 不是符号连接 解决办法
- 前端学习(3302):createRef
- 老板要做DDD改造,我现在慌得一比!
- 编辑器hbuilderx的下载与安装 0907
- DataTable.ImportRow()与DataTable.Rows.Add()的区别
- shift-and(HDU 5972 2016ICPC大连 B: Regular Number)
- ISO9000标准简介
- Cesium开发环境搭建的几种方法总结
- 《算法零基础100讲》(第30讲) 概率与统计
- Android密码管理器app
- 【MATLAB基础绘图第7棒】绘制各式柱状图
- 第三篇:【重磅】呼叫中心运营指标KPI字典
- windows远程桌面功能和粘贴拷贝功能
- STM32固件库常见命名方式
- 如何修改已提交commit信息
热门文章
- 安装cv2(opencv-python)遇到的问题
- 分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!
- Element 'dependency' cannot have character [children]
- swift 项目_如何对iOS项目进行静态分析
- 掉一根头发,搞定二叉排序(搜索)树
- 网站的Http请求转为Https请求
- python pdb_python pdb调试方法分享
- 安装程序未能打开日志文件_工地开工,安全日志记录这样写才规范!
- echars vue 添加数据没更新_Vue遍历数据,并添加到右侧数组
- netty web 容器_Netty - 高性能网络应用框架常见面试题