Lasso 회귀는 기능 선택에 사용되는 선형 회귀 모델입니다. 손실 함수에 L1 정규화 항을 추가하면 일부 특징의 계수를 0으로 설정하여 특징 선택 목적을 달성할 수 있습니다. 다음에서는 올가미 회귀 방법을 자세히 설명하고 예제와 해당 Python 코드를 제공하겠습니다.
올가미 회귀의 손실 함수는 다음과 같습니다.
L(beta)=frac{1}{2n}sum_{i=1}^{n}(y_{ i }-sum_{j=1}^{p}x_{ij}beta_{j})^{2}+lambdasum_{j=1}^{p}|beta_{j}|
선형 회귀 분석에서 , 중요한 개념은 정규화입니다. 그 중 n은 샘플 개수, p는 특징 개수, y_{i}는 i번째 샘플의 라벨, x_{ij}는 i번째 샘플의 j번째 특징값, beta_를 나타냅니다. {j}는 j번째 특성 계수를 나타내고, 람다는 정규화 강도를 나타냅니다. 정규화의 목적은 모델의 특성 계수에 페널티를 적용하여 과적합을 방지하고 모델의 복잡성을 제어하는 것입니다. 정규화에서는 람다 값이 클수록 모델이 기능에 더 강한 페널티를 적용합니다. 이로 인해 일부 특성의 계수가 0이 되어 모델의 특성 수가 줄어듭니다. 정규화를 통해 불필요한 기능을 줄이면서 예측 결과에 가장 큰 영향을 미치는 기능을 유지하도록 선택할 수 있습니다. 이는 모델을 단순화하고 일반화 능력을 향상시킵니다. 따라서 정규화를 선택할 때 올가미 회귀의 최적화 목표는 다음과 같습니다.
hat{beta}=argmin_{beta}frac{1}{2n}sum_{i=1}^{n}(y_ {i}-sum_ {j=1}^{p}x_{ij}beta_{j})^{2}+lambdasum_{j=1}^{p}|beta_{j}|
lasso 회귀 솔루션 방법은 다음을 사용할 수 있습니다. 좌표 하강 방법 또는 최소 각도 회귀 방법. 좌표 하강법은 한 번에 하나의 계수만 최적화하고 수렴할 때까지 다른 계수를 변경하지 않고 유지하는 반복 최적화 방법입니다. 최소 각도 회귀 방법은 모든 계수를 동시에 최적화하여 최종 모델을 얻는 직접 솔루션 방법입니다.
Lasso 회귀의 예 및 코드
# 导入数据集和相关库 from sklearn.datasets import load_diabetes from sklearn.linear_model import Lasso import numpy as np import matplotlib.pyplot as plt # 加载糖尿病数据集 diabetes = load_diabetes() # 将数据集分成训练集和测试集 X_train = diabetes.data[:300] y_train = diabetes.target[:300] X_test = diabetes.data[300:] y_test = diabetes.target[300:] # 套索回归模型 lasso = Lasso(alpha=0.1) lasso.fit(X_train, y_train) # 打印每个特征的系数 print("lasso.coef_:", lasso.coef_) # 绘制每个特征的系数 plt.plot(range(diabetes.data.shape[1]), lasso.coef_) plt.xticks(range(diabetes.data.shape[1]), diabetes.feature_names, rotation=60) plt.ylabel("Coefficients") plt.show()
위 코드를 실행하면 각 특성의 계수와 플롯된 계수 플롯을 얻을 수 있습니다. 결과는 Lasso 회귀가 두 번째 특성을 제외한 모든 특성의 계수를 0으로 압축한다는 것을 보여줍니다. 이는 이러한 특성이 모델에 거의 기여하지 않으며 제거될 수 있음을 나타냅니다. 또한 두 번째 특성의 계수가 다른 특성의 계수보다 크므로 가장 중요한 특성임을 나타냅니다.
Lasso 회귀는 정규화 강도를 조정하여 특징의 양과 질을 제어할 수 있는 매우 효과적인 특징 선택 방법입니다. 실제 적용에서는 교차 검증을 사용하여 최적의 정규화 강도를 선택하여 더 나은 모델 성능과 특징 선택 효과를 얻을 수 있습니다.
위 내용은 Lasso 회귀 예시: 특징 선택 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!