1. 지도학습 vs 비지도학습
지도학습과 비지도학습은 기본적으로 머신러닝의 한 분야로, 이를 말하기 전에 머신러닝에 대해 먼저 간략하게 얘기해보고자 한다.
※머신러닝이란 ?
머신러닝이란, AI의 한 분야로, 데이터를 통해서 컴퓨터가 스스로 학습하게 하는 방법이다. 명시적으로 규칙을 프로그래밍하지 않아도 데이터셋을 컴퓨터에게 제시하게 되면 패턴을 학습하여서 예측이나 결정을 수행하게 되는데, 머신러닝 이전의 전통적인 프로그래밍은 사람이 규칙을 선언하고, 데이터를 주게 되면 결과가 나오는 방식이었다고 할 수 있는데(규칙 + 데이터 → 결과), 머신 러닝의 경우에는 데이터 + 정답 → 규칙(모델) 으로 코드가 짜이게 된다. 규칙을 사람이 직접 만드는 것이 아니라, 데이터로부터 모델이 스스로 학습해 규칙을 찾아낸다는 점이 중요하게 봐야 할 점이다. 데이터를 통해 학습하기 때문에 데이터의 양이 많아질수록 더 빠르고 정확하게 학습을 수행할 수 있게 된다.

머신러닝의 학습 방식에는 지도학습, 비지도학습, 강화학습이 있는데, 강화학습에 관해서는 추후에 다루어보도록 하고 비지도학습과 지도학습이 무엇인지, 이 둘의 공통점과 차이점에 대해 얘기해볼까 한다.

1)지도 학습(Supervised Learning)
머신러닝에서 얘기하는 지도 학습이란, 정답이 있는 데이터(label)들을 가지고 학습하게 만드는 것인데, 예를 들면 학습 데이터를 사진들을 주고, "이건 고양이 사진이야", "이건 강아지 사진이야"라는 정답을 준다. 그렇게 엄청나게 많은 양의 강아지 사진과 고양이 사진을 모델에게 학습시키고, 모델이 최대한 처음 보는 강아지 사진이나 고양이 사진을 보았을 때 맞는 카테고리에 분류할 수 있게끔 학습시키는 것을 지도학습 중에 분류(Classification)라고 한다. 즉 데이터의 값이나 특징을 분석하여 주어진 값에 대한 결과 수치를 예측할 수 있게 하는것, 그것이 지도 학습이라고 할 수 있겠다. 지도학습에는 분류 말고도 다른 유형이 더 있는데, 바로 회귀(Regression)이다. 분류가 예측값이 2개, 혹은 3개의 카테고리(클래스)로 나누어 지는 반면에, 회귀는 예측값을 연속형인 숫자값을 반환하게 된다. 데이터가 분포되어 있는 평면에 가장 가까운 선을 그어 예측한다고 생각하면 되는데, 예를 들자면 집값이나 온도를 예측하는 모델을 생각할 수 있겠다.

위에 그림에서 볼 수 있듯이 분류는 선으로 두 데이터를 범주화 시키는 작업이라고 볼 수 있고, 회귀는 가장 데이터의 분포를 유사하게 나타내는 선을 긋는 행위라고 볼 수 있겠다. 둘의 공통점은 지도학습이라는 것, 즉 라벨링이 되어있는(정답이 있는) 데이터를 학습시키는 것이다.
2) 비지도 학습(Unsupervised Learning)
비지도학습에서는 지도학습에서와 달리 정답이 없는 학습이다. 더 설명해 보자면 모델에 입력값인 x만 주어지고 입력 데이터의 구조나 패턴을 AI가 스스로 찾는 학습인데, 주로 데이터의 숨겨진 구조나 패턴을 찾는 데 사용하곤 한다. 비지도 학습에는 크게 세 가지가 있다.
- 군집화(Clustering) : 비슷한 데이터끼리 묶는 방법 (ex. 이상치 탐지, 고객 세분화 , etc)
- 차원 축소(Dimensionality Reduction) : 변수가 너무 많을때, 중요한 특징만 남겨놓고 다른 특징들을 줄이는 기법(ex. 노이즈 제거, 지도 학습 전처리, 고차원 데이터 시각화)
- 연관 규칙 학습(Association) : 데이터 안에서 함께 자주 나타나는 항목들의 관계를 찾는 방법(ex. 장바구니 분석 : "우유를 사는 사람은 빵도 살 확률이 높다")


위처럼 지도학습과 비지도학습에 대해 알아보았는데, 지도학습과 비지도학습의 가장 큰 차이는 라벨링 된 데이터가 있느냐(정답이 존재하는 데이터인가)로 정리할 수 있겠다. 하지만 머신러닝에서 지도학습과 비지도학습 하나만 쓰는 것이 아니라 비지도 학습으로 라벨 데이터를 뽑아내고 구조를 파악하여 지도학습으로 예측을 수행하는 경우가 많고, 지도학습과 비지도학습의 문제의 목적이 다르기 때문에 둘 다 충분하게 이해를 하고 있는 게 좋을 것이라고 생각된다.
2. 손실함수(Loss Function)
손실함수(Loss Function)의 정의 는 모델의 예측값과 실제 정답의 차이를 측정하는 지표인데, 즉 이 손실(Loss)이 작을수록 모델의 성능이 좋다고 평가할 수 있다. 따라서 이 값을 최소화하는 방향으로 모델이 학습하는 것이 머신러닝의 목적이라고 할 수 있겠다. 그렇다면 이 손실함수의 종류는 어떤 것들이 있을까?

1) 회귀 - MSE (Mean Sqaured Error), MAE (Mean Absolute Error)
회귀 분석의 경우 주로 MSE 손실함수를 사용하고, 때때로 MAE 손실함수도 사용하곤 한다. MSE의 경우에는 실제 정답인 값과 오차를 제곱하는 형태의 손실함수로, 큰 오차에 큰 페널티를 주며, 미분이 부드럽다는 특징이 있다. MAE의 경우에는 오차의 절댓값으로 손실함수를 구성하는데, 이상치의 영향은 적고 기울기가 일정하다는 특징이 있다. MSE를 사용하는 경우가 더 대다수인 경우는 미분이 부드럽기 때문에 안정적이고, 학습이 잘되기 때문이다.

2) 분류 - 이진 교차 엔트로피(Binary Cross-Entropy), 범주형 교차 엔트로피(Categorical Cross-Entropy)
분류는 보통 이진 교차 엔트로피, 다중 분류 엔트로피를 사용하는데, 먼저 이진 교차 엔트로피에 대해 말해보자면 이는 정답 클래스가 2개 일 때 사용한다. 예를 들면 합격/불합격 라벨링 데이터나, 스팸/정상 라벨 데이터를 정답에 알맞게 분류할 때 이런 이진 교차 엔트로피 손실함수를 사용하는데, Sigmoid 함수를 이용해 1일 확률(긍정 클래스일 확률)을 출력한다. 따라서 정답 클래스가 1인데 확률을 0.1로 예측하게 되면 Loss가 매우 큰 상황인 것이다.

범주형 교차 엔트로피의 경우에는 클래스가 3개 이상일 때, 예를 들면 정답 클래스가 고양이/강아지/새 이렇게 존재한다면, 다중 분류를 위해서 범주형 교차 엔트로피 손실함수를 사용한다. 이때 모델은 Softmax 함수를 사용해서 각 클래스의 확률을 출력하는데, 이때 정답 클래스의 확률을 최대화하는 방향으로 모델은 학습하게 된다.

3) 손실함수, 그래서 왜 중요할까?
요약하자면 손실함수는 모델의 예측값과 실제 정답 사이의 차이를 계산하는 함수로, 이것으로 모델의 예측이 정확한지, 아니면 학습이 더 필요한지 성능을 측정하는 지표가 될 수 있으며, 다양한 모델을 비교하는 상황이라면 어떤 모델이 더 나은지 비교할 수 있는 척도가 되기도 한다. 또한 잘 설계된 손실함수는 모델이 훈련 데이터에만 과도하게 맞춰지는 과적합(Overfitting)을 방지하며, 처음 보는 데이터에서도 예측을 잘 수행할 수 있게 한다. 사실상 모델은 손실을 줄이는 방향으로 가중치를 수정하기 때문에 손실함수가 모델 학습의 방향을 제시하는 나침반이기 때문에 머신러닝에서 손실함수는 매우 중요하다고 할 수 있다.
3. 편향(bias)과 분산(variance)
머신러닝에서 모델의 오차는 크게 편향(Bias)과 분산(Variance)으로 나눌 수 있다. 모델 학습 알고리즘에 문제가 있다면, 높은 편향을 가지고 있거나, 높은 분산을 가지고 있는 경우인데, 이 둘은 상충 관계에 있기 때문에 적절한 합의지점을 찾는 것이 중요하다. 이를 더 알아보기 위해 먼저 편향과 분산에 대해 알아보자.
○편향(Bias)
여러 데이터 셋을 바탕으로 추정값들의 중심이 얼마나 정답과 떨어져 있는가를 의미하는 것인데, 머신러닝 오차에서 높은 편향을 보인다는 것은, 모델이 너무 "단순한 가정"을 하고 있다는 것이다. 모델이 데이터에 내재된 핵심 패턴을 제대로 학습하지 못하고 단순화하여, 훈련 데이터에서의 성능이 낮은 경우에 해당한다. 이를 과소적합(Underfitting)이라고 부르는데, 모델이 너무 간단하거나, 학습 반복 횟수가 너무 적거나, 데이터의 양이 너무 적을 때 발생하곤 한다.

○분산(variance)
분산이란, 여러 데이터셋을 바탕으로 추정한 결과들이 데이터 변화에 얼마나 민감하게 반응하는가, 즉 모델이 데이터에 과하게 맞춰진 정도를 의미한다. 높은 분산을 보인다는 것은 모델이 "데이터 하나하나에 너무 민감한" 경우에 해당한다. 모델이 데이터에 대해서 학습데이터를 예측하는 것은 매우 잘 동작하지만, 다른 새로운 데이터를 가지고 예측했을 때 모델이 잘 동작하지 않는 경우가 이에 해당하는데, 이를 과적합(Overfitting)이라고 한다. 과적합은 주로 데이터의 특징 개수에 비해서 모델이 너무 복잡할 때 발생한다.

○편향 - 분산 트레이드오프(Bias - Variance Trade-Off)
트레이드오프란, 한쪽을 줄이면 다른 쪽이 늘어나는 관계, 즉 상충관계를 얘기하는 말인데, 편향과 분산이 이런 관계에 있다. 모델이 너무 단순한 경우, 편향은 높아지고 분산은 낮아져 과소적합이 일어나고, 모델이 너무 복잡할 경우 편향은 낮고 분산은 높은 형태가 되어 과적합이 발생하게 된다. 이를 비유하기 위해서는 주로 영점사격 과녁으로 예를 들곤 하는데, 아래 그림을 보자.

위의 그림에 따라서 영점사격이라고 생각하면, 이상적으로는 낮은 분산과 낮은 편향을 가진 좌측 상단의 과녁처럼 모델 예측이 되면 좋겠지만, 주로 우측 상단에 있는 낮은 편향 - 높은 분산, 좌측 하단에 있는 높은 편향 - 낮은 분산의 경우가 일반적이다. 따라서 최적의 모델의 지점을 찾기 위해서 테스트 에러가 최소가 되는 지점을 찾게 된다.

따라서 머신러닝에서의 좋은 모델은 최대한 복잡하거나 많은 특징을 가지고 있는 모델이 아니라, 편향과 분산 사이에서 최대한 적절한 균형점을 찾은 모델이라고 할 수 있겠다.
4. K-폴드 교차검증(K-Fold Cross Validation)
일반적으로 데이터셋을 모델에게 훈련을 시킬 때에는 훈련 데이터와 테스트 데이터를 미리 나누어 놓고, 훈련 데이터로는 모델을 훈련하고 테스트 데이터로는 예측을 진행해 모델의 성능을 채점하곤 한다. 하지만 이렇게 한 번만 데이터를 나누어서 학습을 진행한다면, 데이터 분할 방식에 따라 성능이 달라질 수도 있고, 훈련 데이터에 대해서만 모델이 과적합 될 가능성이 있다. 이를 개선하기 위해서 교차 검증이라는 방식을 수행하는데, 훈련 데이터를 여러 그룹으로 나누어서 일부는 훈련 시에 사용하고, 일부는 검증 시에 사용하여 성능을 측정한다. 이렇게 교차검증을 통해서 훈련을 수행하면 얻을 수 있는 이점은 먼저 훈련 데이터와 테스트를 split 할 때에는 일부 데이터는 테스트에만 사용한다는 단점이 존재하는데, 이를 교차검증을 이용하면 모든 데이터를 학습과 검증에 한 번씩 사용하기 때문에 데이터 낭비를 줄일 수 있다는 장점이 있다. 교차 검증의 대표적인 반복으로는 K-폴드 교차검증이 있는데, 다음과 같은 과정으로 교차 검증이 수행된다 :
- 전체 데이터를 K개로 분할
- 그중 한 개는 검증 데이터(Validation)로 지정
- 나머지 K-1개의 데이터는 훈련 데이터로 지정
- 검증 데이터를 다른 그룹으로 바꾸어 가며 이를 K번 반복
- 총성능의 평균을 최종 점수로 사용

K-폴드 교차검증을 사용하게 되면 한 번의 분할 결과에 의존하지 않기 때문에 더 신뢰할 수 있는 성능 결과가 도출되게 된다. 그렇다면 데이터를 K개로 분할하게 될 때, K는 어떻게 정하게 될까? K가 클수록 더 많이 데이터를 더 많이 나누게 되고, K가 작을수록 덜 나누게 될 텐데, K가 작을 경우에는 계산 속도가 빠르고, 학습 비용은 낮지만 데이터를 크게 크게 분할하기 때문에 데이터 분할에 따라서 평과 결과가 달라질 수 있다, 즉 분산이 커질 확률이 증가한다. K가 커질 경우, 더욱 세세하게 데이터를 나누게 되는데, 더 많은 데이터로 학습하게 되어 평가가 안정적이게 되고, 성능 추정이 더 정확해질 수 있지만, 계산 비용과 학습 시간이 증가하게 된다. 또한 K가 너무 커지게 되면 분산이 오히려 커질 수 있는데, 각 폴드의 세트가 거의 동일해지며, 동일해진 상태에서 딱 한 개 데이터만 빠지게 되면 모델이 특정 데이터에 과도하게 반응하면서 분산의 증가로 이어질 수 있다. 따라서 K를 무조건 작게 하거나, 무조건 크게 한다고 좋은 것이 아니라, 적절한 K의 크기를 결정하는 것이 좋은데, 보통 K=5, K=10을 선택하는 경우가 많다. 경험적으로 보았을 때 균형이 가장 좋다고 판단되기 때문이다.
'My IT > Article' 카테고리의 다른 글
| [My IT : Article] PyTorch vs TensorFlow, Tensor(PyTorch) vs Array(Numpy) (1) | 2026.03.17 |
|---|---|
| [My IT : Article] 딥러닝 vs 머신러닝, 딥러닝 하이퍼파라미터 (0) | 2026.03.10 |
| [My IT : Article] 결정 트리, 앙상블 기법, 차원 축소 기법 (2) | 2026.03.04 |
| [My IT : Article] 선형 자료구조 : 배열, 링크드 리스트, 스택 , 큐 , 데크 (0) | 2026.02.23 |
| [My IT : Article] 선형대수학과 머신러닝, EDA, 데이터 전처리 (1) | 2026.02.09 |