반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 데이터분석
- 주가데이터
- DataAnalyst
- DataAnalysis
- 데이터
- 시각화
- 벅슨의역설
- PyGWalker
- data-analysis
- EDA
- 데이터분석가
- 아하모먼트
- retentioneering
- n8n
- 성장
- 프롬프트
- 글또
- 프롬프트엔지니어링
- pandasai
- 분석한스푼
- 신기효과
- productanalysis
- 전환분석
- aha-moment
- 데이터디스커버리플랫폼
- gapminder
- 인과추론
- data
- 야구
- 트위먼의법칙
Archives
데이터 생존 로그
🌟 데이터 분석가가 회귀 분석으로 할 수 있는 4가지① - 예측과 요인 분석 본문
회귀 분석의 활용법을 4가지 관점에서 정리하고,
장점과 한계점에 대해 알아봅니다.
처음 머신러닝을 배우면서 회귀 분석을 접했을 때는 이런 생각이 들었다.
"기초적이고 성능도 별로일 것 같은데, 실무에서 과연 쓸 일이 있을까?"
하지만 통계를 배우고, 실무에서 데이터를 다뤄보니 회귀 분석은 단순한 예측 모델에 그치지 않고 다양한 활용 가능성을 가진 도구라는 걸 깨달았다.
이번 포스팅에서는 회귀 분석의 활용 방법과 이를 통해 할 수 있는 네 가지 작업 중 두 가지를 먼저 정리해보았다.
바로 알아보자! 🚀
1. 예측: 미래를 내다보는 도구 🔮
회귀 분석의 가장 기본적인 활용은 예측이다.
데이터를 기반으로 무언가를 예측하기에 가장 기초적인 도구로 사용할 수 있다.
하지만 더 깊게 다루진 않으려 한다!
왜나하면, '데이터를 활용한 예측'이라는 문제를 풀기에는 회귀 분석보다 더 뛰어난 도구들이 많기 때문이다.
(가령, LGBM, XGB, Random Forest, Prophet 등)
2. 요인 분석: 무엇이 결과에 영향을 미칠까? 🧐
회귀 분석은 단순히 예측하는 것뿐 아니라, 결과에 영향을 미치는 요인을 분석하는 데 사용할 수 있는 도구이다.
요인 분석을 딥하게 알아보기 위해, 상황과 데이터를 가정해보자!
- 상황: 유튜브에 재방문을 일으키는 요인은 무엇인가?
- 데이터: 1000명의 유저 데이터를 랜덤 생성해서 활용
[패키지 import 및 데이터 랜덤 생성]
- 1000명의 유저 데이터 생성
- 시청 시간, 좋아요 수, 댓글 수, 공유 수, 구독 여부를 랜덤으로 생성 (독립변수)
- 재방문 여부는 독립변수들을 기반으로 생성
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
import seaborn as sns
# Step 1: 랜덤 데이터 생성
np.random.seed(42)
# 유저 데이터 생성
n_users = 1000
data = {
"user_id": range(1, n_users + 1),
"watch_time": np.random.normal(30, 10, n_users), # 시청 시간(분)
"likes": np.random.poisson(5, n_users), # 좋아요 수
"comments": np.random.poisson(2, n_users), # 댓글 수
"shares": np.random.poisson(1, n_users), # 공유 수
"subscribes": np.random.binomial(1, 0.4, n_users) # 구독 여부
}
df = pd.DataFrame(data)
# 위 변수들을 기반으로 '재방문 여부'라는 변수 랜덤 생성
logit_combination = (
0.2 * df["watch_time"] +
0.5 * df["likes"] +
0.7 * df["comments"] +
1.0 * df["shares"] +
2.0 * df["subscribes"] +
np.random.normal(0, 3, n_users) # 노이즈
)
# 0 또는 1 사이로 생성
df["revisit"] = (logit_combination > logit_combination.mean()).astype(int)
df

[로지스틱 회귀분석 모델 생성]
- 로지스틱 회귀분석 모델을 생성
- 독립변수: 시청 시간, 좋아요 수, 댓글 수, 공유 수, 구독 여부
- 종속변수: 재방문 여부
# Step 2: 로지스틱 회귀분석
# 독립변수
X_revisit = df[["watch_time", "likes", "comments", "shares", "subscribes"]]
X_revisit = sm.add_constant(X_revisit) # Adding constant for intercept
# 종속변수
y_revisit = df["revisit"]
# 로지스틱 회귀 모델
logit_revisit_model = sm.Logit(y_revisit, X_revisit).fit()
[Odds 비 & 시각화]
- Odds 비를 기반으로 분석 및 시각화
# Step 3: Odds 비율
logit_revisit_coefficients = pd.DataFrame({
"Variable": logit_revisit_model.params.index,
"Odds Ratio": np.exp(logit_revisit_model.params.values)
}).set_index("Variable")
# 시각화를 위한 sorting
sorted_coefficients = logit_revisit_coefficients.sort_values(by="Odds Ratio", ascending=False)
# 바 차트
sns.barplot(x=sorted_coefficients["Odds Ratio"], y=sorted_coefficients.index, palette="viridis")
plt.title("Factor Analysis for Revisit Impact", fontsize=16)
plt.xlabel("Odds Ratio", fontsize=12)
plt.ylabel("User Actions", fontsize=12)
plt.grid(axis='x', linestyle='--', alpha=0.7)
plt.axvline(x=1, color='red', linestyle='--', label="No Effect (Odds Ratio = 1)")
plt.legend()
plt.tight_layout()
plt.show()
logit_revisit_coefficients
logit_revisit_model.summary()
[Logistic Regression 결과 요약]
- Pseudo R-squared: 0.3009로, 이 모델이 재방문 여부의 변동성 중 약 30%를 설명할 수 있다.
- watch_time, likes, comments, shares, subscribes는 모두 p-value가 0.05보다 작아 재방문 여부에 유의미한 영향을 미친다.
[주요 변수의 Odds 비]
- subscribes (구독): Odds Ratio가 3.79로, 구독한 사용자는 그렇지 않은 사용자보다 재방문 가능성이 약 3.8배 더 높음
- shares (공유): Odds Ratio가 1.91로, 공유 행동이 재방문 가능성을 약 91% 증가시킴
- comments (댓글): Odds Ratio가 1.56로, 댓글 작성은 재방문 가능성을 약 56% 증가시킴
- likes (좋아요): Odds Ratio가 1.32로, 좋아요는 재방문 가능성을 약 32% 증가시킴
- watch_time (시청 시간): 시청 시간이 증가할수록 재방문 가능성이 증가하지만, 상대적으로 다른 변수보다 영향력이 낮음
이번 게시글에서는 회귀 분석으로 할 수 있는 네 가지 중, 두 가지 먼저 알아보았다.
다음 게시글에서는 나머지 두 개도 마저 다뤄보도록 하겠다!
반응형
'통계💡' 카테고리의 다른 글
⚖️ 성향 점수 매칭(PSM): 동등하지 않은 비교는 비교가 아니다! (0) | 2025.01.19 |
---|---|
🌟 데이터 분석가가 회귀 분석으로 할 수 있는 4가지② - 변수 선택과 비선형 패턴 찾기 (0) | 2024.12.22 |
데이터 분석가라면 반드시 알아야할 데이터의 함정 세 가지! (0) | 2024.03.31 |
0. 벅슨의 역설: 가짜 상관성에 속아선 안돼! (0) | 2023.11.08 |
Comments