📜  最小角回归 (LARS)

📅  最后修改于: 2022-05-13 01:55:20.009000             🧑  作者: Mango

最小角回归 (LARS)

与可以预测分类或离散值的分类相比,回归是可以预测连续值(实数)的监督机器学习任务。在开始之前,如果您是初学者,我强烈推荐这篇文章。
最小角回归 (LARS) 是一种用于高维数据(即具有大量属性的数据)回归的算法。最小角度回归有点类似于前向逐步回归。由于它用于具有大量属性的数据,因此在每一步中,LARS 都会找到与目标值最高度相关的属性。可能有多个属性具有相同的相关性。在这种情况下,LARS 对属性进行平均,并沿与属性成相同角度的方向前进。这正是该算法被称为最小角度回归的原因。基本上,LARS 在不过度拟合模型的情况下朝着最优化计算的方向飞跃。
算法:

  • 将所有值归一化以具有零均值和单位方差。
  • 找到与残差最高度相关的变量。沿着这个方向移动回归线,直到我们到达另一个具有相同或更高相关性的变量。

注:残差是观察值和预测值之间的差异。变量,这里暗示一个属性。

  • 当我们有两个具有相同相关性的变量时,以介于两者之间的角度(即两个变量之间的最小角度)移动回归线。
  • 继续这个,直到我们所有的数据都用完,或者直到你认为模型足够大并且足够“通用”。

在数学上,LARS 的工作原理如下:

  • 所有系数,“B”设置为 0。
  • 预测变量 x j被发现与 y 最相关。
  • 在与 y 最相关的方向上增加系数 B j并在发现其他预测变量 x k与 x j具有相等或更高的相关性时停止。
  • 沿与 x j和 x k等角(具有相同角度)的方向延伸 (B j , B k )。
  • 继续并重复,直到所有预测变量都在模型中。

Python3中LARS的实现:
在本例中,我们将使用波士顿住房数据集,该数据集具有马萨诸塞州波士顿地区房屋的中值。您可以在此处了解有关此数据集的更多信息。
对于评估,我们将使用 r2 分数。最好的 r2 分数是 1.0。它也可以是负数并且为 0,当预测器总是预测一个常数值时,不管属性值如何。
代码:

python3
# Importing modules that are required
 
from sklearn.datasets import load_boston
from sklearn.linear_model import LassoLars
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
 
# Loading dataset
dataset = load_boston()
X = dataset.data
y = dataset.target
 
# Splitting training and testing data
X_train, X_test, y_train, y_test = train_test_split(X, y,
                     test_size = 0.15, random_state = 42)
 
# Creating and fitting the regressor
regressor = LassoLars(alpha = 0.1)
regressor.fit(X_train, y_train)
 
 
# Evaluating model
prediction = regressor.predict(X_test)
 
print(f"r2 Score of test set : {r2_score(y_test, prediction)}")


输出:

r2 Score of test set : 0.6815908068381828

我们获得了大约 0.6816 的 r2 分数,这实际上是相当不错的。
使用 LARS 的优点:

  • 计算速度与前向选择一样快,但有时可能更准确。
  • 当特征的数量远大于数据实例的数量时,在数值上非常有效。
  • 它可以很容易地修改为其他估计器生成解决方案。

使用 LARS 的缺点:

  • LARS 对噪声高度敏感,有时会产生不可预测的结果。

参考:

  • 维基百科
  • scikit-learn 文档
  • 迈向数据科学