let us not love with words or tongue but actions and truth.

IT/파이썬

Lasso regression(라쏘 회귀분석)

sarah0518 2020. 12. 22. 10:53
728x90

Lasso regression에 대한 것이나 Ridge랑 비교 분석 해놓은 사이트가 많으니 꼭 참고해서 읽어보셔요.

여기서는 어떻게 파이썬으로 쓸것인지에 대해서만 간략하게 소개드리려고합니다.

 

우선 우리가 처음 가지고 있다고 가정할 x변수에 대해서 보겠습니다.

 

1
x.shape
cs

> (847, 56)

 

 

즉, 56개의 x변수를 가지고 있는데,

이 변수들을 그대로 쓰기에는 너무 많기 때문에 축소하기 위해서 쓰려고 합니다.

그때 사용할 로직이 Lasso regression입니다.

 

 

 

PCA차원축소와는 조금 다르게, 여기서는 원변수를 그대로 쓰는데요.

https://www.datacamp.com/community/tutorials/tutorial-ridge-lasso-elastic-net

상대적 변수의 중요도를 판단하여,

의미가 없다고 생각되는 변수들의 coefficient값을 0으로 만들어주어

중요도가 높은 변수만 select할수 있게 해줍니다.

 

 

 

코드는 아래와 같이 간단합니다.

1
2
3
4
from sklearn.linear_model import Lasso
 
lasso_low = Lasso(alpha=0.03, max_iter=100000).fit(x, y)
print("사용한 인자의 수 : {}".format(np.sum(lasso_low.coef_ != 0)))
cs

 

 

> 사용한 인자의 수 : 17

위의 코드에서 alpha값을 더 작게 해 줄 수록 더 많은 변수가 선택됩니다. 

alpha값을 크게 하면 역시 더 적은 변수들이 선택되구요.

 

 

 

또 위의 결과가 어떤 17개의 변수를 선택했는지 보기위해서는

아래와 같은 방법으로 확인하시면 됩니다.

 

 

1
x.iloc[:,lasso_low.coef_!=0].columns
cs

> Index(['col1', 'col2', 'col3', 'col4', 'col5', ... 'col17'],
      dtype='object')

728x90