从LinearRegression到Lasso:特征选择与正则化的实战演进
在机器学习的世界里,线性模型就像是一把瑞士军刀——简单却功能强大。当我们面对波士顿房价预测这样的经典问题时,普通线性回归往往是第一个被尝试的工具。但现实世界的数据很少会乖乖遵循教科书上的理想假设,多重共线性、过拟合等问题常常让初学者感到困惑。本文将带你从最基础的LinearRegression出发,逐步探索岭回归(Ridge)和Lasso这两种强大的正则化技术,通过同一份数据集上的对比实验,直观展示它们如何解决多重共线性问题,以及Lasso独有的特征选择能力。
1. 基础构建:理解线性回归家族
线性回归的核心思想是通过线性组合特征来预测目标变量,其数学表达式为:
code复制y = β₀ + β₁x₁ + β₂x₂ + ... + βₙxₙ + ε
在scikit-learn中,实现这一模型的LinearRegression类简单易用:
python复制from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
# 加载数据
boston = load_boston()
X, y = boston.data, boston.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练模型
lr = LinearRegression()
lr.fit(X_train, y_train)
# 评估性能
print(f"训练集R²分数: {lr.score(X_train, y_train):.3f}")
print(f"测试集R²分数: {lr.score(X_test, y_test):.3f}")
关键参数解析:
| 参数 | 默认值 | 作用 |
|---|---|---|
fit_intercept |
True | 是否计算截距项 |
