처음부터 차근차근 파이썬 자세히보기

Python-머신 러닝/Python-지도 학습 알고리즘

1. 지도 학습 모델링의 기본

윤빵빵영 2020. 6. 13. 12:19

최종 수정 일자: 2020-12-29 10:53

해당 카테고리에 작성되는 글은 Introduction to Machine Learning with Python(파이썬 라이브러리를 활용한 머신 러닝)을 기반으로 작성되었습니다.

 

분류(classification)와 회귀(regression)

 

지도 학습 문제에는 두 가지 유형이 있습니다. 바로 분류(classification)회귀(regression)입니다. 분류 문제의 경우 이진 분류(binary classification)와 다중 분류(multiclass classification)로 구분되며 분류되는 클래스의 수에 따라서 결정됩니다. , 이진 분류는 데이터들이 분류되는 클래스가 두 개이며 일반적으로 합/부합(Yes or No, positive or negative)의 클래스로 나뉩니다. 다중 분류는 클래스가 세 개 이상이며 학습을 통해 미지의 데이터가 어떤 클래스에 속하는지를 예측합니다. 회귀 문제는 분류와 같은 이산적인 라벨(label)이 아닌, 부동 소수점 형태의 결과 값을 학습하고 예측한다는 차이점이 있습니다. 예측의 결과가 어떤 클래스에 속하는지가 아닌, 값 자체로 나타나며 그 값은 연속적인 실수 위의 한 점이 됩니다. 결과만 놓고 보면, 분류와 회귀는 학습의 결과물에 연속성이 있는가로 구분됩니다.

* 지도 학습은 이미 사용자가 데이터의 특성과 원하는 목표 결과값을 가지고 있는 상태에서 해당 데이터를 가지고 학습을 시켜 모델링을 구축합니다. 이때 데이터가 보유한 특성을 feature라 하며 목표 또는 결과를 target, label 등으로 부릅니다. target이라는 단어는 어감상 이해가 어려우므로 모두 target 대신 label 또는 결과값 등으로 서술하여 설명하도록 하겠습니다.


쉬운 예시를 봅시다. 다음과 같이 사과 10개의 무게와 크기(반지름) 데이터가 있습니다.

무게(g) 크기(cm)
519 5.2
489 3.7
510 4.7
498 4.1
504 4.2
523 5.3
526 5.6
508 4.4
531 5.8
478 3.4
493 3.8
512 4.9

 

사과 12개를 판매 가능한 상품과 불량품으로 나누고자 합니다. 무게가 500 g, 크기가 4.3 cm를 넘는 사과만이 판매가 가능하다고 하면 다음과 같이 분류할 수 있습니다.

 

 

즉 판매 가능한 class와 그렇지 않은 class로 분류하는 것입니다. 다음으로 사과 하나를 더 땄는데 크기를 재는 기계가 고장나서 무게만 잴 수 있는 상황이라고 가정해봅시다. 이때 측정된 무게가 515 g이라면 크기는 어느정도 일까요?

 

 

엑셀의 추세선 기능을 이용하면 대략적으로 예측할 수 있습니다. 주어진 수식이 y = 0.0482x – 19.853이므로 x자리에 측정된 무게 515를 대입하면

y = 0.0482 x 515 – 19.853 = 4.97

4.9 ~ 5.0 cm 사이임을 짐작할 수 있습니다. 이를 회귀문제라 합니다.

 

일반화(generalization), 과대 적합(overfitting), 과소 적합(underfitting)

 

머신 러닝은 학습 데이터(training data)에 기반하여 어떤 모델을 만들고 그 모델을 통해서 새로운/본적 없는 자료에 대한 예측을 합니다. 모델이 새로운 데이터에 대해 정확히 예측을 할 수 있을 때, 학습 데이터 셋(training data set)으로부터 시험 데이터 셋(test data set)으로 일반화할 수 있다고 말합니다. 따라서 머신 러닝의 목표는 가능한 정확하게 일반화할 수 있는 모델을 만드는 것이라 할 수 있습니다.

머신 러닝의 학습을 통해 모델을 만들 때 참고하는 데이터 셋을 학습 데이터 셋이라 합니다. 학습을 통해 구현된 모델이 실제로 예측을 잘 하는지 시험해보기 위해 사용되는 데이터 셋을 시험 데이터 셋이라 합니다. 학습 데이터 셋과 시험 데이터 셋이 공통점이 많다면 학습 데이터 셋을 통해서 만들어진 모델이 시험 데이터 셋에서도 정확한 예측을 할 것이라는 기대가 가능해집니다.

 

 

가진 정보량에 비해 너무 복잡한 모델을 과대 적합(overfitting)인 모델이라 합니다. 학습 데이터 셋의 정확성을 지나치게 높이도록 모델링을 하다보니 시험 테스트 셋의 예측과 실제가 차이가 생기는 경우를 말합니다. , 학습 데이터 셋에서는 잘 작동하지만 새로운 데이터를 일반화하지 못하는 문제를 과대 적합이라고 표현합니다.

반대로 지나치게 단순한 모델은 데이터의 모든 측면과 다양성을 반영하지 못합니다. 이러한 모델은 학습 데이터 셋에서도 올바로 작동하지 못합니다. 이렇게 지나치게 단순한 모델을 과소 적합(underfitting)인 모델이라 합니다.

 

 

모델이 복잡해질수록 학습 데이터에 대한 예측을 잘 하며 과소 적합(underfitting)을 피할 수 있지만 모델이 지나치게 복잡해지면 개별 데이터 포인트를 지나치게 강조하여 새로운 데이터로의 일반화가 불가능해지는 과대 적합(overfitting)이 발생하게 됩니다.

따라서 좋은 머신 러닝 모델을 만들기 위해서는 충분한 학습 데이터의 양과 적절한 복잡도(complexity)를 갖도록 모델을 튜닝해야 합니다.