最小二乘法(Least Squares Method)是一种数学优化技术,它通过最小化误差的平方和寻找数据的最佳函数匹配。具体来说,它可以用于线性回归分析,即找到一条最佳拟合直线(或更一般的曲线或面),使得实际观察数据点到这条直线(或曲线/面)的垂直距离(也就是误差)的平方和达到最小。

在数学表示上,如果有一组观测数据集((x_i, y_i)),其中(i = 1, 2, …, n),最小二乘法旨在找到一个模型(y = f(x, \beta)),其参数(\beta)可以使得残差平方和(RSS)最小:

[ RSS = \sum_{i=1}^{n} [y_i - f(x_i, \beta)]^2 ]

对于线性回归问题,模型可以简化为:

[ y = \beta_0 + \beta_1 x ]

此处的目标是找到(\beta_0)和(\beta_1)的值,使得RSS最小。

具体数值举例:

假设我们有以下一组数据:

x

y

1.0

1.5

2.0

2.0

3.0

2.5

我们希望找到一条直线(y = \beta_0 + \beta_1 x)来最好地拟合这些数据。手工计算会涉及到设置RSS的偏导数等于0的方程组来解析求解(\beta_0)和(\beta_1)。使用最小二乘法后可能得到的拟合直线参数是(\beta_0 = 1)和(\beta_1 = 0.5)。

Python模拟实现:

在Python中,我们可以利用numpy库来实现最小二乘法的线性回归分析:

# -*- coding: utf-8 -*-
"""
Created on Sun Feb 25 08:49:15 2024

@author: 李立宗

公众号:计算机视觉之光


"""

import numpy as np
import matplotlib.pyplot as plt

# 示例数据
x = np.array([1, 2, 3])
y = np.array([1.5, 2.0, 2.5])

# 使用numpy的polyfit函数进行最小二乘线性回归
# 这里的1表示我们希望拟合的是一次多项式,即线性模型
beta = np.polyfit(x, y, 1)

# 打印系数
print(f"拟合的直线系数为:beta_0 = {beta[1]}, beta_1 = {beta[0]}")

# 根据模型系数绘制拟合直线
y_fit = beta[1] + beta[0]*x

# 绘制数据点
plt.scatter(x, y, color='red')
# 绘制拟合直线
plt.plot(x, y_fit, color='green')

plt.xlabel("x")
plt.ylabel("y")
plt.title("Least Squares Linear Regression")
plt.show()

输出

最小二乘法_机器学习

在实践中,数据分析师通常会使用更专业的库如scipystatsmodels来实现最小二乘回归,因为这些库提供了更多的统计信息和模型诊断工具。在上述例子中,我们使用了numpy.polyfit函数仅做演示,实际中可能要处理更复杂的回归分析。

相关博文

理解并实现OpenCV中的图像平滑技术

OpenCV中的边缘检测技术及实现

OpenCV识别人脸案例实战

入门OpenCV:图像阈值处理

我的图书

下面两本书欢迎大家参考学习。

OpenCV轻松入门

李立宗,OpenCV轻松入门,电子工业出版社,2023
本书基于面向 Python 的 OpenCV(OpenCV for Python),介绍了图像处理的方方面面。本书以 OpenCV 官方文档的知识脉络为主线,并对细节进行补充和说明。书中不仅介绍了 OpenCV 函数的使用方法,还介绍了函数实现的算法原理。

在介绍 OpenCV 函数的使用方法时,提供了大量的程序示例,并以循序渐进的方式展开。首先,直观地展示函数在易于观察的小数组上的使用方法、处理过程、运行结果,方便读者更深入地理解函数的原理、使用方法、运行机制、处理结果。在此基础上,进一步介绍如何更好地使用函数处理图像。在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的实例来说明问题,避免使用过多复杂抽象的公式。

本书适合计算机视觉领域的初学者阅读,包括在校学生、教师、专业技术人员、图像处理爱好者。

本书第1版出版后,深受广大读者朋友的喜爱,被很多高校选为教材,目前已经累计重印9次。为了更好地方便大家学习,对本书进行了修订。

最小二乘法_算法_02

计算机视觉40例

李立宗,计算机视觉40例,电子工业出版社,2022
近年来,我深耕计算机视觉领域的课程研发工作,在该领域尤其是OpenCV-Python方面积累了一点儿经验。因此,我经常会收到该领域相关知识点的咨询,内容涵盖图像处理的基础知识、OpenCV工具的使用、深度学习的具体应用等多个方面。为了更好地把所积累的知识以图文的形式分享给大家,我将该领域内的知识点进行了系统的整理,编写了本书。希望本书的内容能够对大家在计算机视觉方向的学习有所帮助。
本书以OpenCV-Python(the Python API for OpenCV)为工具,以案例为载体,系统介绍了计算机视觉从入门到深度学习的相关知识点。
本书从计算机视觉基础、经典案例、机器学习、深度学习、人脸识别应用等五个方面对计算机视觉的相关知识点做了全面、系统、深入的介绍。书中共介绍了40余个经典的计算机视觉案例,其中既有字符识别、信息加密、指纹识别、车牌识别、次品检测等计算机视觉的经典案例,也包含图像分类、目标检测、语义分割、实例分割、风格迁移、姿势识别等基于深度学习的计算机视觉案例,还包括表情识别、驾驶员疲劳监测、易容术、识别年龄和性别等针对人脸的应用案例。
在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的示例来说明问题,避免使用复杂抽象的公式来介绍。
本书适合计算机视觉领域的初学者阅读,适于在校学生、教师、专业技术人员、图像处理爱好者使用。

最小二乘法_matlab_03