机器学习-线性模型
基本形式
线性模型的基本形式是: y = w₁x₁ + w₂x₂ + ... + wᵣxᵣ + b
其中,y是模型预测的输出结果,w₁, w₂, ..., wᵣ是特征的权重(或系数),x₁, x₂, ..., xᵣ是输入特征,b是偏置项(即截距)。
这个基本形式可以用于解决各种问题,例如回归问题和分类问题。
在回归问题中,模型的目标是预测连续值输出;在分类问题中,模型的目标是将输入数据分为不同的类别,并预测类别标签。线性模型是许多机器学习算法的基础,包括最小二乘回归、逻辑回归、支持向量机等。
线性回归
什么是线性回归
线性回归是一种用于预测连续值输出的线性模型。
它基于最小二乘法,通过拟合一个直线或超平面来描述输入特征和输出结果之间的线性关系。
在线性回归中,我们假设输入特征和真实输出之间存在一个线性关系。
具体地说,线性回归的基本形式为: y = w₁x₁ + w₂x₂ + ... + wᵣxᵣ + b + ε 其中,y是输出结果,x₁, x₂, ..., xᵣ是输入特征,w₁, w₂, ..., wᵣ是特征的权重(或系数),b是偏置项(即截距),ε是误差项,表示真实输出与预测输出之间的差异。 线性回归可以用于解决各种回归问题,例如预测房价、销售量等。优化线性回归的目标是使误差项的平方和最小化,通常使用梯度下降等算法进行求解。
最小二乘法
最小二乘法是一种用于线性回归问题的优化方法,其目标是通过最小化误差项的平方和来获得最佳拟合直线或超平面。
具体地说,对于给定的输入特征 x₁, x₂, ..., xᵣ 和相应的输出 y₁, y₂, ..., yₙ,我们可以使用如下目标函数来描述线性回归模型: L(w,b) = Σ(y - w₁x₁ - w₂x₂ - ... - wᵣxᵣ - b)² 其中,(w,b) 是需要优化的模型参数,y 是真实输出结果。
我们的目标是找到使目标函数 L(w,b) 最小的 (w,b) 值。 对于这个问题,最小二乘法提供了一个解析解,即可以通过求导数为零来得到 (w,b) 的最优值,例如使用矩阵运算求解。
在实践中,也可以使用梯度下降等基于数值迭代的算法来优化目标函数。
最小二乘法是一种简单有效的线性回归优化方法,但它也存在一些限制,例如可能会受到异常值和噪声数据的干扰。因此,在实现时需要进行数据预处理和异常值处理等步骤,以获得更好的模型表现。
示例
以下是一个使用最小二乘法求解线性回归问题的示例:
假设我们有一个简单的数据集,包含了一些样本点 (x,y): (1, 3) (2, 5) (3, 7) (4, 9)
我们希望通过这些数据来训练一个线性回归模型,预测输入 x 对应的输出 y。
首先,我们可以将这些数据表示为矩阵形式: [[1, 1], [1, 2], [1, 3], [1, 4]] 其中,每个样本点对应一行,第一列是常数项,即截距,取值都为 1;第二列是输入特征 x。
然后,我们可以将目标函数 L(w,b) 表示为: L(w,b) = (y - Xw)ᵀ(y - Xw) 其中,y 是输出结果向量,X 是输入特征矩阵,w 是需要优化的权重向量。对其进行求导并令导数等于零,可以得到最优参数 w 的解析解为: w = (XᵀX)⁻¹Xᵀy
在本例中,根据上述公式,我们可以计算出: XᵀX = [[4, 10], [10, 30]] (XᵀX)⁻¹ = [[ 1.5, -0.5], [-0.5, 0.2]] Xᵀy = [[24], [68]] 因此,权重向量 w 的计算结果为: w = [[1.5], [1]] 这意味着我们的线性回归模型可以表示为 y = 1.5x + 1。
最后,我们可以使用训练好的模型来预测新的输入值。例如,当 x=5 时,预测输出为 y=9.5。 需要注意的是,本例中的数据集是非常简单的,真实情况下可能会存在多个特征和更大的数据规模。在实现时,需要进行适当的数据预处理和异常值处理等步骤,以获得更好的模型表现。
多元线性回归
与简单线性回归不同的是,多元线性回归涉及到多个特征的权重计算和模型拟合。通常可以使用最小二乘法或梯度下降等方法进行优化。 多元线性回归可用于解决各种问题,例如预测房价、销售量等。
它的主要优点是能够同时考虑多个特征的影响,更准确地描述输入特征和输出结果之间的关系。
示例
以下是一个使用多元线性回归模型的示例:
假设我们希望通过房屋大小和卧室数量这两个特征来预测房屋价格。我们从一个包含有关房屋信息的数据集中收集了一些样本,每个样本都有房屋大小、卧室数量和价格等属性
| 房屋大小 | 卧室数量 | 价格 |
|---------|----------|--------|
| 2104 | 3 | 399900 |
| 1600 | 3 | 329900 |
| 2400 | 3 | 369000 |
| 1416 | 2 | 232000 |
| 3000 | 4 | 539900 |
| 1985 | 4 | 299900 |
| 1534 | 3 | 314900 |
| 1427 | 3 | 198999 |
| 1380 | 3 | 212000 |
| 1494 | 3 | 242500 |
为了建立一个多元线性回归模型,我们将每个样本表示为一个向量,其中第一列是常数项 (1),第二列是房屋大小,第三列是卧室数量。然后,我们可以构建输入特征矩阵 X 和输出结果向量 y:
X = [[1, 2104, 3], [1, 1600, 3], [1, 2400, 3], [1, 1416, 2], [1, 3000, 4], [1, 1985, 4], [1, 1534, 3], [1, 1427, 3], [1, 1380, 3], [1, 1494, 3]]
y = [[399900], [329900], [369000], [232000], [539900], [299900], [314900], [198999], [212000], [242500]]
然后,我们使用最小二乘法或梯度下降等方法来优化多元线性回归模型。
在本例中,通过最小二乘法求解,我们可以得到一个线性模型: y = 89597 + 139.21x₁ + (-8738.02)x₂ 其中,x₁ 是房屋大小,x₂ 是卧室数量,y 是预测的价格。
这个模型可以用于预测新房屋大小和卧室数量对应的价格,例如当房屋大小为 1650 平方英尺,卧室数量为 3 时,预测的价格为 $293,081.46。
import numpy as np#构建输入特征矩阵 X 和输出结果向量 y
X = np.array([[1, 2104, 3],
[1, 1600, 3],
[1, 2400, 3],
[1, 1416, 2],
[1, 3000, 4],
[1, 1985, 4],
[1, 1534, 3],
[1, 1427, 3],
[1, 1380, 3],
[1, 1494, 3]])y = np.array([[399900],
[329900],
[369000],
[232000],
[539900],
[299900],
[314900],
[198999],
[212000],
[242500]])#使用最小二乘法求解模型参数
w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)#打印模型参数
print('截距:', w[0])
print('房屋大小的权重:', w[1])
print('卧室数量的权重:', w[2])
本文来自博客园,作者:PaleKernel,转载请注明原文链接:https://www.cnblogs.com/PaleKernel/articles/17270615.html

浙公网安备 33010602011771号