머신러닝 시작하기

vivi·2020년 10월 18일
0

machine-learning-A-to-Z

목록 보기
1/3

앞으로 몇 차례에 걸쳐 머신러닝에 대해 알아가는 시간을 가지려고 한다.

먼저 이번 시리즈에서는 머신러닝의 핵심. 프로젝트를 진행하기에 앞서 머신러닝과 모델의 개념 그리고 머신러닝을 왜 하는지에 대해 알아보려고 한다.

우리는 배움을 통해 새로운 지식을 얻는다. 그리고 이 능동적인 배움의 과정학습이라고 표현한다. 사람과 달리 기계는 스스로 학습할 수 없다(자기 지도 학습이나 강화 학습과 같은 획기적인 알고리즘의 등장으로 모델이 원시 데이터를 활용해 스스로 좋은 특성을 추출하는 법을 배우고 적용하는 시대가 도래했지만 이 글에서는 일단 제외하겠다). 그래서 사람이 기계를 학습시켜 사용하는 것이다. 이것이 곧 머신러닝의 목적이다.



머신러닝은 데이터를 통해 모델을 만들어 문제를 해결하는 것이라고 정의할 수 있다. 다르게 표현하면 데이터로부터 학습하도록 컴퓨터를 프로그래밍하는 것이다. 따라서 머신러닝에서 주목할 점은 데이터와 알고리즘이다. 좋은 모델을 만들어야 문제를 잘 해결할 수 있는데 좋은 모델을 만들기 위해서는 양질의 데이터와 우수한 알고리즘이 필수이기 때문이다.

여기서 좋은 모델은 무엇일까? 모델의 개념을 간단하게 정리하면 변수간의 관계를 수학적(식)으로 표현한 것이다. 이를 컴퓨터 공학적으로 표현하면 머신러닝 모델이란 특정한 유형의 패턴을 인식할 수 있도록 학습된 파일이다. 그럼 좋은 모델, 즉 성능 좋은 모델은 어떻게 만들 수 있을까? 기본적으로 데이터가 많을수록 기계를 보다 잘 학습시킬 수 있다. 하지만 단순히 데이터가 많아서 많이 학습시킨다고 좋은 모델의 역할을 할 수 있는 것은 아니다.

예를 들어, 많은 데이터로 학습이 된 모델이 있다고 하자. 이를 새로운 데이터를 입력해 문제를 풀어보라고 했을 때 항상 좋은 결과를 낼 수 있을까? 학습을 통해 만들어진 모델은 학습 데이터에서 좋은 성능을 발휘하고 기존에 관측된 적이 없는 새로운 데이터가 입력될 경우 좋은 성능을 발휘하지 못할 수 있다. 이처럼 학습 데이터에서 좋은 성능을 내지만 일반성이 떨어지는 경우 Overfitting이라고 표현한다. 머신러닝에서 이런 문제는 데이터의 잡음(noise, 실제 입력되지 않았지만 입력되었다고 잘못 판단한 값)이 모델에 학습되었거나 예측할 때 필요한 요소가 아닌 다른 요소들까지 학습되어 발생한다. 반대로 Underfitting이란 모델의 성능이 학습 데이터에서도 좋지 않은 경우다. 데이터의 수가 충분해도 특성을 추출하는 방법이 잘못되어 대표성을 띄지 못할 때(샘플링 편향(sampling bias)이라고 함) 일어날 수 있는 문제이다. 보통 언더피팅이 일어나면 모델이 해당 문제에 적합하지 않다 여기고 새로운 모델을 찾아봐야 한다.

이처럼 모델은 입력되는 데이터에 따라 그 성능이 결정된다. 따라서 머신러닝 모델링의 핵심 요소는 데이터에서 학습에 사용할 적절한 특성을 찾는 것이다. 이 과정을 Feature Engineering(특성 공학)이라고 한다.

Feature Engineering에서는 다음과 같은 작업들을 한다.

Feature Selection(특성 선택)
데이터에 있는 특성 중에서 학습에 필요한 특성을 선택하는 것

Feature Extraction(특성 추출)
데이터에 있는 특성들을 조합/결합하여 새로운 특성을 만드는 것


학습에 사용할 적절한 특성을 찾았다면 모델을 만들기 위해 학습 알고리즘을 선택해야 한다. 학습 알고리즘은 해결하고자 하는 문제의 성격에 따라 선택할 수 있다. 학습에는 크게 지도 학습, 비지도 학습 등이 있다.

다음은 대표적인 학습 알고리즘이다.

1. 지도 학습

  • 선형 회귀(Linear Regression)
  • 로지스틱 회귀(Logistic Regression)
  • 결정 트리(Decision Tree)와 랜덤 포레스트(Random Forests)

2. 비지도 학습

  • 군집(Clustering)
    - k-평균(k-Means)
    - 계층 군집 분석(Hierarchical Clustering Analyses, HCA)

  • 차원 축소(Demensionality reduction)
    - 주성분 분석(PCA)

위에서도 이미 언급했지만 학습 알고리즘은 풀고자 하는 문제에 따라 적절히 선택해서 사용하면 된다. 소개된 알고리즘 외에도 학습 방법과 그에 따른 알고리즘이 다양하게 존재하니 필요에 따라 찾아보고 공부하면 머신러닝에 대한 이해도가 더 높아질 것이다.


이제 모델링을 위한 기본적인 개념을 익혔으니 코드를 통해 머신러닝 프로젝트의 전반적인 작업 흐름을 살펴볼 차례이다. 가능하다면 프로젝트 과정에서 만날 수 있는 1) 문제점을 해결하는 방법도 찾아보고 2) 모델에 대한 평가도 하고 나아가 3) 성능 개선을 위해 모델을 튜닝하는 방법에 대해서도 차근차근 알아보자.



References :

profile
기록. 수정. 기억.

0개의 댓글