이번에는 저번 포스팅에 이어서 머신러닝에서 중요한 용어인 feature에 대해서 생각해 볼것이다.

feature는 한국어로 특징이라고도 해석이되는데, 
학습 및 예측을 할 데이터의 특징, 항목 들을 의미한다. 
(머신러닝에서, Feature와 Attribute는 같은 용어로 이용된다.)

예를들어서 사람의 정보를 이용해서 이사람이 질병에 걸렸는지 건강한지 유무를 예측한다고 생각해보자. 
여기서 사람의 정보란 무엇인가?
이는 우리가 어떤 자료를 모으냐에 따라 달라 질 수 있는데, 
이는 개인의 키, 몸무게, 성별, 혈압, 나이, 식습관 등이 될 수 있다. 
이러한 항목들이 feature라고 부른다. 
개인의 키는 feature1 몸무게는 feature2 성별은 feature3 가 될 수 있는 것이다. 


아래의 표를 보자. 이러한 표는 통계공부를 하는 사람들에게는 아주 익숙한 표이다. 
머신런닝은 통계를 기본으로 하고 있기 때문에 대부분의 자료형이 아래의 표와 같은 형태를 하고 있어야한다. 


이때 10명에 대한 혈압, 몸무게등 8개의 지표를 가지고 있다고 한다면, 
10개의 샘플과 8개의 feature로 구성된 테이블이라고 할 수 있다.

이 자료를 통해 우리는 무감독학습 즉 클러스터링 군집화를 해서 비슷한 샘플들 끼리 묶을 수 있다.

여기서 우리가 예측하고자 하는  Class 분류군이 주어진다면 Classification 감독 학습, 분류를 수행할 수 있다
그럴 경우 테이블이 아래처럼 구성될 것이다.

이렇게 Class를 알고 있으면, 우리는 이 class를 예측하기 위한 모델을 만들 수 있다. 


Feature는 머신러닝에 있어서 얼마나 중요할까?- Feature selection

Input data가 바뀌면 결과가 바뀌듯 feature의 중요성은 머신러닝의 다른 알고리즘을 바꾸는 것보다 더 중요한 요소들이라고 할 수있다. 

내가 분류하고자 하는 class와 연관된 feature를 이용하는게 중요하다. 

예를들어 위의 예제같은 경우 샘플들의 "생일"을 추가적 feature로 이용한다고 해보자. 
이는 질병과는 관련이 아주 적은 샘플들의 특징이다. 

때문에 생일 항목을 위에 추가한다고 하더라도 예측 성능을 올리는데 도움이 되지 않을 뿐더러 오히려 예측성능을 저하시킬 수 있다.

또한, 샘플의 갯수와 feature의 갯수를 고려하는 것도 중요하다. 알고리즘마다 다르지만 샘플의 갯수보다 feature의 갯수가 너무 많은 경우 예측의 성능이 떨어진다고 알려져 있다. 

위와 같은 두가지 이유, 즉 
1) 분류군 혹은 샘플들을 묶는데에 연관성 있는 feature만을 사용하고자 
2) feature의 갯수를 줄여서 효율성을 높여

최종적으로는 성능을 높이기 위해 feature들을 선택적으로 이용하는 feature selection이 수행되곤 한다.



여기서 좀 더 나아가서 딥러닝에 대해서 생각해 보면, 
딥러닝의 가장 큰 장점은 아주 많은 feature도 처리가 가능하며 또 feature를 우리가 임의로 선택할 필요가 없이 feature를 스스로 만들고 또 selection도 스스로 한다는 것이다! 딥러닝이 처음에 발전되게 된 자료형이 사진과 같은 이미지 에서다. 

처음 딥러닝을 이용하지 않을 때는 사람들이 이 이미지에 대한 feature를 임의적으로 input파일에 넣어주었다. 하지만 deep learning을 이용해서 feature를 사람이 아닌 컴퓨터가 자동적으로 생성하고 또 선택하도록 두니 더 성능이 높아진 것이다.

우리는 다음 포스팅에서 feature selection의 여러 방법에 대해서 다뤄볼 것이다.
또한 모델을 구축하고 평가하는 방법들에 대해서도 다뤄볼 것이다.
배워야 할건 많지만, 원리를 이해한다면 아주 쉽다! 
그럼 다음 포스팅에서 만나도록 하자 ^^