데이터

핸즈온 머신러닝 3강 복습 2

So_Bee_93 2020. 7. 15. 19:33

지극히 개인적인! 복습을 위한 포스팅입니다 ! 

 

 

이제는 다중 분류기를 만들어서 연습하겠습니다. 

다중 분류기는 

OvR(또는 OvA)  과 OvO 전략으로 나뉩니다. 

전자의 경우 쉽게 말해 클래스를 2가지씩 뽑아 비교해가는 것입니다. 

후가의 경우에는 클래스를 한번에 비교하는 것이라 생각하면 되겠습니다. 

 

서포트 백터 머신의 경우 OvO를 선호합니다. 

그러나 대부분의 이진분류 알고리즘에서는 OvR을 선호합니다 

 

 

다중 분류기이기 때문에 클래스는 0~9까지 이므로 총 10개입니다. 

 

 

 

 

저희는 서포트 백터 머신 분류기로 테스트 해보겠습니다. 

이번에는 다`았습니다. 

 

 

 

 

decision_function 메소드를 호출했더니 샘플 한개당 10개의 점수를 반환합니다. 

그리고 이중에서 가장 큰 점수인 5를 결과 값으로 반환했습니다 ! 

 

 

 

 

 

 

 

파이썬에도 적어놨듯이 경사하강법을 쓰는 knn모델이나 svm같은경우에는 standardscaler의 영향을 많이

받습니다. 때문에 sgdclassfier를 포함한 해당 모델들은 stnadardscaler를 반드시 적용시켜야 합니다 

 

 

 

 

 

오차행렬 또한 다중 분류이기 떄문에 다음과 같이 나왔습니다. 

 

 

 

 

 

이제는 다중 레이블 분류에 대해 배우겠습니다. 

다중 레이블 분류는 쉽게 말해 같은 사진에 여러 사람이 찍혔을 때 각

 

사람마다 꼬리표를 붙인다고 생각하면 되겠습니다.

 

먼저 y_train_large는 7이상인 것들만 모아놨습니다.

두 번째로 y_train_odd는 홀수인 것들만 모아놨습니다. 

그리고 이를 multilabel로 한번에 묶겠습니다. 이 변수를 

predict 메소드에 넣어주면 각각의 예측값에 대해  클래스를 false 와 true로 출력해줍니다. 

 

 

 

 

즉 5는 7보다 작다 (false) 그리고 5는 홀수이다 (true)를 출력시켰습니다. 

 

 

 

마지막으로 다중 출력 분류에 대해 설명하겠습니다. 

다중 출력 분류는 쉽게 말해  다중 레이블 분류의 경우 각 레이블이 TRUE FALSE 와 같이 나왔다면 

이번에는 각 레이블의 여러가지의 값 (숫자)들로 나오는 것을 말합니다! 

 

 

예를 들기 위해 기존의 숫자 이미지에 노이즈를 넣어서 이를 거르는 장치를 만들겠습니다.

 

즉 한 레이블에 여러개의 값을 나온다는 것은 다시 말해서 한 레이블이 픽셀이라고 봤을 때 

기존의 픽셀 값0~255까지의 강도가 있었다면 여기에 노이즈를 (아무 숫자)를 넣어서 이를 

제거한다고 생각하면 되겠습니다. 

 

 

 

왼쪽의 사진은 noise를 넣은 뒤의 숫자

그리고 오른쪽은 원래의 이미지 입니다! 

 

 

마지막으로 이를 knn 최근접 이웃  모델로 학습시켜서 

노이즈를 걸렀습니다 ! 

 

 

 

 

이렇게 이중분류 다중분류 다중레이블 다중출력 분류를 살펴보았습니다 !!