회귀 모델을 구축할 때는 반드시 다중 공선성(multicollinearity) 여부를 확인해야 합니다. 이는 연속형 변수들의 모든 조합 사이에 존재하는 상관관계를 파악해야 하기 때문입니다. 만약 변수 간에 다중 공선성이 존재한다면, 모델의 신뢰성을 해치지 않도록 해당 데이터에서 이를 제거하는 과정이 필요합니다.
그런데 현실 세계의 데이터는 대부분 선형적이지 않은 경우가 많습니다. 따라서 이러한 비선형 데이터를 모델에 효과적으로 적합(fitting)시킬 수 있는 방법을 찾아야 합니다. 이번 글에서는 앤스콤(Anscombe) 데이터셋을 활용하여 비선형 데이터를 시각화하고, 다항식 회귀 곡선으로 추세를 파악하는 방법을 살펴보겠습니다.
비선형 데이터에 lmplot 함수 적용하기
seaborn 라이브러리의 lmplot 함수에 order 매개변수를 지정하면, 단순 직선이 아닌 다항식 곡선을 데이터에 맞출 수 있습니다. 아래 예제에서는 앤스콤 데이터셋 중 두 번째(dataset == 'II') 그룹을 선택하여 3차 다항식 회귀 곡선을 그려봅니다.
예제 코드
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
my_df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = my_df.query("dataset == 'II'"), order = 3)
plt.show()실행 결과

코드 설명
- 먼저 필요한 패키지인 pandas, seaborn, matplotlib을 가져옵니다.
- seaborn 라이브러리에서 제공하는 앤스콤(Anscombe) 데이터셋을 불러옵니다.
- 불러온 데이터는 데이터프레임 형태로 저장됩니다.
load_dataset함수를 사용해 데이터셋을 손쉽게 로드할 수 있습니다.lmplot함수를 통해 데이터를 산점도와 함께 시각화합니다.- 이때 데이터프레임을
data매개변수로 전달합니다. - x축 값, y축 값과 함께
order = 3을 지정하여 3차 다항식 곡선을 피팅합니다. - 결과적으로 생성된 그래프는 화면에 출력되어 비선형 추세를 한눈에 확인할 수 있습니다.
이처럼 order 값을 조정함으로써 직선 회귀로는 표현할 수 없는 곡선 형태의 관계까지 효과적으로 모델링할 수 있습니다. 실무에서는 데이터의 분포를 먼저 살펴본 후, 적절한 차수의 다항식을 선택하는 것이 좋습니다.