만족

[데이터사이언스] 머신러닝 개요 본문

[데이터사이언스] 머신러닝 개요

데이터사이언스 Satisfaction 2021. 10. 22. 08:40

머신러닝(ML; Machine Learning)이란?

경험을 통해 자동으로 개선(improve)시키는 컴퓨터 알고리즘으로, AI의 부분집합이다.

 

ML: Types

Unsupervised learning

라벨링되지 않은 데이터들을 가지고 스스로 알고리즘을 학습한다.

(ex: 클러스터링 등)

 

Supervised learning

라벨링된 데이터들을 가지고 알고리즘을 마든다.

(ex: regression, classification 등)

 

Supervised learning: Steps

Supervised learning은 training step, testing step 두 단계로 나누어진다.

 

Training step

트레이닝 데이터로부터 모델(알고리즘)을 만들어내는 단계

=> y= f(x)에서 f를 만들어내는 과정이다 (y: 의존변수, x: 독립변수)

 

Testing step

생성된 모델을 테스트 데이터셋으로 평가하는 단계

데스트 데이터셋은 반드시 트레이닝 데이터에 포함되지 않은 데이터여야 한다

(겹치게 되면 Overfitting현상이 나타날 수 있다)

=> y= f(x)에서 x에 대해 얻어진 y와 실제 y값이 얼마나 유사한가를 평가한다

 

Supervised learning: Training Data vs Testing Data

위에서 학습 데이터와 테스트 데이터가 분리되어야 한다고 언급했다.

 

그렇다면 어떻게 분류하는 것이 좋을까?

 

Simple/Random split

데이터셋을 train:testing= 7:3 비율로 자르는 방법이다.

Simple/Random은 데이터셋 셔플 여부에 따라 다르다.

 

K-fold cross validation(교차 검증)

데이터셋을 k개의 chunk(덩어리)로 분할하고

각 단계에서 1개의 테스트 데이터셋, k-1개의 학습 데이터셋을 이용해 학습/평가한다.

이것은 k번 이루어지며, 모든 청크가 번갈아가며 학습/평가를 반복하고

성능 평가 시 평가 수치의 평균을 평가값으로 사용한다.

 

Classification (분류)

분류는 supervised learning의 일종이다.

 

Binary(데이터의 종류가 2가지; 성별), Multi-class(데이터의 종류가 다양함; 직업)이 있다.

 

예를 들어 Classification으로 꽃 사진을 통해 이 꽃이 어떤 꽃인지를 분류할 때 사용할 수 있다.

(참고: https://swub.tistory.com/13)

 

Binary Classification: evaluation

Binary Classification의 성능 평가 방법에 대해서 알아보자.

 

성능 평가 시 TP(진양성), TN(진음성), FP(위양성), FN(위음성) 을 사용해 여러 평가값들을 구할 수 있다.

 

TP 진양성 (예측 true, 실제 true)
TN 진음성 (예측 false, 실제 false)
FP 위양성 (예측 true, 실제 false)
FN 위음성 (예측 false, 실제 true)

 

Accuracy

(TP+ TN)/(TP+TN+FP+FN)

=> 전체 예측 결과 중 맞게 예측한 값들의 비율

 

Precision

TP/(TP+ FP)

=> true로 예측한 값들 중 실제로 true인 값들의 비율

 

Recall

TP/(TP+ FN)

=> 실제 true인 값들 중 예측에 성공(true)한 값들의 비율

 

F1 Score

2*Precision*Recall/(Precision+ Recall)

=> Precision과 recall의 조화평균 값

 

실제 데이터셋은 동등한 비율로 존재하지 않고, 특정 값에 치우쳐진 경우(Imbalanced Classification)가 많다.

 

특히 Accuracy의 경우 많은 비율을 차지하는 데이터(Majority class)에 영향을 크게 받기 때문에

데이터셋의 비율이 특정 값에 치우쳐진 경우 Precision, Recall, F1 Score를 중점적으로 평가한다.

 

Binary Classification: example of evaluation

내가 코로나 진단키트를 만들었다고 치자.

 

물론 나는 관련 지식이 하나도 없으니 내가 만든 진단키트는 모두 음성(코로나 환자 아님)을 나타내도록 할 것이다.

 

100명이 방문했고, 그 중 1명이 실제 코로나 환자라고 해 보자.

 

그러면 TP, TN, FP, FN은 다음과 같다.

 

TP: 0

TN: 99

FP: 0

FN: 1

 

이제 Accuracy, Recall, Precision, F1 score를 계산해보자.

 

Accuracy

(TP+ TN)/(TP+ TN+ FP+ FN)= 99/100

와! 내가 만든 진단키트는 전혀 진단의 역할을 하지 못함에도 99%의 정확도를 보인다!

 

는 개소리고 이게 위해서 말했던 전형적인 Imbalanced classification의 일종이다.

 

Accuracy는 데이터셋에서 값이 많은 쪽으로 치우치는 경향이 크게 나타나므로, 다른 값으로 평가해야 한다.

 

Precision

TP/(TP+ FP)= 0/0

계산할 수 없다. 다른 값을 보자

 

Recall

TP/(TP+ TN)= 0/(0+ 99)= 0

실제 true인 값 중에서 true로 예측에 성공한 비율을 나타내는 recall은 0을 보여주고 있다.

 

당연하게도 모든 입력값에 대해 음성으로 예측하게 했으니 TP의 갯수가 0이 된다.

 

F1 Score

Precision을 계산할 수 없으므로 이것도 계산할 수 없다.

 

Multi-class Classification

binary classification에서 값이 양성/음성(true/false)였다면

Multi-class Classification에서는 여러 종류의 값(개, 고양이, 닭, 소 등)들이 포함될 수 있다.

 

Multi-class Classification: evaluation

성질은 위의 Binary classification과 동일하다.

 

Accuracy

=예측 성공 케이스 수/전체 케이스 수

 

Precision

=TP(c)/(TP(c)+ FP(c))

c값에 대한 TP, FP, TN, FN 을 이용한다.

 

Recall

=TP(c)/(TP(c)+ TN(c))

c값에 대한 TP, FP, TN, FN 을 이용한다.

 

F1 Score
= 2* Precision(c)* Recall(c)/ (Precision(c)+ Recall(c))

 

개, 고양이, 닭의 사진 데이터를 예측한/실제 데이터 매트릭이다.

 

cat을 기준으로 봤을 때

실제 cat을 cat으로 예측한 경우는 4번(TP)

실제로 고양이가 아닌데 고양이라고 예측한 경우는 6+3= 9번(FP)

실제로 고양이인데 고양이가 아니라 예측한 경우는 1+1= 2번(FN) 이다.

 

이 수치들을 가지고 다양한 평가를 할 수 있겠다.



Comments