머신러닝 공부 | 선형회귀분석

2025. 1. 21. 13:48·Python

1. 선형회귀 사례

  • 몸무게와 키 상관관계를 찾아내기
weights = [87,81,82,92,90,61,86,66,69,69]
heights = [187,174,179,192,188,160,179,168,168,174]

2. 선형회귀 이론

  • 공통
    • Y는 종속 변수, 결과 변수
    • X는 독립 변수, 원인 변수, 설명 변수
  • 통계학에서 사용하는 선형회귀 식 : $$ Y = \beta_0 + \beta_1X + \varepsilon $$
    • β0 : 편향(Bias)  
    • β1 : 회귀 계수
    • ε : 오차(에러), 모델이 설명하지 못하는 Y의 변동성
  • 머신러닝/딥러닝에서 사용하는 선형회귀 식 : $$ Y = wX+b $$
    • w: 가중치
    • b: 편향(Bias)

두 수식이 전달하려고 하는 의미는 같아요. 회귀 계수 혹은 가중치를 값을 알면 X가 주어졌을 때 Y를 알 수 있다는 것이죠! 우리는 편의를 위해 X의 계수는 가중치라고 지칭할게요!

⁉️ 질문

Q1) β0는 1차 방정식의 Y절편에 해당하는 걸 알겠어요. 그런데 ε은 왜 따로 있는건가요?

  • 우리가 몸무게와 키에 대한 선형회귀식을 만들었지만, 해당 식이 모든 데이터를 완벽하게 설명할 수 없어요. 이때 완벽한 설명이란 실제 데이터값 = 예측 데이터 이라고 할 수 있어요. 다시 말해 에러의 값을 표현하기 위해서 있는 것 입니다.

Q2) 가중치(w)를 알게 되면 X값에 대하여 Y값을 예측할 수 있다는 것은 이해가 되는데, 그럼 가중치는 어떻게 구하죠?

  • 이런 물음이 들었다면 머신러닝을 관통하는 질문입니다. 데이터가 충분히 있다면 가중치를 “추정”할 수 있습니다. 이는 심화 내용에서 다루도록 할게요! 이 부분은 현재는 그래프를 수도 없이 그려서 에러를 “최소화”하는 직선을 구한다고 생각하시면 됩니다.

3. 회귀분석 평가 지표

1) 회귀평가지표 MSE

  • 에러 정의방법
    • 방법1) 에러 = 실제 데이터 - 예측 데이터 로 정의하기 : $$\varepsilon = y_i - \hat{y_i}$$
    • 방법2) 에러를 제곱하여 모두 양수로 만들기, 다 합치기 : $$\sum\limits_{i=1}^n (y_i - \hat{y_i})^2$$
    • 방법3) 데이터만큼 나누기 : $$\frac{\sum\limits_{i=1}^n (y_i - \hat{y_i})^2}{n}$$

2) 선형회귀만의 평가지표- R Square

  • `R Square` : 전체 모형에서 회귀선으로 설명할 수 있는 정도
  • 기초 용어
    • $y_{i}$: 특정 데이터의 실제 값
    • $\bar{y}$: 평균 값
    • $\hat{y}$: 예측, 추정한 값

  • R Square의 정의 : $$R^2 = \frac{SSR}{SST} = \frac{SSR}{SSR+SSE}$$

  • 위에서 3번의 데이터 값은 $$ SST = 174^2, SSR = 169^2 $$
    • 해당 값에 대한 설명력 = 94%
    • 단, 모든 데이터에 대해서 위 계산을 수행

4. 선형회귀 적용

1) 라이브러리 설치하기

  • 데이터 사이언스 파이썬 라이브러리
    • `scikit-learn`: Python 머신러닝 라이브러리
    • `numpy`: Python 고성능 수치 계산을 위한 라이브러리
    • `pandas`: 테이블 형 데이터를 다룰 수 있는 라이브러리
    • `matplotlib`: 대표적인 시각화 라이브러리, 그래프가 단순하고 설정 작업 많음
    • `seaborn`: matplot기반의 고급 시각화 라이브러리, 상위 수준의 인터페이스를 제공
  • 자주 쓰는 함수
    • `sklearn.linear_model.LinearRegression` : 선형회귀 모델 클래스
      • `coef_`: 회귀 계수
      • `intercept`: 편향(bias)
      • `fit`: 데이터 학습
      • `predict`: 데이터 예측

5. 선형회귀 심화

1) 다중선형회귀

실제의 데이터들은 비선형적 관계를 가지는 경우가 많습니다. 이를 위해서 X변수를 추가 할 수도, 변형할 수 도 있습니다.

2) 범주형 데이터 사용하기

3) 선형회귀 정리

  • 장점
    • 직관적이며 이해하기 쉽다. X-Y관계를 정량화 할 수 있다.
    • 모델이 빠르게 학습된다(가중치 계산이 빠르다)
  • 단점
    • X-Y간의 선형성 가정이 필요하다.
    • 평가지표가 평균(mean)포함 하기에 이상치에 민감하다.
    • 범주형 변수를 인코딩시 정보 손실이 일어난다.
  • Python 패키지
    • `sklearn.linear_model.LinearRegression`

 

 

 

 

'Python' 카테고리의 다른 글
  • Python 실습 | 학생 성적 관리 시스템
  • Python 실습 | 범주형 변수를 수치형 변수로 바꾸기
  • Python 실습 | penguins 데이터셋에서 평균보다 작은 데이터 선택하고(transform), 새로운 열 추가해서 조건에 따라 다른 값 넣기 (lambda)
  • Python 실습 | 윤년/평년 구하기
초담
초담
4년차 마케터입니다
  • 초담
    그로스마케터의 기록
    초담
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (117)
      • Data Analytics Project (3)
      • SQL (55)
      • Python (43)
      • GA4 (0)
      • Tableau (8)
      • 아티클 스터디 (7)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
초담
머신러닝 공부 | 선형회귀분석
상단으로

티스토리툴바