선형 회귀
- 종속변수(매출, 만족도 등)의 차이가 어디에서 비롯되는지 알고자 할 때 사용하는 알고리즘
- 종속변수를 가장 잘 설명/예측(Best-fit) 하는 선형관계를 찾는 방법
1. 계산 방법 (Least Squares)
y = b0 + b1 * x + error
- b0 : y축 절편(intercept)으로, 예측변수가 0일 때 기대 점수
- b1 : 기울기 x가 한 단위 증가했을 때 y의 평균적인 변화 값
2. P-value(Probability-Values)
- 통계적 유의성을 나타내는 수치 : x, y 사이에 발견된 관계가 통계적으로 유의미한가
- 데이터를 통해 확인한 관계가 우연히 나왔을 확률
- 예를 들어, p값이 0.03이라면 x, y 사이에 선형적 관계가 없는데도 불구하고, 데이터 샘플링의 실수로 우연히 관계가 발생했을 확률이 3%라고 보는 것
- 절대적 기준은 없으며, 통상 0.01 ~ 0.05 미만이면 유의미하다고 봄
- 변수 사이 관계의 세기(Size of an Effect)를 나타내는 것이 아님
3. R2 (R-squared ; 결정계수, 적합도)
▶︎ R-squared 개념
- x가 y를 얼마나 잘 설명(예측)하는가를 알려주는 통계량
- 즉, 독립변수가 종속변수의 분산을 설명하는 비율
- Goodness of Fit : x로 설명할 수 있는 y변화량의 크기 (0~1 사이 값)
- 0은 관계가 없음
- 1은 완벽한 적합
▶︎ R-squared 값 해석
- 인과성이나 방향성을 나타내지 않음 👉 변수들 간의 선형 관계의 강도만 측정
- 인과성 확립을 위해서는 실험 또는 무작위 대조시험과 같은 다른 방법을 사용해야 함
- 이상치나 비선형성을 고려하지 않음
- R2은 모델이 데이터에 얼마나 잘 맞는지 알려주지만, 모델이 올바르거나(correct) 의미 있는지(meaningful) 여부는 알려주지 않음
- 낮은 결정계수가 반드시 나쁜(inherently bad)것은 아님
- 예측 정확도가 아니라 경향성을 파악하는 것이 중요하다면 낮은 결정계수 모형도 참고할 수 있음
▶︎ R-squared 값 높이는 법
- 변수를 추가하거나 제거 : 과적합이나 과소적합에 주의해야 함
- 모델에 변수를 더 추가하면 관련이 없거나 중복되더라도 항상 R2를 증가시키거나 유지시켜, 과적합으로 이어질 수 있음
- 이를 방지하기 위해 adjusted-R2을 사용하여, 너무 많은 변수를 가진 모델에 대해 페널티를 주고 자유도에 따라 adjusted-R2을 조정함 👉 다수의 예측 변수가 있는 경우 모델 적합도에 대한 더 정확한 측정값을 제공
- 변수를 변환하여 더 선형적(Linear), 정규분포를 따르도록(Normal), 또는 등분산성을 갖게(Homoscedastic) 만드는 시도
- 데이터에 적합한 다른 유형의 회귀를 사용 : 각 회귀 유형의 가정과 제한사항을 이해하고 결과 해석법을 확실히 알아야 함
▶︎ R-squared 값은 얼마나 높아야 할까?
- 주제(연구 영역)에 따라 다름 : 주제와 문제마다 기본적으로 설명할 수 없는 변동성의 양이 다르기 때문이다.
- 예를 들어, 인간 행동을 예측하려는 연구는 일반적으로 R2값이 50% 미만일 것으로 예상됨
- 반면에, 신체 과정을 분석하는 경우(그리고 매우 좋은 측정값이 있는 경우)라면, 90% 이상일 것으로 기대할 수 있음
- 따라서 얼마나 높은 R2이 좋은 것인가에 대한 일반적인 답은 없음
- 너무 높은 R2 값을 추구하면 과대평가된 값과 misleading model이 생길 수 있음
- 적합한 R2의 범위는 목표에 따라 달라짐
- 독립변수와 종속변수 간 '관계'를 이해하는 것이 목표인가 👉 이 경우, R2는 관계가 없음 (중요한 것은 '계수')
- 종속변수를 '예측'하는 것인가
👉 이 경우, R2가 오차의 측정 지표이기 때문에 관련이 있음(낮은 R2는 더 많은 오차가 있는 모델이며, 덜 정확한 예측임)
👉 R2 값 자체도 중요하지만, 연구 목표 요구사항에 얼마나 정확한 '예측구간(prediction intervals)'인지 확인이 필요함
참고자료
- https://support.heartcount.io/case/linear-regression-analysis
- https://www.linkedin.com/advice/0/how-do-you-interpret-r-squared-regression-analysis
- https://www.analyticsvidhya.com/blog/2021/05/the-game-of-increasing-r-squared-in-a-regression-model/#:~:text=%F0%9F%91%89%20Every%20time%20if%20we,variations%20in%20the%20dependent%20variable.
- https://statisticsbyjim.com/regression/interpret-r-squared-regression/
728x90
'Machine Learning > scikit-learn' 카테고리의 다른 글
[회귀] 회귀 개념과 단순 선형 회귀 (0) | 2023.10.04 |
---|---|
[이진 분류_성능 평가 지표] F1 스코어 / ROC곡선 (0) | 2023.09.28 |
[데이터 전처리] One-Hot Encoding(원-핫 인코딩) (0) | 2023.09.27 |
[데이터 전처리] Label encoding(레이블 인코딩) (0) | 2023.09.27 |
[교차 검증] cross_val_score() (0) | 2023.09.26 |