기계 학습 분야에서는 변수가 많은 데이터를 다루는 경우가 많으며, 이러한 데이터를 다루면 다중 공선성이 발생할 수 있습니다. 그 때, 다중 공선성을 회피하는 수법인 Lasso를 비롯한 정규화 회귀가 이용되는 경우가 있습니다.
JMP Pro에서는 「일반화 회귀」라고 하는 수법으로서 이 정규화 회귀를 이용할 수 있어 파라미터 추정치(회귀 계수)를 수축이나 변수 선택에 의해, 다중 공선성을 영향을 억제한 안정된 모델 추정이 가능하게 됩니다.
아래 그림은 Lasso가 회귀 계수를 수축했을 때의 모습을 보여줍니다. 보고서 "원래 설명 변수에 대한 추정치"를 보면 효과가 적은 설명 변수가 0(영)으로 수축되고 Lasso가 변수 선택을 수행하고 있음을 확인할 수 있습니다.

그렇다면 다중 공선성이 존재하는 데이터에 대해 Lasso 회귀는 어떻게 유효합니까? 본 기사에서는, 응답(Y)과의 진정한 관계를 미리 정한 가상 데이터를 이용해, Lasso 회귀, 중회귀 분석, 스텝 와이즈법의 각각이 진정한 모델을 얼마나 올바르게 추정할 수 있는지를 검토합니다.
목차
가상 데이터
목적 변수: Y
설명변수:X1~X20 (20개)
Y는 몇 가지 설명 변수의 선형 결합을 평균으로 하고, 표준 오차를 10으로 한 정규 난수로부터 생성합니다.

이러한 형식의 데이터에 대해, 다음의 2 종류의 것을 준비해, Lasso 회귀의 효과를 비교합니다.
1. 설명 변수 간의 상관이 덜한 데이터
2. 설명 변수간에 어느 정도의 상관이 있는 데이터(다중 공선성이 있는 것)
이것에 의해, 다중 공선성의 유무가 변수 선택이나 모델 추정에 어떠한 영향이 있는지 를 조사해 보겠습니다.
※이 2 종류의 샘플 데이터는 본 기사에 첨부되어 있습니다.
1. 설명 변수 간의 상관이 거의 없는 데이터의 예
데이터 : 'data_without_correlation.jmp'
설명변수간의 상관(r) :-0.06~0.10

이 데이터를 이용하여, 중회귀 분석, 스텝 와이즈법(정지 룰: 최소 BIC), Lasso 회귀(검증법: BIC)의 각 수법으로 모델을 맞추어, 구해진 회귀 계수를 정리한 결과를 다음 표에 나타냅니다. 열 "진정한 표현식"은 Y를 생성할 때 사용한 설명 변수의 실제 계수를 설명합니다.

스텝와이즈법에서는 선택되지 않은 변수의 계수는 0, Lasso 회귀에서는 정규화에 의해 계수가 0으로 수축된 경우에도 마찬가지로 0으로 표시됩니다.
이 결과로부터, 어느 기법도 진정한 식에 가까운 모델을 추정하고, 효과가 없는 변수에 대해서는 0 또는 매우 작은 계수가 되어 있는 것을 확인했습니다.
즉, 설명변수간의 상관이 거의 없는 데이터에 있어서, 중회귀 분석, 스텝와이즈법, Lasso 회귀 어느 기법에서도, 진정한 응답 관계를 대체로 정확하게 추정할 수 있는 것을 알았습니다.
2. 설명 변수 사이에 어느 정도의 상관이 있는 데이터의 예
데이터 : 'data_without_correlation.jmp'
설명 변수 간의 상관(r):-0.50~0.52

이러한 데이터에서는 설명 변수 간의 상관에 의해 회귀 계수의 추정이 불안정해지기 쉽다. 이 데이터에서 다중 회귀 분석을 수행하면 VIF가 매우 큰 값이 되고 다중 공선성의 영향이 강하게 나타납니다.

1. 의 경우와 같이, 중회귀 분석, 스텝 와이즈법, Lasso 회귀의 각 기법으로 모델을 맞추고, 얻어진 계수를 정리한 표를 나타냅니다.

다중 회귀 분석에서 다중 공선성의 영향으로 계수의 크기가 진정한 값에서 크게 벗어난 결과가 나타났습니다.
스텝 와이즈 방법에서도 중요한 변수가 선택되지 않거나 불필요한 변수가 선택되는 등 실제 표현식을 기반으로 올바른 변수 선택이 수행되지 않았습니다.
한편, Lasso 회귀에서는 1.의 경우와 마찬가지로, 효과가 없는 설명 변수를 0으로 수축하여 효과가 있는 변수에 대해서도 거의 정확한 추정치를 얻을 수 있었다.
3. Lasso 계수에 대한 시뮬레이션
지금까지의 예에서는, Y의 값을 Random Normal 함수를 사용해, 한 세트의 정규 난수로부터 생성한 데이터를 사용하고 있었습니다. 그러나 난수이므로 추출하는 난수에 따라 결과가 바뀔 수 있습니다.
JMP에 탑재되어 있는 「시뮬레이션」 의 기능을 사용하면(자), 다수의 정규 난수의 쌍에 근거해 추정을 반복해, 회귀 계수의 시뮬레이션 분포를 얻을 수 있습니다. 이를 통해 Lasso 회귀에 의한 변수 선택의 타당성과 신뢰성을 평가할 수 있습니다.
여기에서는, 케이스 2.의 "어느 정도 상관이 있는 데이터"에 대해서 Lasso 회귀를 실시했을 때, 효과가 없는 변수에 대해서, 얼마나 빈도로 0으로 수축되는지, 또는 효과가 있는 변수가 얼마나 빈도로 0이 아닌(비제로)라고 추정되는지를 시뮬레이션에 의해 고찰합니다.
JMP로 시뮬레이션을 수행하는 절차
Lasso 회귀를 실행할 때 추정치에 대해 500회 시뮬레이션을 수행하는 방법을 보여줍니다.
- Lasso 보고서 "원래 설명 변수에 대한 추정값"의 "추정값"의 숫자 부분을 마우스 오른쪽 버튼으로 클릭하고 시뮬레이션 을 선택합니다.
- 시뮬레이션 창이 표시되므로 전환 소스 열을 Y로, 전환 대상 열을 Y로 설정합니다. 샘플 수를 500(시뮬레이션 횟수)으로 설정하고 난수 시드 값을 123456으로 설정합니다(결과를 재현하기 위해 편의적으로 지정한 값).

이 작업은 500회 시뮬레이션에서 얻은 회귀 계수의 분포를 새로운 데이터 테이블로 출력합니다.
출력된 데이터 테이블의 스크립트 "변량 분포"를 실행하면 각 변수의 시뮬레이션 분포가 표시됩니다. 또한 「요약 통계량」의 리포트에서 「제로의 개수」, 「제로의 비율」을 표시시킵니다.

위에서 얻은 각 변수의 0 개수, 0의 비율을 표에 정리해 보았습니다.

진정한 표현식에서 효과가 없는 변수는 Lasso 회귀에 의해 높은 비율로 0으로 수축됩니다. 반면에, 진정한 공식의 계수의 절대값이 큰 변수(X7, X12 등)는 500회 시뮬레이션에서 한 번도 0으로 수축되지 않았으며 항상 모델에 포함되는 것으로 나타났습니다.
시뮬레이션 을 통해 Lasso 회귀가 다중 공선성 데이터에 대해서도 비효율적 인 변수를 높은 확률로 제외하고 중요한 변수를 안정적으로 선택할 수 있음을 확인했습니다.
다만, 실무상, 다중 공선성이 강한 데이터에 있어서는, Lasso 회귀가 상관이 높은 설명 변수군 중에서 1개의 변수만을 선택해, 다른 변수를 제외하는 경향이 있는 점에 주의해 주세요.
by 마스카와 나오히로(JMP Japan)
마스카와 나오히로 - JMP 사용자 커뮤니티