일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- n8n
- 신기효과
- 전환분석
- 성장
- 야구
- 데이터분석가
- 분석한스푼
- 아하모먼트
- DataAnalyst
- 벅슨의역설
- pandasai
- 글또
- 인과추론
- 시각화
- 프롬프트
- 데이터분석
- 데이터
- data
- aha-moment
- data-analysis
- PyGWalker
- DataAnalysis
- retentioneering
- productanalysis
- 주가데이터
- 프롬프트엔지니어링
- 데이터디스커버리플랫폼
- gapminder
- 트위먼의법칙
- EDA
데이터 생존 로그
🌟 데이터 분석가가 회귀 분석으로 할 수 있는 4가지② - 변수 선택과 비선형 패턴 찾기 본문
회귀 분석의 활용 방식 중, 변수 선택과 비선형 패턴에 대해 알아봅니다.
저번 게시글에서는 회귀 분석의 예측과 요인 분석에 대해 알아보았다.
https://analyst-ggom-chi-kim.tistory.com/23
🌟 데이터 분석가가 회귀 분석으로 할 수 있는 4가지① - 예측과 요인 분석
회귀 분석의 활용법을 4가지 관점에서 정리하고,장점과 한계점에 대해 알아봅니다. 처음 머신러닝을 배우면서 회귀 분석을 접했을 때는 이런 생각이 들었다."기초적이고 성능도 별로일 것 같은
analyst-ggom-chi-kim.tistory.com
이번 게시글에서는 회귀 분석을 통한 변수 선택과 비선형 패턴에 대해 알아보자!
3. 변수 선택: 중요한 변수만 남겨라 🎯
데이터 분석에서 모든 변수가 중요한 것은 아니다. 오히려 불필요한 변수를 제거하고 핵심적인 변수만 남기는 것이 분석 효율성을 높이고, 모델의 해석 가능성을 향상시킨다.
이를 위해 변수 선택이라는 작업이 필수적이다.
회귀를 통한 변수 선택은 주로 Lasso와 Ridge 같은 Regularization 기법을 활용하는데, 각 기법의 가장 주요한 아이디어는 다음과 같다.
- Lasso 회귀: 변수의 계수를 0으로 만들어 불필요한 변수를 제거
- Ridge 회귀: 계수를 작게 만들어 모델의 복잡성을 줄임
바로 실습을 해보자!
[Lasso 회귀를 활용한 변수 선택 실습]
- 예시 데이터는 저번 시리즈의 데이터를 그대로 활용 (링크)
from sklearn.linear_model import Lasso
from sklearn.model_selection import train_test_split
# 데이터 분리
X_uploaded = df[["watch_time", "likes", "comments", "shares", "subscribes"]]
y_uploaded = df["revisit"]
# 데이터 분리
X_train_uploaded, X_test_uploaded, y_train_uploaded, y_test_uploaded = train_test_split(
X_uploaded, y_uploaded, test_size=0.3, random_state=42
)
# Lasso 모델
lasso_uploaded = Lasso(alpha=0.1)
lasso_uploaded.fit(X_train_uploaded, y_train_uploaded)
# 변수 중요도 확인
lasso_coefficients_uploaded = pd.DataFrame({
"Variable": X_uploaded.columns,
"Coefficient": lasso_uploaded.coef_
}).sort_values(by="Coefficient", ascending=False)
# 시각화
plt.figure(figsize=(8, 6))
plt.barh(lasso_coefficients_uploaded["Variable"], lasso_coefficients_uploaded["Coefficient"], color='skyblue')
plt.title("Lasso Regression - Feature Importance", fontsize=16)
plt.xlabel("Coefficient Value", fontsize=12)
plt.ylabel("Features", fontsize=12)
plt.grid(axis='x', linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()
실습을 해보니, 간단한 코드를 통해 직관적으로 이해할 수 있는 변수의 중요도를 판별할 수 있었다.
개인적으로 생각하는 lasso 회귀의 한계점은 다음과 같다.
- 변수 중요도의 상대성: 변수 중요도는 다른 변수들과의 상호작용에 따라 달라질 수 있음
- 모델 종속성: 특정 변수 선택 결과가 특정 모델에 의존할 수 있음
4. 비선형 패턴 찾기: 단순한 선형 관계를 넘어 🔀
데이터에는 단순히 직선으로 표현할 수 없는 비선형적인 관계가 많다.
이러한 관계를 포착하려면 비선형 패턴을 다룰 수 있는 회귀 분석 기법이 필요하다.
회귀를 통한 비선형 패턴은 '다항 회귀'와 '스플라인 회귀'로 찾을 수 있다.
각각에 대해 알아보자!
특징 | 다항 회귀 | 스플라인 회귀 |
기본 아이디어 | 기존 독립변수를 고차항으로 확장하여,전체적 비선형 관계 모델링 | 데이터를 여러 구간으로 나누고, 각 구간에 다른 회귀식을 적용 |
적합한 데이터 | 전체적인 비선형 추세를 가진 데이터 | 구간별로 다른 비선형 패턴을 가진 데이터 |
적합한 사례 | - 특정 상품의 가격 변화에 따른 구매 추세 분석 - 시간에 따른 매출 증감 |
- 고객 만족도가 특정 구간에서 급증하거나 완만해지는 패턴 - 특정 시간대의 사용자 행동 분석 |
모델 복잡성 | 차수 증가 시 복잡성 급증 | 노드 수와 위치로 복잡성 제어 가능 |
과적합 위험 | 고차항 추가 시 발생 | 노드가 너무 많거나 부적절할 때 발생 |
해석 용이성 | 낮음(고차항의 의미 해석 어려움) | 구간별 해석은 가능하지만, 전체적 관계는 직관적이지 않음 |
유연성 | 제한적(고차항으로만 복잡성 조절 가능) | 매우 유연(구간별 패턴 반영 가능) |
다음은 다항 회귀를 통한 파이썬 예시 코드이다.
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
# 다항 특징 생성
poly = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly.fit_transform(X)
# 다항 회귀 모델
model = LinearRegression()
model.fit(X_poly, y)
# 다항식 계수 확인
poly_coefficients = pd.DataFrame({
"Feature": poly.get_feature_names_out(X.columns),
"Coefficient": model.coef_
}).sort_values(by="Coefficient", ascending=False)
print(poly_coefficients)
이번 포스팅에서는 회귀 분석의 활용 중 변수 선택과 비선형 패턴 찾기라는 두 가지 관점을 살펴보았다.
- 변수 선택: 핵심 변수만을 남겨 해석 가능성과 효율성을 높임
- 비선형 패턴 찾기: 선형 관계를 넘어 복잡한 데이터 패턴을 분석
회귀는 가장 단순하고 쉬운 도구이면서 다양한 활용을 할 수 있다.
잘 활용하면 유용한 도구가 될 수 있겠다!
'통계💡' 카테고리의 다른 글
⚖️ 성향 점수 매칭(PSM): 동등하지 않은 비교는 비교가 아니다! (0) | 2025.01.19 |
---|---|
🌟 데이터 분석가가 회귀 분석으로 할 수 있는 4가지① - 예측과 요인 분석 (0) | 2024.11.24 |
데이터 분석가라면 반드시 알아야할 데이터의 함정 세 가지! (0) | 2024.03.31 |
0. 벅슨의 역설: 가짜 상관성에 속아선 안돼! (0) | 2023.11.08 |