끄적끄적
2025.06.30 머신러닝 세션 1 본문
| 튜터 |
| 임정 튜터님 |
1️⃣ 선형 회귀의 사례
갓 1차 방적식을 배운 학생이라 가정하고, 선형회귀를 적용해보자.
📌 몸무게와 키 상관관계
방정식을 배운 머신이는 몸무게와 키의 데이터를 획득했다. 일정하게 증가하는 패턴이 있어서 미리 몸무게를 알면 키를 알 수 있을 것이라고 생각했다.
키와 몸무게 간의 데이터
- weights = [87, 81, 82, 92, 90, 61, 86, 66, 69, 69]
- heights = [187, 174, 179, 192, 188, 160, 179, 168, 168, 174]
키와 몸무게 간의 산점도

중학교 1학년 때 1차 방정식을 배운 머신이는 키와 몸무게에 대한 데이터가 너무 많아서 무슨 두 점을 이어 직선을 만들지 고민 되었지만, 수 많은 점들을 관통하는 여러 개의 직선을 많이 그려보기로 했다.
어떤 직선이 현재 데이터를 잘 “설명”한다고 할 수 있을까?

-> 머신이는 3개의 그래프를 그려보니, 아무래도 초록색, 파란색 직선보다는 빨간색 그래프가 적절한 것 같다. 하지만 이렇게 대강 직선을 그리다 보면 적절한 그래프를 찾기 어려울 것 같아 고민이 빠졌다.
📌 Data Scientific 한 발상
머신이는 하나의 생각을 떠 올렸다. 바로 직선과 점의 간의 거리를 계산하는 것이다. 이를 Error 라고 정의하고 최소의 Error인 직선을 그리면 된다고 생각했다.
- 방법1) 실제 데이터 값 - 직선의 예측 값 = Error
- ①번 실제 데이터:187, 예측 데이터: 187 Error: 0
- ②번 실제 데이터: 174, 예측 데이터: 181 Error: -7
- ③번 실제 데이터: 174, 예측 데이터 : 169 Error: +5

-> 하지만 문제가 또 있었다. 선분을 기준으로 위에 있는 데이터의 거리를 계산하면 양수가 되고, 반대로 아래에 있는 것은 음수가 된다. 이 경우 모든 에러를 합치면 서로 상쇄되는 문제가 있었다. 따라서, 음수를 양수로 만들기 위해 제곱을 하는 방법이 있다는 걸 생각해 냈다.
- 방법2) 각각 Error를 제곱하여 모두 더하기
- ①, ②,③의 제곱 합: 49 +25 = 71

-> 문제는 하나 더 있었다. 나중에는 데이터를 더 수집할 예정인데, 데이터가 더 늘어날 수록(④,⑤) 에러는 자연스럽게 값이 커질 수 밖에 없는 것이다! 그래서 데이터의 갯수로 나누기로 했다. 또한 데이터가 제곱 되어 있던 것을 줄이기 위해 root를 씌우기로 했다.
- 방법3) 전체 에러 합에 데이터의 갯수로 나누기
- ①, ②,③만 고려한다면 71/3 → 23.7

2️⃣ 회귀분석 평가 지표
선형 회귀가 수립되면 해당 모델이 좋은지 평가하는 평가 지표가 필요하다.
📌 회귀 평가지표 - MSE
머신이가 똑똑하게 에러를 정의한 것을 바탕으로 회귀식의 평가지표를 만들어보겠습니다. 머신이가 정리한 내용을 다시 써볼까요?
- 에러 정의방법
- 방법1) 에러 = 실제 데이터 - 예측 데이터 로 정의하기
- 방법2) 에러를 제곱하여 모두 양수로 만들기, 다 합치기
- 방법3) 데이터만큼 나누기
- 에러 정의 방법 수식화
- 방법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}\)
이 전체 과정은 Mean Squared Error(MSE)라고 정의할 수 있다.
기타 평가 지표
- RMSE: MSE에 Root를 씌워 제곱 된 단위를 다시 맞추기
\(
RMSE = \sqrt{\frac{\sum\limits_{i=1}^n (y_i - \hat{y_i})^2}{n}}
\) - MAE: 절대 값을 이용하여 오차 계산하기
\(
MAE = \frac{1}{n}\sum\limits_{i=1}^n{\left\vert y_i - \hat{y_i} \right\vert}
\)
3️⃣ 선형회귀 적용
식당에서 파트타임으로 일하고 있는 머신이는 이번에는 tip 데이터를 가지고 적용해보기로 했습니다. 돈을 많이 벌고 싶었던 머신이는 전체 금액(X)를 알면 받을 수 있는 팁(Y)에 대한 회귀분석을 진행
📌 자주 쓰는 함수
- sklearn.linear_model.LinearRegression : 선형회귀 모델 클래스
- 속성
- coef_: 회귀 계수
- intercept: 편향(bias)
- 메소드
- fit: 데이터 학습
- predict: 데이터 예측
- 속성
- sklearn.metrics.mean_squared_error : 회귀모델 평가 함수
- 기타 자주 쓰는 메소드는 다음 글 확인!
ADP 빅분기 이론과 Python 모듈, 실습코드 정리 - 머신러닝 편
'[스파르타]내일배움캠프 데이터 분석 트랙 > Session' 카테고리의 다른 글
| 2025.07.01 머신러닝 세션 2 (4) | 2025.07.09 |
|---|---|
| 2025.07.01 통계 세션 4 (3) | 2025.07.09 |
| 2025.06.30 통계 세션 3 (0) | 2025.07.01 |
| 2025.06.27 통계 세션 2 (1) | 2025.06.30 |
| 2025.06.25 통계 세션 1 (2) | 2025.06.25 |