🔥 메타코드에서 머신러닝 입문 부트캠프 강의를 듣고 있다. 머신러닝 강의에서 그냥 무지성으로 돌렸던 코드에 대해 깊이 이해하고, 내 손으로 최적의 파라미터를 뽑아내고, 하이퍼파라미터 튜닝도 해보고 싶다. 오늘도 내용이 참 어려웠다...! 이런 수학적인 부분을 배울 때면, 개념적으로 이런 걸 생각해내는 사람들이 있다는 게 배울수록 신기하다. 이해라도 해보고 쫓아가보려고 노력 중!
2. 회귀(Regression) - Linear Regression
선형회귀(Linear Regression)에는 3가지 종류(디테일하게 나누면 4가지?)가 있다.
단순 선형회귀, 다중 선형 회귀, 다항 회귀
단순 선형 회귀는 피처(독립변수)의 종류가 한 개인 데이터에 대한 회귀 모델로, y = w0 + w1x와 같은 식으로 표현된다.
다중 선형 회귀는 피처의 종류가 여러 개일 때 회귀 모델로, y = w0 + w1x1 + w2x2 + ... + wdxd처럼 여러 요인의 영향을 받는다.
다항 회귀는 피처의 차수를 높인 회귀 모델로, x제곱, x세제곱 등이 포함된 식으로 표현되는데,
이 경우에도 피처가 1개일 수 있고, 여러 개일 수 있어서 단순 다항 회귀(피처 1개, 차수 높음), 다중 다항 회귀(피처 여러 개, 차수 높음)로 나눌 수 있다.
우측 예시를 보면, 학생들의 공부시간과 성적을 나타낸 표가 있다. 여기에서 피처(독립변수)와 라벨(종속변수)은 무엇일까? 성적에 영향을 미치는 변수인 공부시간이 피처(독립변수), 결과인 성적이 라벨(종속변수)이 된다.
여기에서는 피처가 1개이기 때문에 단순 선형 회귀 혹은 단순 다항 회귀 모델을 사용하겠다. 까지 결정이 되어야 한다.
이 다음으로는 파라미터 개념이 나오는데, 파라미터라는 것은 y = w0 + w1x 형태에서 최적(optimal)의 w0과 최적의 w1을 찾는 것을 말한다. w0*, w1*과 같이 별을 붙이면 최적값이라는 뜻이 된다.
최적이라는 말은 어떤 뜻일까?
최적(optimal)이라는 말은 x와 y의 관계를 가장 잘 표현한다는 뜻이다. 즉, 예측 y와 실제 y의 차이가 가장 적은 모델이고, 예측y-실제y 차이는 손실함수라 불리므로, 손실함수를 최소로 만드는 모델!이라고 할 수도 있다.
3. 최적화(optimization) - Advanced math for ML
엄청 어려운 개념.. 편미분과 연쇄법칙을 정리해보겠다. 이해한대로 정리해서 제대로 되는진 몰겠음
편미분이란, 원하는 변수에 대해서만 편애하여 미분하는 것을 말한다. 즉, 내가 관심 있는 변수(x인 경우가 많음)만 제외하고, 그 외 모든 것들을 상수취급하는 것이다.
보통 미분은 d/dx 와 같이 표현하는데, 편미분은 델타 y/ 델타 x로 표현한다.
f(x, y) = x^2 + xy + 3 이라는 식이 있다.
x에 대해 편미분하면 2x+y, y에 대해 편미분하면 x가 된다.
-> 이렇게 되는 이유는 고등 수학에서 배운 어렴풋한 기억을 떠올려보자...ㅎ
연쇄법칙이라는 것은... 새로운 변수 u를 정의해서, dy/dx 라는 하나의 미분 형태를 dy/du * du/dx라는 두 개의 미분 값으로 쪼개볼 수 있지 않을까? 하는 생각에서 나왔다.
연쇄법칙을 활용하면 복잡한 미분을 쉽게 할 수 있다.
강의에서는 막 식 풀이도 해주셨는데..! 궁금하면 강의를 참고하시라... 개념적으로 이해하는 게 중요하지 뭐 ^^....
우리는 데이터를 보고 독립변수(피처)와 종속변수(라벨)를 정의하고, 어떤 모델을 사용할지까지 정의했다.
그 후에는 손실함수를 정의해야 한다. 분류일 때와 회귀일 때 각각 어울리는 손실함수가 다른데(다행히 이부분은 빅분기 때 배웠따!ㅋvㅋb) 회귀는 보통 오차제곱평균(Mean Squared Error, MSE)을 손실함수로 사용한다.
오차라는 건 예측 y와 실제 y의 차이이기 때문에, 이를 제곱(Squared)한 다음, 다 합치고 N으로 나눠서 평균(Mean)을 구한 값이다.
피처1, 라벨 1인 단순 선형 회귀 모델에, 손실함수는 MSE를 쓰기로 정했다.
이제, 파라미터를 실제로 풀어볼 차례이다.
최적의 파라미터를 구할 수 있는 방법 중 하나로, 최소제곱법이 있다.
최소제곱법은 데이터에 대한 오차를 최소화하도록 하는 방법이다.
개념적으로는, 손실함수에 대한 편미분값이 0이라 정하고, 접선의 기울기가 0임을 알고 있기 때문에..
이 두 식을 풀이하여 정리하면, 슬라이드에 나오는 a*, b*와 같은 값이 된다.
이렇게 구한 a*, b*는 완벽한 해라고 불린다.
식으로 푸는 방법 외에, 행렬에 대한 편미분 값으로 최소제곱법을 정리할 수도 있다.
w에 대해 a, b라는 벡터(메트릭스)로 편미분한 후, w만 남기고 우변으로 다 넘겨 정리하면 위 슬라이드와 같은 식이 된다.
결국, a*, b* 식은 석학들이 계산을 해놓았고.. 개념적으로 이해했다면 적용해볼 차례!
공부시간(x) 에 따른 성적(y) 데이터를 다시 살펴보자.
피처1, 라벨1, 라벨이 수치형 변수이므로 회귀분석, 피처가 1개이면서 차수가 없으므로 단순 선형 회귀를 쓴다.
이때 a* 식과 b* 식에 x평균, y평균을 구해서 대입해 보면..., a* = 6, b* = 30이 나온다.
그래프로 그리면, 위 슬라이드 캡처처럼.. 선에 가까운 점들이 나열되어 있는 형태가 된다.
사실상 점들을 정확하게 지나는 구불구불한 선이면 더 좋을 텐데, 단순 선형 회귀모델이라 직선 형태가 되어 눈으로 봐도 완전 정확하진 않아 보인다. 이때 어떻게 할 수 있을까? 이에 대한 내용은, 바로 다음 글에서 계속....!🔥
분명, 배울 때는 겁나 복잡했지만 내가 정리할 땐 내용 다 빼먹고 개념 위주로 설명을 적으니 쉬워 보이는... 신기한 현상...!
사실은 엄청 어려운 수학 식이 나오지만 개념적으로 이해하면 크게 어렵진 않다. 파이팅🔥
* 메타코드 서포터즈로서 강의를 제공받아 작성하였습니다. 이미지를 클릭하면 홈페이지로 이동합니다.
'빅데이터분석' 카테고리의 다른 글
[머신러닝] 메타코드 강의 후기_머신러닝 입문 부트캠프 (5) 편향과 분산(Bias and Variance) (1) | 2024.10.27 |
---|---|
[머신러닝] 메타코드 강의 후기_머신러닝 입문 부트캠프 (4) 경사하강법(Gradient Descent) (1) | 2024.10.20 |
[머신러닝] 메타코드 강의 후기_머신러닝 입문 부트캠프 (2) 머신러닝에 사용되는 기본 수학 개념 (2) | 2024.10.13 |
[머신러닝] 메타코드 강의 후기_머신러닝 입문 부트캠프 (1) 인트로, 용어정리 (0) | 2024.10.13 |
[powerBI] 메타코드 강의후기_(4) 가설설정 및 통계적 검정 (2) | 2024.10.06 |