2018년 7월 31일 화요일

6주/5강: 개선된 앙상블 분류기

[커세라 강좌 소개] 자료기반 천문학(Data-Driven Astronomy)
-----------------------------------------------------------------
Week 6: Learning from data: classification
제6주차: 자료에서 정보 얻어내기(자료분류)
- Using machine learning tools to classify your data
  수집한 자료를 분류하기 위해 기계학습 도구(분석 소프트웨어)를 활용하기
- Investigating different types of galaxies
  서로다른 종류의 은하 찾기
-----------------------------------------------------------------
1강: 관측 자료 분류(Classification)
Lesson 1: Learning from Data: Classification / 한글자막
-----------------------------------------------------------------
Lesson 2: Types of Galaxies / 한글자막
-----------------------------------------------------------------
3강: 형태에 따른 은하 분류
Lesson 3: Morphological Classification of Galaxies / 한글자막
-----------------------------------------------------------------
4강: 결정 트리 분류기의 한계
Lesson 4: Limitation of Decision Tree Classifier / 한글자막
-----------------------------------------------------------------
5강: 개선된 앙상블 분류기
Lesson 5: Improving your result with Ensemble Classifier / 한글자막 / 영문자막

[강의대본]



[00:06] 지난번 강의에서 은하 분류기의 성능을 기본수준까지 맞춰봤다. 분류기는 슬로언 디지털 스카이 서베이에서 추출한 소수의 특징들을 가지고 만들어졌고 분류기준(gold standard)자료는 은하 동물원에서 가져 왔었다. 아마도 이 기본 분류기를 가지고 실험하면서 인지 했겠지만 그 분류의 정확도가 학습에 사용하기 위해 무작위로 고른 표본에 따라 정확도가 매우 크게 달라진다. 이런 불안정성(instability)의 원인 중 하나는 결정 트리가 잡음(noise)에 매우 취약하여 과학습(overfitting)되는 경향이 있기 때문이다. 이 '잡음'은 은하 동물원의 분류 자원참여자에 의한 오분류 일 수도 있고 관측에서 나온 물리적 특징일 수도 있다.

[00:47] 그렇다면 잡음 자료로 인해 과훈련될 수도 있는 기초 분류기에서 벗어난 이런 엉뚱한 자료에 강한 분류기를 만들 방안은 무엇인가? 가장 흔하면서 간단한 기법중 하나로 합주(ensemble, 앙상블)학습이 있다. 다수의 (결정 트리)모형을 학습시켜 그 결과를 취합하는 방식이다. 분류는 투표방식(voting)이 보통이고 취합(aggregation)은 대개 각 합주 학습자의 평균을 취한다. 합주 학습(ensemble learning)의 이면의 의도는 다수의 취약한 학습자들이 협력하는 분류기를 만들어 좀더 믿을 만하고 탄탄한 결과를 가져올 수 있게 하는 것이다. 비록 완벽하지 않는 학습자료에도 그리고 학습과정에서 어떠한 막연한 자료가 있어도 잘 견디길 바란다.




[01:26] 합주기가 개별 분류기보다 더 잘 작동하기 위해 합주 참여자는 몇가지 면에서 다른 측면을 가져야 한다. 즉, 개별 분류기마다 다른 결과를 낳는 것이어야 한다. 각 자료마다 모두 똑같은 결과를 내면 여럿을 합쳐봐야 결국 같을 것 아닌가. 이렇게 독립적인 (결정)모형을 만드는 여러 방법이 있는데 서로 다른 학습 알고리즘(different algorithm)을 사용하거나 서로다른 인수(different parameter), 말하자면 트리의 깊이를 다르게 한다던가 다른 학습 자료를 사용한다. 가장 널리 사용되는 방법중 하나로는 무작위 복원추출 취합(bootstrap aggregating) 혹은 줄여서 배깅(bagging)이라고 한다. '배깅'에서 학습 자료들은 무작위 복원추출된다(대규모 학습자료에서 표본을 무작위로 봅아 분할된 훈련을 시킴.) 다른 말로하면 원 학습자료에서 복원추출 했다는 뜻이다. (결정트리)모형은 복원추출된(selected with replacement) 표본을 가지고 학습된다. 배깅은 개별적인 학습자료로 훈련 하였으므로 서로 다르게 학습한 사례임을 강조한다(대상 학습자료 전체에서 무작위로 추출하여 훈련한 개별적인 분류기를 여러개 가지게 된다).

* 80년대 말에서 90년대 신경망이 세상을 휩쓸더니 요즘은 기계학습이 그렇다. 기계학습을 다루는 블로그와 동셩상이 넘쳐나는 세상이다.
- 배깅(bagging): 전체 데이터에서 무작위 복원추출(sample with replacement)한 표본으로 훈련한 하위 분류기들의 취합하는 기계학습의 한 방식
- 복원추출, sample with replacement 한번 뽑았던 표본을 다시 넣고 뽑을 수 있음. 'Bootstrap'(자발적으로~하다)와 같은 의미임.
- 통계분석의 기초를 알려면 수학능력 시험의 '확률 통계'를 공부하자.

[02:12] 랜덤 포레스트 분류기(Random Forest Classifier)는 교사학습(Supervised Learning) 알고리즘이다. (한 목적을 가진)여러개 결정 트리 분류기가 조화를 이룬다. 무작위로 추출한 표본으로 학습된, 이를 배깅이라하는데, 각 결정 지점에서 특징의 일부를 선택하여 만든 분류기들이 조화를 이룬다. (제각기 자란 여러 나무, 트리 들이 모여 숲, 포레스트 를 이룬다.)

[02:29] 사용할 프로그래밍 언어와 라이브러리에 따라 랜덤 포레스트에 변화를 줄 수 있다. 예를 들어 싸이킷(Sci-kit, 파이썬의 과학관련 라이브러리)은 배깅 기법을 사용하여 랜덤 포레스트를 실행하지만 R 은 특징선택(Feature selection)을 사용한다. 따라서 우리의 목적인 은하분류의 예에 랜덤 포레스트 기법을 쓰도록 하자.

* R 은 통계분석과 그래픽을 위한 언어 환경이다. (https://www.r-project.org/about.html)
* "Feature Selection with the Caret R Package"

[02:45] 우리는 확실히 예전과 동일한 특징과 방법론을 사용 할 수 있지만, 랜던 포레스트 분류기를 결정 트리 분류기에 대체하기로 한다. 우리는 (랜덤 포레스트를) 설정하기 위해 추가로 몇가지 변수를 더 사용 하겠지만 중요한 점은 다수의 결정트리(나무)를 가지고 랜덤 포레스트(숲)를 꾸밀 것이다. 중요한 점은 원자료에서 (다수의 트리를 훈련 시켜야 하므로) 더 많은 표본을 활용할 것이고 잡음(noise)과 과훈련(overfitting)의 문제에 더 강하게(robust) 된다. 봐서 알겠지만 우리가 얻은 랜덤 포레스트의 결과는 언뜻봐도 개별적인 결정트리보다 훌륭하다.

* 결정 트리분류기의 결과

* 앙상블 분류기의 결과



[03:13] 훈련과 예측에 걸리는 시간이 증가하는 것과는 별개로 숲에 있는 나무의 수에 직접 관련있는 (훈련에 드는)비용은 싸이킷을 실행해서 얻는 결과에 비하면 아무것도 아니다. 랜덤 포레스트의 결과로 얻은 혼란행렬을 들여다보면 양성 참(true positive)을 나타내는 사선의 모든 숫자가 매우 높아졌다는 것을 알 수 있다. 하지만 조화(ensemble)에 참여한 각 분류기는 투표(voting)에 참여한다. 가장 빈도수가 높은 것을 골랐을 뿐만 아니라 전체 분류항목에 걸친 투표수의 분포를 본다. 이는 분류가 옳았을 예측확률의 계산을 가능케 한다. 그리고 (랜덤 포레스트 분류) 시스템이 어떤 실험 사례가 분류하기 특히 어려워 했는지 알 수 있게 보여준다.

[03:51] 또한 확률은 특이자료(outlier)를 확인 할 수 있게 해준다. 그 특이자료란 우리가 훈련중인 어떤 급(부류)에도 속하지 못할 예외 객체이다. 이러한 예외적인 드믄 대상을 구별해 내주면 향후 과학적 연구 대상을 알려주는 것이어서 매우 유용하다.

[04:04] 이번 강좌에서 기계학습의 이면에 어떤 일이 벌어지는지 살펴보고 더 많은 것을 배웠다. 은하 분류의 결과를 개선할 수 있는 다양한 방법이 있다는 것도 알게됐다. 그리고 우리는 과제를 동해 좀더 많은 것을 접해봤다. 긍국적으로 분류의 목적은 우리의 우주에 대한 물리적 이해를 증대시키는 것이라고 하겠다. 은하의 외형적 분류는 은하의 형성(formation)과 진화(evolution)를 이해하는데 큰 도움이 된다. 오늘날 우리가 관측하는 은하는 어떻게 그런 모습이 됐을까? 우리는 작은 은하들이 뭉쳐서 계층적 분류화(시간상의 진화에 따른)와 거대한 은하의 형성에 대하여 일부나마 알고 있다. 또한 우리는 나선은하에서 별들이 탄생이 진행중이라는 것을 설명하기 위한 은하 내부에서 어떤 과정이 필요한지 알게됐다. 우리가 생각해낸 은하 형성의 어떤 모형도 우리가 우주를 내다보며 관측한 다양한 외형의 수많은 변형을 다 설명하진 못한다.

댓글 없음:

댓글 쓰기