[DataScience] Machine Learning Landscape
in DataScience on Datascience
개요
머신러닝의 기초 개념과 용어를 알아봅니다.
머신러닝은 명시적인 프로그래밍 없이 컴퓨터가 데이터에서부터 스스로 학습하는 능력을 갖추게 하는 것입니다. 시스템은 훈련 사례들로 구성된 훈련 세트를 사용하여 학습하고, 정확도 등으로 표현되는 성능을 평가받습니다.
머신러닝을 사용한 스팸 필터는 스팸에 쓰이는 패턴을 감지해서 어떤 단어와 구절이 스팸인지 판단하는 데 좋은 기준인지 자동으로 학습합니다. 훈련만 잘 되어 있으면 이후 새로운 내용이 나타나도 인식 후 자동 분류할 수 있어 유지 보수에 크게 도움이 됩니다. 또, 머신러닝 알고리즘이 학습한 것을 바탕으로 스팸을 예측하는 데 가장 좋은 단어 조합이 어떤 것인지 확인하는 등 머신러닝을 통해 배울 수도 있습니다. 이런 식으로 머신러닝 기술을 적용해 보이지 않던 패턴을 찾는 것을 데이터 마이닝이라고 합니다.
머신러닝은 다음의 경우에 뛰어납니다.
- 많은 수동 조정과 규칙이 필요한 경우
- 전통 방식으로 해결하지 못하는 경우
- 유동적으로 새 데이터가 추가되는 경우
- 복잡한 문제와 대량의 데이터에서 새로운 패턴을 찾는 경우
머신러닝 시스템을 학습하는 동안의 감독 형태나 주어지는 정보량에 따라 분류할 수 있습니다. 지도 학습, 비지도 학습, 준지도 학습, 강화 학습으로 나뉩니다.
지도 학습(supervised learning)에는 알고리즘에 넣는 훈련 데이터에 레이블(label)이라는 원하는 답이 포합됩니다. 분류, 예측 변수(특성)를 사용해 종속 변수 예측(회귀)에 적합합니다. 다음은 중요한 지도 학습 알고리즘들입니다.
- K-최근접 이웃(k-nearest neighbors)
- 선형 회귀(linear regression)
- 로지스틱 회귀(logistic regression)
- 서포트 벡터 머신(support vector machine, svm)
- 결정 트리(decision tree), 랜덤 포레스트(random forest)
- 일부 신경망(neural networks)
비지도 학습(unsupervised learning)은 훈련 데이터에 레이블이 없습니다. 시스템이 알아서 학습합니다. 다음은 중요한 비지도 학습 알고리즘들입니다.
- Clustering
- k-means
- DBSCAN
- hierarchical cluster analysis (HCA)
- outlier detection, novelty detection
- one-class SVM
- isolation forest
- Visualization& Dimensionality reduction
- principal component analysis (PCA)
- kernel PCA
- locally-linear embedding (LLE)
- t-distributed stochastic neighbor embedding
- Association Rule Learning
- A priori
- Eclat
준지도 학습(semisupervised learning)은 일부만 레이블이 있는 데이터를 다룹니다. 지도 학습과 비지도 학습을 섞어서 사용합니다.
강화 학습(reinforcement learning)은 시스템(agent)가 환경을 관찰해 행동하고 결과로 보상(reward) 또는 처벌(penalty)을 받고, 가장 큰 보상을 위해 정책(policy)이라 하는 전략(주어진 상황에서의 행동 강령)을 스스로 학습합니다.
머신러닝 시스템을 입력 데이터의 스트림에서 점진적 학습이 가능한지로 구분할 수 있습니다. 배치 학습(batch learning)은 점진적 학습이 불가하고, 모든 데이터로 훈련시켜야 합니다. 학습한 것을 적용만 합니다. 오프라인 학습이라고도 합니다. 자주 훈련시키면 괜찮을 수도 있으나 자원이 제한된 스마트폰 같은 경우 학습 때문에 심각한 성능 저하를 가져올 수 있습니다.
온라인 학습은 데이터를 미니 배치(mini batch)라는 작은 묶음 단위로 넣어 훈련시킵니다. 연속적으로 데이터를 받고 빠른 변화에 스스로 적응해야 할 때 적합하고, 제한된 자원으로도 가능합니다. 학습률을 조정해 변하는 데이터에 얼마나 빨리 적응할지 조정할 수 있습니다. 너무 높으면 적응은 빠르지만 과거 데이터를 잊게 되고, 너무 낮으면 적응이 너무 느립니다. 나쁜 데이터가 들어왔을 때 성능이 점점 감소할 수 있어 모니터링이 필요합니다.
머신러닝 시스템은 어떻게 일반화되는가에 따라 사례 기반과 모델 기반으로 나뉩니다. 사례 기반은 시스템이 훈련 샘플을 기억하여 학습하고, 유사도 측정으로 새 데이터와 학습된 샘플을 비교해 일반화합니다. 모델 기반은 샘플로 모델을 만들고 예측에 사용합니다. 모델 파라미터를 조정하여 모델을 수정할 수 있고, 모델의 성능을 측정하기 위한 효용 함수(적합도 함수)나 비용 함수를 정의합니다. 선형 모델의 경우 예측된 선형 모델과 훈련 데이터 사이 거리를 비용 함수로 나타내고 최소화합니다.
머신러닝에서 주요 작업은 학습 알고리즘을 선택해 어떤 데이터에 훈련시키는 것이니 나쁜 데이터와 나쁜 알고리즘이 문제가 됩니다. 데이터 수가 너무 적거나, 대표성이 없는 편향된 데이터이거나, 데이터에 에러/이상치/잡음이 가득하다거나, 전혀 관련 없는 데이터라면 나쁜 데이터입니다. 과대적합(overfitting), 과소적합(underfitting)은 나쁜 알고리즘이고, 데이터를 학습할 때 하이퍼파라미터(hyperparameter)를 적절히 조정해야 합니다.
참고
Geron, A. (2019). Hands-on machine learning with Scikit-Learn, Keras and TensorFlow: concepts, tools, and techniques to build intelligent systems (2nd ed.). O’Reilly.