본 게시글은
서울대학교 데이터사이언스대학원 오민환 교수님의
데이터사이언스를 위한 머신러닝 및 딥러닝1 수업을
학습을 목적으로 재구성하였습니다
이번 학기에는 데이터사이언스 대학원의
머신러닝 딥러닝1 강의를 수강하게 되었다
이전에 회사에서 개발자로 근무할 때
LLM을 접하면서
코세라에서 머신러닝, 딥러닝 강의를 모두 들었지만
제대로 된 수업을 들어보지는 못해서 강의를 수강하게 되었다
이번 강의도 역시 다른 강의들과 마찬가지로
매 수업의 내용을 블로그에 복습 겸 나중에 찾아보기 위함으로 게시해보려한다
9월 1일 첫 개강날에는 본격적인 수업에 앞서서
머신러닝의 전반적인 구조에 대해서 강의해주셨다
그럼 이번 수업도 정리 시작-!
데이터사이언스대학원 오민환 교수님의 강의이다
한 학기동안 배울 수업 내용의 전반적인 목차(?)이다
중간고사 이전까지는 통계와 머신러닝 내용을 공부하고
중간고사 이후 기말고사 부분은 딥러닝을 공부한다
그렇다면 본격적으로 머신러닝 강의에 들어가기 앞서
머신러닝이 무엇인지를 알아보자
머신러닝이란 무엇일까?
위 ppt slide를 자세히 살펴보자
각각의 차트의 x축에는 TV, Radio, Newspaper가 있다
각 데이터는 해당 매체에 광고비를 얼마나 썼는지에 대한 데이터이다
y축에는 sales라는 매출 데이터가 있다
위에서 빨간 점들이 각각의 데이터를 나타내고
데이터는 x, y좌표로 구성되어있다
각 차트마다 파란색 선이 보일 것이다
저 파란색 선은 linear regression line을 fit 시킨 것인데
이게 무슨말인지 이해가 안될 수도 있을 것이다
앞으로 배울 내용이라 이해가 안되도 무관하다고 한다
우리가 배우는 머신러닝의 내용은
저런 raw data들을 바탕으로 어떻게
blue line을 fit시키는지에 대한 내용이다
그렇다면 이런 머신러닝을 왜 할까?
위 예시로 한 번 살펴보자
TV에 광고를 내보냈을 때 매출이 얼마가 나올지를 알고싶다
그렇다면 위 차트에서의 blue line을 통해서
만약 TV 매체에 광고비를 100낸다면
y축인 sales가 얼마 나올지를 계산할 수 있을 것이다
이건 예측의 문제이다
따라서 머신러닝의 목적은 갖고있는 실제 데이터를 이용해서
실제 어떤 상황이 되었을 때 어떤 결과가 나올지 예측하기 위함이다
위 ppt에서 보면 x값이 TV, Radio, Newspaper가 있는데
각각 매체에 사용되는 값들을
함수 f에 넣으면 예측값인 sales가 도출될 수 있다
여기서 함수 f를 머신러닝에서는 통상적으로 model이라고 부른다
이제 Notation에 대해서 한 번 살펴보자
위 예시에서 y축인 sales는 보통
response, target이라고 부른다
그리고 보통 이런 값을 Y라고 표기한다
또 TV, Radio, Newspaper와 같은 x축들은
feature, input, predictor라고 부른다
통상적으로 첫번째에 있으면 X1
두번째에 있으면 X2와 같은 방식으로 표기한다
그렇다면 위 예시에서 feature인 X는
TV, Radio, Newspaper 3가지였다
그럼 이걸 하나의 벡터로 만들어서 큰 X로 정의하자
그렇게 되면 X는 3차원의 벡터 값이 된다
그렇다면 target인 Y를 구하기 위해서는
이 X를 적용하는 모델 f가 있어야 한다
이 f는 보통
이렇게 정의하는데 그냥 f(X)만 바로 넣는게 아니고
뒤에 입실론 값이 붙는다
저 입실론값은 보통 measurement error 혹은 noise라고 부르는데
우리가 아무리 완벽한 모델 f를 만들었다고해도
실제 세계에서 절대 완벽한 예측이란 있을 수 없다
따라서 저 입실론 값은 현실 세계에서 절대 줄일 수 없는 오차 값이다
여기서 정말 중요한 것은
저 입실론 값은
input variable X와는 independent하고
평균이 0이 된다고 한다
위 개념이 정말 중요하다고 한다
그렇다면 결국 우리가 하고싶은건
실제 데이터를 보고 모델 f를 학습시키고 싶은 것이다
그렇다면 우리가 f라는 모델을 학습시키는 이유는 무엇일까?
앞에서도 말했지만
잘 학습된 f가 있다면 이 f를 가지고
prediction이 가능하기 때문이다
위 ppt slide의 예시에서는
연봉 y를 예측하기 위해서 경력, 학력과 같은 x feature들을 넣는다
저런 x feature들을 바탕으로 이정도의 경력과 학력을 가진 사람들은
보통 연봉을 이정도 받는다는 것을 잘 학습된 f 모델을 통해서 예측할 수 있다
또한 보통 머신러닝 수업에서 대문자로 표현하는 것들은 random variable
소문자로 표기하는 것들은 specific한 값들을 나타낸다고 한다
앞에서도 얘기했지만
우리가 모델 f를 잘 학습시킨다면 예측도 가능하고
feature들 간의 관계도 발견할 수 있다
그렇다면 여기서 우리가 가장 바라는
가장 이상적인 f라는 모델은 존재할까?
위 ppt slide를 한 번 살펴보자
위의 회색 점들은 다 data 값들이다
빨간 선은 없다고 가정을 해보자
위 회색 데이터들을 바탕으로 학습을 시켰을 때
가장 이상적인 함수 f는 무엇일까?
위 ppt에서 x가 4일 때
y의 기댓값은 무엇이 나와야 하나?
저 많은 회색 데이터들 중에서 어떤 값이어야할까?
보통 x=4에서의 y값들의 평균값을 이야기 할 것이다
그리고 이게 보통 reasonable한 선택일 것이다
따라서 x에 4를 넣었을 때 평균값을 구하려고 한다면
f(4) = E(Y|X = 4)와 같은 conditional expectation으로 표현할 수 있다
따라서 f(x) = E(Y|X=x) 이게 regression function이 되는 것이다
결국 regression function은 conditional expectation을 찾는 문제이다
좋은 모델이라고 하는 것은 주어진 x에 대해서
conditional expectation을 찾는 문제라는 것이다
그렇다면 이걸 좀 더 일반화해보자
x가 숫자가 아닌 임의의 벡터라고 하고 1차원이 아니라고 해보자
그렇다고 하면 regression function에서
x인 vector value를 condition으로 걸고
거기에 대한 y값의 conditional expectation이 결과가 될 것이다
feature x의 개수가 얼마나 많던지 상관없이
그 feature의 value가 주어졌을 때의 conditional expectation을 구하면 된다
그렇다면 이 conditional expectation이 어째서 이상적인 모델이 되는걸까?
이거 말고 다른 모델 f가 있을 수도 있지 않나?
그 이유는 신기하게도 conditional expectation이
이 (Y-g(X))의 제곱인 mean square error값을 최소화시키기 때문이다
mean square error가 무슨 뜻이냐하면
실제 데이터 y와
우리가 정답 모델 f가 아닌 다른 모델 g에 x를 넣었을 때 나온 값과의
차이가 오차가 되는 것이다
그렇다면 이 오차가 작은 것이 가장 좋은 것이 될 것이다
하지만 오차라는 것은 음수가 될 수도 양수가 될 수도 있기 때문에
우리는 두 값의 차를 제곱을 한다
이 값을 mean square error라고 한다
아무튼 우리가 원하는 것은 이런 mean square error를
가장 작게하는 모델을 찾는 것인데
conditional expectation 모델이 이를 가장 작게 한다고 한다
즉, 이상적인 방법이라는 것이다
그렇다면 아까 앞에서 잠깐 설명했던
반드시 나올 수밖에 없는 오차 입실론은 뭘까?
위 예시에서 Y와 X는 관측가능한 대상이다
하지만 입실론과 f는 그렇지가 않다
아무리 모델 f가 좋아도 입실론만큼의 줄일 수 없는 오차는 반드시 발생한다
앞에서도 강조했지만 입실론의 평균은 0이되고
x값과 independent하다
앞으로 f의 estimation값을 f위에 모자를 씌운 f hat이라고 부르겠다
우리가 f hat이 있다고 하면 이제 mean square error 값을 구할 수 있게 된다
그렇다면 아래의 식을 한 번 계산해보자
Y는 f(x)에서 입실론을 더한 값과 똑같다
그걸 위 식에 대입하면
위와 같은 식이 나오게 된다
이걸 한 번 전개해보자
앞의 f(X)와 f^(X)를 두고 뒤에 입실론을 둔 다음 얘네를 한 개의 항으로보고
입실론을 또 다른 한 개의 항으로 보고 제곱하면
이렇게 해서 제곱을 하면
완전제곱식에 따라서 이렇게 전개할 수 있다
여기서 X를 x로 고정시키면 더이상 그 값은 랜덤이 아니게 된다
따라서 f(X)는 그 순간에는 f(x)라는 특정 수치가 되기 때문에
이를 상수항으로 뺄 수 있게 된다
따라서 expectation을 아래와 같이 분배할 수 있게 된다
그런데 아까 위에서 입실론은 mean값이 0이라고 했다
따라서 가운데항은 자동으로 제거되고
위와같이 정리가 된다
그런데 여기서 입실론 값들의 평균은 0이 되므로
위의 값은 결국 입실론의 conditional variance와 동일한 값이 된다
즉,
이렇게 정리할 수 있는데
아까 또 중요한 입실론의 성질 중에 한개는
입실론은 x에 independent하다고 했다
즉, X=x라는 조건부는 아무 관련이 없게 되는 것이다
따라서
그냥 상수항 입실론의 variance로 정리될 수 있는 것이다
따라서
이와같이 식이 정리될 수 있는 것이고
앞의 항은 우리가 줄일 수 있는 값이지만
입실론 variance는 절대 줄일 수 없는 값이다
여기서 우리의 목표는 줄일 수 있는 앞의 항을 줄이는 것이다
다시 말해서 우리의 목표는 reducible error를 줄이는 것이다
그렇다면 오차를 가장 줄일 수 있는 f^을 estimate해야하는데
어떻게하면 이걸 할 수 있을까?
아까 위에서 데이터 예시들을 봤겠지만
우리가 현실에서 보는 데이터들은 주로 한 두개가 아닌
n개의 복수의 데이터이다
따라서 우리는 이 n개의 데이터
즉, n개의 training data를 활용해서
true 함수인 f에 가깝게 f^을 가져가고 싶은 것이다
결국 우리가 말하는 가장 이상적인 estimation f^은
x를 넣었을 때 우리가 봤던 실제 데이터인 y와 같은 것이다
따라서 이 이상적인 f^을 구하기 위한 방법론으로는
보통 2가지로 구분을 하는데
parametric과 non-parametric 방법론이 있다
우선 parametric model부터 살펴보자
parametric model과 structured model은 보통 같이 따라오는 이름이다
parametric model 혹은 structured model은 말 그대로
함수의 모양을 미리 정해두고
몇 개의 파라미터만 데이터를 통해서 학습하는 것이다
다음시간에 배울 Linear model이
parametric model의 좋은 예시인데
linear model은 linear structure를 갖고 있는 모델이다
위 ppt slide에서 예시 함수가 linear model이다
보통 실제 true인 함수 f가 linear하다고 하면 위 식과 같이 표현할 수 있다
각각의 항에는 파라미터 B가 존재한다
X는 1부터 p까지 존재하는 벡터인데
파라미터 B들이 곱해져서 각 항끼리 더해진다
결국 우리가 여기서 학습해야하는 값은 파라미터인 B이다
따라서 linear model을 정의할 때 보통
linear하다고 하는 것은 파라미터를 기준으로 linear하다고 정의한다
위 식의 경우 X를 기준으로도 B를 기준으로도 linear하지만
파라미터를 기준으로 말하기 때문에
B를 기준으로 해서 위 함수는 linear하다고 말할 수 있는 것이다
이제 non-parametric model에 대해서 살펴보자
이러한 non-parametric model은 true model f를 가정하지 못한다
그렇다면 얘는 도대체 학습을 어떻게 할 수 있을까?
데이터를 보면서 최대한 데이터 포인트에 잘맞는 함수를 찾아가는 방식으로 학습한다
따라서 parametric model처럼 특정 구조를 강제로 씌우지 않고
데이터 포인트들에 가깝게 다가가는 함수를 추정한다
하지만 이 과정에서 training data에 너무 가깝게 학습시키면
모델이 overfit되고 wiggly해진다
즉, 새로운 데이터에 일반화 할 수 있는 모델이 안된다는 뜻이다
앞에서 봤던 parametric model과 비교해보자면
parametric model은 true model f는 이런 구조를 가질거라는
가정을 하며 시작한다
하지만 이 non parametric은 그런 가정 자체가 아예 없다
따라서 만약 parametric model에서는 예를 들어
내가 데이터를 가지고 true model f가 linear함수라고 가정하고 학습시켰는데
만약 true model f가 linear 함수가 아니라면?
이런 경우에 accuracy가 굉장히 떨어진다
하지만 non-parametric model은 그런것 자체가 아예 없다
f의 structure가 어떻게 생겼다라는 assumption 자체가 아예 없다
따라서 non-parametric model은 Parametric model에 비해서
number of observation(데이터 개수)가 더욱 많이 필요하다
하지만 해석 측면에 있어서는 parametric model(linear, logistic)이 훨씬 더 용이하고
non-parametric model(tree model 제외)은 해석력이 조금 더 떨어진다
여기서 말하는 해석력이라고 하는 것은
x가 1만큼 늘어났을 때 y값이 얼만큼 바뀌는지 관계에 대한 해석이다
결론적으로 parametric model은 해석이 쉽지만 가정이 틀릴 경우 정확도가 떨어지고
non-parametric model은 해석은 어렵지만 유연하고 정확도가 상대적으로 높다
그리고 non-parametric모델이 학습 데이터를 더 많이 필요로 한다
위 예시를 한 번 살펴보자
X feature는 앞에서 봤던 education과 seniority이다
그리고 response variable은 income이다
위에서 보이는 blue surface는 true model f이다
true 함수를 정확하게는 알 수 없지만
그냥 데이터를 보고 모델링을 한 것이다
위 빨간색 점들이 실제 데이터인데 true function f로부터
조금씩 떨어져있는 값들이 있는 것을 확인할 수 있을 것이다
이 떨어져있는 것들은 절대 줄일 수 없는 오차인
입실론값만큼 떨어져있는 것이다
이건 같은 예시에서 true function f를
linear regression model로 fit한 것이다
여기서 노란색 surface는 true함수가 아닌 f^이 된다
따라서 여기에서 보이는 빨간점과 노란 surface와의 오차는
입실론 값이 아닌 실제 값과 prediction 값의 차이가 된다
이걸 제곱한게 mean sqaure error이다
위의 구조에서 좀 더 flexible하게 만들어서
각각의 data point들과 surface와의 에러가 거의 없게 만들었다
그럼 이렇게 만드는게 좋은 모델일까?
정답은 그렇지 않다
이렇게 하면 새로운 데이터에 대해서 일반화가 안된다
기존의 data point에 대해서만 정확한 값을 내뱉고
새로운 data point가 들어왔을 때 그 예측값이 정확하지 않을 확률이 크다
이런 상황을 두고 overfitting이라고 한다
각 상황에서 발생하는 trade off에 대해서 알아보자
prediction accuracy와 interpretability(해석력)의 차이가
trade off가 존재한다
그리고 너무 학습 데이터에 과하게 적합된 over-fit과
학습데이터에 과하게 적합되지않은 under-fit간에도
trade off가 존재한다
마지막으로 parsimony(단순성)과
내부가 어떻게 동작하는지 알기 어려운 black-box model과의 trade off가 있다
모델 해석력과 flexibility 간의 trade off를 확인할 수 있다
모델들이 flexibility가 높아질 수록 interpretability가 낮아지는 것을 확인할 수 있다
반면에 단순한 모델들일수록 interpretability가 높아지지만 flexibility가 낮아진다
model f^을 학습시키위해서 사용하는 데이터를 training data라고 한다
N개의 training data를 가지고 f를 학습시키면 f^이 되는 것이다
그리고 이 f^이 학습이 얼마나 잘 되었는지를 확인하려면
mean square error를 계산해보면 된다
이 과정을 식으로 정리한게 아래와 같다
training dataset에 대해서 mean square error를
반드시 0으로 만든다고해서 무조건 좋은게 아니다
앞에서도 말했지만 그렇게 하면
training dataset에 대해서 너무 overfit이 되어서
일반화가 어려워질 수 있다
따라서 f^을 평가를 할 때는
학습을 할 때 사용했던 training dataset이 아닌
test dataset을 따로 구분해서
mean square error를 계산한다
training dataset에서의 error를 과하게 작아지게해서
test dataset에서의 오차를 크게하는 것을 overfitting이라고 한다
위는 toy project로 학습시킨 결과인데 한 번 살펴보자
검정색 동그라미가 데이터 포인트이고
true function은 검정색 실선이고
노란색은 linear model
파란색과 초록색은 non-parametric model로 학습시킨 것이다
오른쪽에 각 모델별로 정리된 것을 살펴보자
오른쪽 차트에서 회색 선이 training dataset에 대한
mean square error이고
빨간색 선이 test dataset에 대한
mean square error이다
우리는 training data말고 test data를 보고 평가를 해야한다
따라서 test data를 봤을 때 가장 오차가 작은 모델은
파란색이므로 파란색이 가장 성능이 좋은 모델이 된다
그럼 이 결과를 회색 선과 함께 확인해보자
초록색 모델의 경우 회색선인 training data에서는 오차가 가장 작았지만
test data에 대해서는 꽤 있는 편이다
따라서 해당 모델은 overfitting이 되었다고 간주할 수 있다
노란색 모델은 training data에서도 test data에서도
오차가 큰 것을 확인할 수 있는데
이런 경우 underfit 되었다고 말할 수 있다
위 경우는 true function이 smooth한 경우이다
이런 경우 linear 함수인 노란색도 꽤 예측을 잘한 것을 확인할 수 있다
왜그러냐고?
데이터 자체가 선형에 적합하니까 ...
그렇다면 조금 더 flexible한 model이 잘 예측하는 case를 살펴보자
true function 자체가 linear하지 않기 때문에
노란색 모델의 경우 예측을 잘 못하는 것을 확인할 수 있다
이런 경우 유연한 모델이 더 예측을 잘하는 것을 확인할 수 있다
따라서 우리가 지금까지 f^을 fit 시키는게 목적이라고 했다
그리고 우리가 목적을 잘 달성했는지를 확인하려면
evaluate를 해야하는데 이건 test data를 바탕으로 해야한다
따라서 위 ppt slide에서는 모델 학습에 사용되지 않은
test dataset x0, y0을 가지고 계산한다
평가지표는 mean sqaure error이다
위 mean square error는 결국
오른쪽의 세개의 항으로 쪼개질 수 있다고 한다
첫 번째 항부터 살펴보자
f^도 결국 random variable 함수라는 것을 우리는 알아야한다
즉 데이터셋자체가 랜덤으로 주어진 것이기 때문에
f^ 자체도 random variable이 된다
이 말이 무슨 말이냐하면 같은 문제라고해도
데이터셋이 달라지면 결국 학습된 모델인 f^도 달라지게 된다
이런 함수를 random variable function이라고 하고
이걸 표현한게 Var(f^)이 되는 것이다
두번째 항인 Bias(f^)은 결국
f^이 평균적으로 얼마나 틀렸는지를 뜻한다
단순하고 rigid한 linear model일수록 bias가 커진다
마지막 항은 앞에서도 봤던 입실론이다
현실의 데이터에서 원래부터 존재하는 순수 노이즈값으로
절대 줄일 수 없는 오차이다
f^ 함수가 좀더 flexible(wiggly)할 수록
model의 variance는 커지지만 bias가 작아진다
하지만 f^함수가 좀 더 rigid(linear) 할수록
variance는 작아지고 bias가 커진다
이것이 variance(변동성)과 bias(편향)의 trade-off이다
따라서 우리는 이 variance와 bias가 적절한 balance를 가진
model을 찾아서 mean square error를 줄이는 것을
학습의 목표로 삼아야한다
마지막 슬라이드이다
bias와 variance의 trade-off를 보여주는 차트이다
가장 왼쪽 친구는 검은색 점선쪽에서
bias와 variance가 적절한 balance를 이루게 된다
아무튼 이렇게 3가지 경우에서 각각 bias와 variance를 나타내봤는데
각 데이터마다 적절한 bias-variance balanced 지점을 찾는 것은 다르다
지금까지의 내용이 우리가 한학기동안 배울
machine learning 내용의 overview라고 한다
다음시간부터는 각 항목에 대해서 자세하게 배울 예정이라고
시작하기에 앞서서 이렇게 큰 그림을 훑어주니 이해도 잘되고 좋은 것 같다
이번 수업은 다른 수업들보다 열심히 해보려고한다
(첫학기라서 이런 결심을 하는 것일수도 있지만..)
아무튼 화이팅-!
'강의 > machine learning & deep learning' 카테고리의 다른 글
[ML] Resampling Methods 1편 (Cross-Validation) (0) | 2025.09.21 |
---|---|
[ML] Classification 2편 (LDA, QDA, Naive Bayes) (1) | 2025.09.16 |
[ML] Classification 1편 (Logistic Regression) (1) | 2025.09.15 |
[ML] Linear Regression 2편 (F-statistics, categorical predictors, interactions) (0) | 2025.09.09 |
[ML] Linear Regression 1편 (single & multiple linear regression) (0) | 2025.09.08 |