matlab에서의 기계학습 Engineering



기계학습: 데이터의 자동분류와 패턴식별

機械学習:データの自動分類とパターン識別




오늘 들은 매트랩 웹세미나 내용을 정리해본다.
세미나 동영상은 (일본어, 2011년도 동영상이지만) 클릭하면 볼 수 있다. 



1. 기계 학습의 개념

데이터에 입출력 관계가 있다고 가정하여 어느 정도의 샘플데이터를 대상으로 분석, 
새로운 데이터가 어느 출력이 될지를 예측하는 룰을 정하는 것을 기계학습이라고 한다.

y=f(x1,x2,x3...)
여기서 y는 종속변수, x1,x2... 는 독립변수가 된다.
즉, 기계학습은 x1, x2...을 대상으로 분석하여 새로운 x들이 들어왔을 때 어떤 출력을 낼지 예측하게 된다. 

2. 회귀와 분류

기계학습은 회귀(Regression, Curve fitting)와 분류(Classification)가 있다.
이들은 종속변수로 구분할 수 있다. 

2-1 회귀

회귀는 y=수치인 경우를 나타낸다.
예: 도쿄와 오사카의 기온을 알면 나고야의 기온은 예측 가능한가?

세미나에서는
도쿄, 오사카, 나고야의 기온 엑셀파일로부터 함수를 피팅하고, 이로부터 도쿄, 오사카의 기온을 넣으면
저절로 나고야의 기온을 예측하는 프로그램의 예를 나타내었다. 
도쿄 28도, 오사카 32도의 입력을 넣으면 저절로 나고야 30.8608도로 출력이 나온다.
여기서 사용한 알고리즘은 SVM (Support Vector Machine)이다.

2-2 분류

분류는 y=그룹인 경우를 나타낸다.
회귀처럼 수치로 출력이 나오는 것이 아니라 이산적으로 어느 그룹인지를 나타낸다.

예: 신장과 체중으로 성별을 판단
X=[신장, 체중] Y=['남자', '여자']

즉, 출력은 남자 또는 여자밖에 없다.


3. 매트랩에 있는 기계학습과 관련된 수법들

- Neural Networks
- Naive Bayes Trees
- Decision Trees
- Discriminant Analysis
- Hierarchical, K-means
- Support Vector Machines
- Fuzzy Logic
- etc


4. 세미나 영상에서의 예제

- 인간행동분석 by Neural Networks (Neural Network Toolbox)
- 종양 분류 by Decision Trees (Statistics Toolbox)
- 식물종 클러스터링 by K-means (Statistics Toolbox). 요건 시간상 패스.


5. 예제 1. 인간행동분석 by Neural Networks (Neural Network Toolbox)

양손 손목에 가속도센서를 붙여서 진동을 재고 이때의 행동을 [독서, 키보드조작, 마우스조작, 문자필기, 정지]로 나눈다.
예측변수는 총 24개이다. (최대, 최소, 분산, 평균, XYZ축, 왼손오른손 = 토탈 24개 예측변수)

step1. 엑셀로부터 데이터를 Matlab으로 읽어들임
step2. preprocessing(Neural Network Toolbox에 대응할 수 있도록)
step3. 학습데이터를 이용해, Neural Network 모델을 만든다.
step4. 테스트 데이터로 모델의 예측능력을 확인

자세한 코딩은 동영상에 전부 친절하게 나와있다.
nprtool 코맨드를 통해, neural network의 GUI로 쉽게 구현 가능.

이때 
Training (학습용데이터)/ Validation (평가용데이터)/ Testing (사용안함)
을 결정하는데, 학습용 데이터는 학습할수록 오차가 적어지는 반면,
평가용 데이터는 어느정도 이상 학습시키면 overfitting이 된다.

Hidden Neurons의 갯수는 복잡성을 결정하는데, 갯수가 많을수록 정확하겠다.
Training시킨 다음엔 confusion map도 출력이 가능하다.
network object를 저장하고 새로운 데이터를 넣으면 알아서 그룹을 판단해주게 된다.

근데 Neural Network는 초기치에 의존하기 때문에 매번 결과가 달라지게 된다.
따라서 rng 함수를 이용해 고정하면 같은 결과를 계속 볼 수 있다.


6. 예제 2. 종양 분류 by Decision Trees (Statistics Toolbox)

모델링 수법으로써 Bagged Decision Trees 를 사용하였다.
- Decision Tree는 학습데이터로부터 일련의 질문에 기초하여 그 데이터의 각 그룹의 특성을 정리한다.
- Bagging (Bootstrap Aggregation) algorithm은 랜덤한 subset으로부터 복수의 Decision Tree를 작성하여 다수결로 분류하는 것을 의미한다.

여기서 input은 2308개의 유전자 발현성, output은 종양의 종류 (A,B,C,D)였다. 
Bagged Decision Trees는 TreeBagger와 predict 함수를 이용하면 바로 학습이 끝난다.

또한 predict함수로부터 신뢰성을 볼수 있으며,
DeltaCritDecisionSplit를 통해 어느 변수가 중요했는지 각 데이터들의 공헌도도 확인할 수 있다.

2308개의 데이터중에 중요한 데이터 50개만 뽑아서 다시 학습시키는 것도 가능하다.



 


덧글

댓글 입력 영역