博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【机器学习】最小二乘法的理解
阅读量:2051 次
发布时间:2019-04-28

本文共 1604 字,大约阅读时间需要 5 分钟。

最小二乘法

首先,需要明确的是最小二乘法(Least-square, LS)是一种优化技术(optimization technique),它是用于解决优化问题的,其中,能适用于最小二乘解决的优化问题被称作最小二乘问题(Least-squares problems)。除此之外,像线性规划、梯度下降算法、牛顿法和拟牛顿法、共轭梯度法、拉格朗日成数法以及一些启发式算法如PSO、遗传算法都属于解决优化问题的方法,所以最小二乘法只是作为其中的一种solution method,用于解决一类优化问题。

最小二乘问题

一个最小二乘问题通常是一个没有约束项的优化问题,它的表现形式通常是 a i T x − b i a_{i}^{T}x-b_{i} aiTxbi的平方和,其中 a i T x a_{i}^{T}x aiTx常对应与我们建立的机器学习模型的预测值或者估计值, b i b_{i} bi则对应真实值。将变量 x x x的系数 a i T a_{i}^{T} aiT作为矩阵 A ∈ R k × n A \in R^{k×n} ARk×n的行,这个优化问题的形式可以如下: m i n m i z e   f ( x ) = ∣ ∣ A x − b ∣ ∣ 2 2 = ∑ i = 1 k ( a i T x − b i ) 2 minmize \ f(x) = ||Ax - b||_{2}^{2}=\sum_{i=1}^{k}(a_{i}^{T}x-b_{i})^{2} minmize f(x)=Axb22=i=1k(aiTxbi)2上面的问题可以在时间复杂度 O ( k n 2 ) O(kn^{2}) O(kn2)内解决,但是通常情况下 x x x的系数矩阵 A A A具有一种稀疏的形式,也就意味着它具有比 n × k n×k n×k更少的非零值,所以我们通常解决这个问题时要比时间复杂度 O ( k n 2 ) O(kn^{2}) O(kn2)更低。

最小二乘的拓展

上面的最小二乘是一个简单的形式,所以也称之为普通最小二乘法(Ordinary Least-squares, OLS),为了考虑每一项 a i T x − b i a_{i}^{T}x - b_{i} aiTxbi在求和的过程中不同的作用时,接下来引入了加权最小二乘法(Weighted Least-squares, WLS),它的形式是: ∑ i = 1 k w i ( a i T x − b i ) 2 \sum_{i=1}^{k}w_{i}(a_{i}^{T}x - b_{i})^{2} i=1kwi(aiTxbi)2另外的一种应用最小二乘的技巧就是正则化,也就是在最小二乘的基础上加入了额外项,其中最简单的形式如下,也即是加入了 L 2 L2 L2正则项: ∑ i = 1 k ( a i T x − b i ) 2 + θ ∑ i = 1 n x i 2 \sum_{i=1}^{k}(a_{i}^{T}x - b_{i})^{2}+\theta \sum_{i=1}^{n}x_{i}^{2} i=1k(aiTxbi)2+θi=1nxi2额外项作为惩罚项,会惩罚较大的 x x x值。关于正则化的问题也可以参考我前面的写的博客:

除此之外,均方误差(Mean Squares Errors,MSE)也是一种最小二乘的形式,它作为目标函数相当于等权的加权最小二乘。 M S E = 1 k ∑ i = 1 k ( a i T x − b i ) 2 MSE = \frac{1}{k}\sum_{i=1}^{k}(a_{i}^{T}x - b_{i})^{2} MSE=k1i=1k(aiTxbi)2

REF

Convex Optimization by Stephen Boyd

转载地址:http://izklf.baihongyu.com/

你可能感兴趣的文章
【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?
查看>>
【Python】Python 读取csv的某行或某列数据
查看>>
【Loadrunner】平台1.9环境APP成功录制并调试成功后的脚本备份
查看>>
【Loadrunner】性能测试:通过服务器日志获取性能需求
查看>>
【Python】sasa版:文件中csv读取在写入csv读取的数据和执行是否成功。
查看>>
【loadrunner】【scorm学习】demo/test域上进行scorm脚本录制及回放成功脚本备份
查看>>
【Loadrunner】使用LoadRunner上传及下载文件
查看>>
【Python】Python 打印和输出更多用法。
查看>>
【Loadrunner】使用LR录制HTTPS协议的三种方法
查看>>
【Python+Selenium】猪猪练习成功版:csv文件的输入和输出(运行环境:python3.5版本)...
查看>>
【python】BeautifulSoup的应用
查看>>
【Python】接口自动化测试-Fidder的使用(未完待续……)
查看>>
【Python】自动化测试框架-共通方法汇总
查看>>
【Python】if相关知识点
查看>>
【Python】xpath中为什么粘贴进去代码后老报错?如何在定位元素的时候准确找到定位切入点?...
查看>>
Loadrunner解决启动浏览器后页面显示空白
查看>>
【Python】唯品会购买商品
查看>>
【JMeter】如何录制创建及得到曲线图
查看>>
【Loadrunner】Error -26601: Decompression function 错误解决、27728报错解决方案
查看>>
【其他】csv文件打开是乱码,怎么办?
查看>>