반응형
릿지

릿지

릿지 회귀에서 가중치 W는 데이터 예측 뿐 아니라 추가 제약 조건을 위해 사용한다.

W의 절대값을 가능한한 작게하여 W의 모든원소가 0이 되게 하여 모든 특성이 출력에 주는

영향을 0으로 가깝게 만듦으로써 과대적합이 되지 않게 한다.

In [1]:
import numpy as nop
import pandas as pd
import mglearn
In [2]:
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

보스턴주택가격 데이터로드

In [3]:
X, y = mglearn.datasets.load_extended_boston()
print("X.shape: {}".format(X.shape))
X.shape: (506, 104)

데이터분할

In [4]:
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

선형모델

In [5]:
lr = LinearRegression().fit(X_train, y_train)
In [6]:
print("훈련 세트 점수: {:.2f}".format(lr.score(X_train, y_train)))
print("테스트 세트 점수: {:.2f}".format(lr.score(X_test, y_test)))
훈련 세트 점수: 0.95
테스트 세트 점수: 0.61

릿지모델

선형모델모다 훈련세트의 점수는 낮지만 테스트 세트의 점수는 높아진 것을 볼 수 있다.

In [7]:
from sklearn.linear_model import Ridge
In [8]:
ridge = Ridge().fit(X_train, y_train)
print("훈련 세트 점수: {:.2f}".format(ridge.score(X_train, y_train)))
print("테스트 세트 점수: {:.2f}".format(ridge.score(X_test, y_test)))
훈련 세트 점수: 0.89
테스트 세트 점수: 0.75

Ridge의 매개변수로는 alpha가 있습니다. alpha값을 높이면 계수를 0에 가깝게 만들어서 훈련세트의 성능은 나빠지지만 일반화에는 도움을 줄 수 있다.

그리스서치

In [9]:
from sklearn.svm import SVC

best_score = 0

for alpha in [1e-05, 0.0001, 0.001, 0.01, 0.1, 1, 10, 100]:
        ridge = Ridge(alpha=alpha)
        ridge.fit(X_train, y_train)

        score = ridge.score(X_test, y_test)
        score1  = ridge.score(X_test, y_test)


        print("alpha 파라미터: {}".format(alpha))
        print("훈련 세트 점수: {:.2f}".format(score))
        print("테스트 세트 점수: {:.2f}".format(score1))
        print("---------------------------------")
alpha 파라미터: 1e-05
훈련 세트 점수: 0.61
테스트 세트 점수: 0.61
---------------------------------
alpha 파라미터: 0.0001
훈련 세트 점수: 0.62
테스트 세트 점수: 0.62
---------------------------------
alpha 파라미터: 0.001
훈련 세트 점수: 0.63
테스트 세트 점수: 0.63
---------------------------------
alpha 파라미터: 0.01
훈련 세트 점수: 0.70
테스트 세트 점수: 0.70
---------------------------------
alpha 파라미터: 0.1
훈련 세트 점수: 0.77
테스트 세트 점수: 0.77
---------------------------------
alpha 파라미터: 1
훈련 세트 점수: 0.75
테스트 세트 점수: 0.75
---------------------------------
alpha 파라미터: 10
훈련 세트 점수: 0.64
테스트 세트 점수: 0.64
---------------------------------
alpha 파라미터: 100
훈련 세트 점수: 0.42
테스트 세트 점수: 0.42
---------------------------------

alpha값을 줄이면 계수에 대한 제약이 없어져 선형모델과 같은 결과를 나타낸다.

alpha값이 너무 커지면 제약이 강해져 가중치는 0에 가까워져 성능이 떨어집니다.

parmeters를 축소하는 작업은 다중공선성 방지에 가장 많이 쓰입니다.

계수 축소에 의해 모델의 복잡도를 줄입니다.

L2 regularization을 활용합니다.

In [11]:
from IPython.core.display import display, HTML

display(HTML("<style> .container{width:90% !important;}</style>"))
In [ ]:
 
반응형

+ Recent posts