제퍼넷 로고

능형 회귀란 무엇입니까? [업데이트]

시간

차례

제공자: 프라샨트 아쇽

산등성이 되돌아옴 다중 공선성 문제가 있는 모든 데이터를 분석하는 데 사용되는 모델 조정 방법입니다. 이 방법은 L2 정규화를 수행합니다. 다중공선성 문제가 발생하면 최소제곱이 편향되지 않고 분산이 크기 때문에 예측값이 실제값과 멀리 떨어져 있게 됩니다. 

능선 회귀의 비용 함수:

최소(||Y – X(세타)||^2 + λ||세타||^2)

람다는 페널티 용어입니다. 여기에 주어진 λ는 능선 함수의 알파 매개변수로 표시됩니다. 따라서 알파 값을 변경하여 페널티 기간을 제어합니다. 알파 값이 높을수록 페널티가 커지므로 계수의 크기가 줄어듭니다.

  • 매개변수를 축소합니다. 따라서 다중공선성을 방지하기 위해 사용됩니다.
  • 계수 수축으로 모델 복잡성을 줄입니다.
  • 무료 강좌를 확인하세요. 회귀 분석.

능형 회귀 모델 

모든 유형의 회귀 기계 학습 모델에 대해 일반적인 회귀 방정식은 다음과 같이 작성된 기본을 형성합니다.

Y = XB + 전자

여기서 Y는 종속변수, X는 독립변수, B는 추정할 회귀계수, e는 오차가 잔차임을 나타냅니다. 

이 방정식에 람다 함수를 추가하면 일반 모델에서 평가되지 않는 분산이 고려됩니다. 데이터가 준비되고 L2 정규화의 일부로 식별된 후에 수행할 수 있는 단계가 있습니다.

표준화 

능형 회귀 분석에서 첫 번째 단계는 평균을 빼고 표준 편차로 나누어 변수(종속 및 독립 모두)를 표준화하는 것입니다. 이는 특정 공식의 변수가 표준화되었는지 여부를 어떻게든 표시해야 하기 때문에 표기법에 문제를 야기합니다. 표준화에 관한 한 모든 능선 회귀 계산은 표준화된 변수를 기반으로 합니다. 최종 회귀 계수가 표시되면 원래 척도로 다시 조정됩니다. 그러나 능선 추적은 표준화된 규모입니다.

또한 읽기 : 기계 학습의 지원 벡터 회귀

편향과 분산의 절충

실제 데이터 세트에서 능선 회귀 모델을 구축할 때 편향과 분산의 균형은 일반적으로 복잡합니다. 그러나 기억해야 할 일반적인 추세는 다음과 같습니다.

  1. 바이어스는 λ가 증가함에 따라 증가합니다.
  2. λ가 증가함에 따라 분산은 감소합니다.

능선 회귀의 가정

능선 회귀의 가정은 선형 회귀의 가정과 동일합니다(선형성, 상수 분산, 독립성). 그러나 능선 회귀는 신뢰한계를 제공하지 않으므로 오류 분포가 정규적이라고 가정할 필요는 없습니다.

이제 선형 회귀 문제의 예를 들어 능형 회귀가 구현되면 오류를 줄이는 데 어떻게 도움이 되는지 살펴보겠습니다.

우리는 특정 지역에서 매출을 향상시키기 위해 식품 항목의 최상의 조합을 찾으려고 노력하는 식품 레스토랑에 대한 데이터 세트를 고려할 것입니다. 

필수 라이브러리 업로드

import numpy as np   
import pandas as pd
import os
 
import seaborn as sns
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt   
import matplotlib.style
plt.style.use('classic')
 
import warnings
warnings.filterwarnings("ignore")

df = pd.read_excel("food.xlsx")

데이터에 대한 모든 EDA를 수행하고 누락된 값을 처리한 후 데이터 세트에 범주형 변수를 가질 수 없으므로 이제 더미 변수를 생성해 보겠습니다.

df =pd.get_dummies(df, columns=cat,drop_first=True)

columns=cat은 데이터 세트의 모든 범주형 변수입니다.

그런 다음 선형 회귀 방법에 대한 데이터 세트를 표준화해야 합니다.

변수를 연속 변수로 스케일링하면 가중치가 다릅니다.

#Scales the data. Essentially returns the z-scores of every attribute
 
from sklearn.preprocessing import StandardScaler
std_scale = StandardScaler()
std_scale

df['week'] = std_scale.fit_transform(df[['week']])
df['final_price'] = std_scale.fit_transform(df[['final_price']])
df['area_range'] = std_scale.fit_transform(df[['area_range']])

훈련-테스트 분할

# Copy all the predictor variables into X dataframe
X = df.drop('orders', axis=1)
 
# Copy target into the y dataframe. Target variable is converted in to Log. 
y = np.log(df[['orders']])

# Split X and y into training and test set in 75:25 ratio
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25 , random_state=1)

선형 회귀 모델

또한 읽기 : 선형 회귀는 무엇입니까?

# invoke the LinearRegression function and find the bestfit model on training data
 
regression_model = LinearRegression()
regression_model.fit(X_train, y_train)

# Let us explore the coefficients for each of the independent attributes
 
for idx, col_name in enumerate(X_train.columns):
    print("The coefficient for {} is {}".format(col_name, regression_model.coef_[0][idx]))

The coefficient for week is -0.0041068045722690814
The coefficient for final_price is -0.40354286519747384
The coefficient for area_range is 0.16906454326841025
The coefficient for website_homepage_mention_1.0 is 0.44689072858872664
The coefficient for food_category_Biryani is -0.10369818094671146
The coefficient for food_category_Desert is 0.5722054451619581
The coefficient for food_category_Extras is -0.22769824296095417
The coefficient for food_category_Other Snacks is -0.44682163212660775
The coefficient for food_category_Pasta is -0.7352610382529601
The coefficient for food_category_Pizza is 0.499963614474803
The coefficient for food_category_Rice Bowl is 1.640603292571774
The coefficient for food_category_Salad is 0.22723622749570868
The coefficient for food_category_Sandwich is 0.3733070983152591
The coefficient for food_category_Seafood is -0.07845778484039663
The coefficient for food_category_Soup is -1.0586633401722432
The coefficient for food_category_Starters is -0.3782239478810047
The coefficient for cuisine_Indian is -1.1335822602848094
The coefficient for cuisine_Italian is -0.03927567006223066
The coefficient for center_type_Gurgaon is -0.16528108967295807
The coefficient for center_type_Noida is 0.0501474731039986
The coefficient for home_delivery_1.0 is 1.026400462237632
The coefficient for night_service_1 is 0.0038398863634691582


#checking the magnitude of coefficients
from pandas import Series, DataFrame
predictors = X_train.columns
 
coef = Series(regression_model.coef_.flatten(), predictors).sort_values()
plt.figure(figsize=(10,8))
 
coef.plot(kind='bar', title='Model Coefficients')
plt.show()

회귀 모델에 긍정적인 영향을 미치는 변수는 food_category_Rice Bowl, home_delivery_1.0, food_category_Desert, food_category_Pizza,website_homepage_mention_1.0, food_category_Sandwich, food_category_Salad 및 Area_range이며 이러한 요소는 우리 모델에 큰 영향을 미칩니다.

Ridge 회귀와 Lasso 회귀: 주요 차이점 이해

선형 회귀 모델의 세계에서 Ridge와 Lasso Regression은 특히 복잡하고 고차원적인 데이터가 있는 상황에서 모델의 예측 정확도와 해석성을 향상시키도록 설계된 두 가지 기본 기술로 두각을 나타냅니다. 둘 사이의 핵심 차이점은 손실 함수에 페널티를 추가하여 과적합을 방지하는 방법인 정규화에 대한 접근 방식에 있습니다. Tikhonov 정규화라고도 알려진 Ridge Regression은 계수 크기의 제곱에 비례하는 페널티 항을 추가합니다. 이 방법은 계수를 0으로 축소하지만 정확히 0으로 축소하지는 않으므로 모델 복잡성과 다중 공선성을 줄입니다. 대조적으로, 올가미 회귀(최소 절대 수축 및 선택 연산자)에는 계수 크기의 절대값인 페널티 항이 포함됩니다. 이러한 독특한 접근 방식은 계수를 축소할 뿐만 아니라 일부 계수를 0으로 줄여 특징 선택을 효과적으로 수행하고 더 간단하고 해석하기 쉬운 모델을 만들 수 있습니다.

Ridge 또는 Lasso Regression을 사용하기로 한 결정은 데이터 세트의 특정 요구 사항과 해결해야 할 근본적인 문제에 따라 달라집니다. Ridge Regression은 모든 특성이 관련성이 있다고 가정하거나 다중 공선성이 있는 데이터세트가 있는 경우 선호됩니다. 왜냐하면 계수를 분산하여 상관된 입력을 보다 효과적으로 처리할 수 있기 때문입니다. 한편 Lasso Regression은 모델에 기여하는 기능 수를 줄이는 것이 유리한 상황에서 탁월한 성능을 발휘합니다. 이는 기능 선택이 필수적인 고차원 데이터세트에 특히 유용합니다. 그러나 Lasso는 상관 관계가 높은 기능의 경우 일관성이 없을 수 있습니다. 따라서 Ridge와 Lasso 사이의 선택은 종종 교차 검증 및 비교 모델 성능 평가를 통해 결정되는 데이터의 특성, 원하는 모델 복잡성 및 분석의 특정 목표에 따라 결정되어야 합니다.

기계 학습의 능형 회귀

  • 능형 회귀는 기계 학습의 핵심 기술로, 과적합 및 다중 공선성이 발생하기 쉬운 시나리오에서 강력한 모델을 만드는 데 없어서는 안 될 요소입니다. 이 방법은 계수의 제곱에 비례하는 페널티 항을 도입하여 표준 선형 회귀를 수정하며, 이는 상관 관계가 높은 독립 변수를 처리할 때 특히 유용하다는 것이 입증되었습니다. 주요 이점 중 능선 회귀 분석은 추가된 복잡성 페널티를 통해 과적합을 효과적으로 줄이고, 상관 변수 간의 효과 균형을 유지하여 다중 공선성을 관리하며, 모델 일반화를 향상하여 보이지 않는 데이터에 대한 성능을 향상시킵니다.
  • 실제 설정에서 능선 회귀를 구현하려면 일반적으로 람다라고 알려진 올바른 정규화 매개변수를 선택하는 중요한 단계가 필요합니다. 일반적으로 교차 검증 기술을 사용하여 수행되는 이러한 선택은 모델 교육에 내재된 편향-분산 균형을 맞추는 데 필수적입니다. Ridge 회귀는 Python의 다양한 기계 학습 라이브러리에서 광범위한 지원을 받습니다. scikit-learn 주목할만한 예가 됩니다. 여기서 구현에는 모델 정의, 람다 값 설정, 피팅 및 예측을 위한 내장 함수 사용이 포함됩니다. 그 유용성은 정확한 예측과 강력한 모델 구축이 가장 중요한 금융 및 의료 분석과 같은 분야에서 특히 두드러집니다. 궁극적으로 정확도를 높이고 복잡한 데이터 세트를 처리하는 능선 회귀의 역량은 기계 학습이라는 역동적인 분야에서 지속적인 중요성을 확고히 합니다.

또한 읽기 : 분위수 회귀란 무엇입니까?

베타 계수의 값이 높을수록 영향이 커집니다.

밥그릇, 피자, 디저트와 같은 요리는 택배 및 website_homepage_mention과 같은 시설을 갖추고 있어 수요나 주문 빈도가 높은 데 중요한 역할을 합니다.

레스토랑 주문 예측을 위한 회귀 모델에 부정적인 영향을 미치는 변수: Cuisine_Indian,food_category_Soup, food_category_Pasta, food_category_Other_Snacks.

Final_price는 예상대로 주문에 부정적인 영향을 미칩니다.

수프, 파스타, 기타 스낵, 인도 음식 카테고리와 같은 요리는 레스토랑에서 접수되는 주문 수에 대한 모델 예측을 손상시켜 다른 모든 예측 변수를 일정하게 유지합니다.

주문 빈도에 대한 모델 예측에 거의 영향을 미치지 않는 일부 변수는 week_service와 night_service입니다.

모델을 통해 우리는 객체 유형의 변수 또는 범주형 변수가 연속형 변수보다 더 중요하다는 것을 알 수 있습니다.

또한 읽기 : Python의 정규식 소개

[포함 된 콘텐츠]

정규화

  1. Ridge의 하이퍼파라미터인 알파 값은 모델이 자동으로 학습하지 않고 수동으로 설정해야 함을 의미합니다. 최적의 알파 값을 찾기 위해 그리드 검색을 실행합니다.
  2. Ridge Regularization을 위한 최적의 알파를 찾기 위해 GridSearchCV를 적용합니다.
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV
 
ridge=Ridge()
parameters={'alpha':[1e-15,1e-10,1e-8,1e-3,1e-2,1,5,10,20,30,35,40,45,50,55,100]}
ridge_regressor=GridSearchCV(ridge,parameters,scoring='neg_mean_squared_error',cv=5)
ridge_regressor.fit(X,y)

print(ridge_regressor.best_params_)
print(ridge_regressor.best_score_)

{'alpha': 0.01}
-0.3751867421112124

음수 기호는 그리드 검색 교차 검증 라이브러리의 알려진 오류로 인한 것이므로 음수 기호를 무시하십시오.

predictors = X_train.columns
 
coef = Series(ridgeReg.coef_.flatten(),predictors).sort_values()
plt.figure(figsize=(10,8))
coef.plot(kind='bar', title='Model Coefficients')
plt.show()

위의 분석을 통해 최종 모델을 다음과 같이 정의할 수 있다고 결정할 수 있습니다.

주문 = 4.65 + 1.02home_delivery_1.0 + .46 website_homepage_mention_1 0+ (-.40* final_price) +.17area_range + 0.57food_category_Desert + (-0.22food_category_Extras) + (-0.73food_category_Pasta) + 0.49food_category_Pizza + 1.6 .0.22음식_범주_밥_그릇 + 0.37음식_범주_샐러드 + 1.05 food_category_Sandwich + (-0.37food_category_Soup) + (-1.13food_category_Starters) + (-0.16cuisine_Indian) + (-XNUMXcenter_type_Gurgaon)

회귀 모델에 영향을 미치는 상위 5개 변수는 다음과 같습니다.

  1. food_category_밥그릇
  2. home_delivery_1.0
  3. food_category_Pizza
  4. food_category_Desert
  5. website_homepage_mention_1

베타 계수가 높을수록 예측 변수가 더 중요합니다. 따라서 특정 수준의 모델 튜닝을 통해 비즈니스 문제에 영향을 미치는 최상의 변수를 찾을 수 있습니다.

이 블로그가 도움이 되었다고 생각하고 이러한 개념에 대해 더 자세히 알아보고 싶다면 가입할 수 있습니다. Great Learning Academy의 무료 온라인 강좌 .

능형 회귀란 무엇입니까?

능선 회귀는 편향을 추가하여 과적합을 줄이고 예측 정확도를 높이는 선형 회귀 방법입니다.

능선 회귀는 일반 최소 제곱과 어떻게 다릅니까?

일반 최소 제곱과 달리 능선 회귀에는 모델 복잡성을 줄이기 위해 계수의 크기에 대한 페널티가 포함됩니다.

언제 Ridge Regression을 사용해야 할까요?

다중 공선성을 처리하거나 관측치보다 예측 변수가 더 많은 경우 능선 회귀를 사용합니다.

Ridge Regression에서 정규화 매개변수의 역할은 무엇입니까?

정규화 매개변수는 계수 축소 정도를 제어하여 모델 단순성에 영향을 미칩니다.

Ridge Regression이 비선형 관계를 처리할 수 있나요?

주로 선형 관계에 대한 것이지만 능선 회귀에는 비선형성에 대한 다항식 항이 포함될 수 있습니다.

Ridge Regression은 소프트웨어에서 어떻게 구현됩니까?

대부분의 통계 소프트웨어는 능선 회귀를 위한 내장 기능을 제공하며 변수 사양과 매개변수 값이 필요합니다.

최상의 정규화 매개변수를 선택하는 방법은 무엇입니까?

최상의 매개변수는 그리드 검색이나 무작위 검색과 같은 기술을 사용하는 교차 검증을 통해 찾는 경우가 많습니다.

Ridge Regression의 한계는 무엇입니까?

여기에는 해석이 복잡해질 수 있는 모든 예측변수가 포함되어 있으며 최적의 매개변수를 선택하는 것이 어려울 수 있습니다.

spot_img

최신 인텔리전스

spot_img