Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition

Through a series of recent breakthroughs, deep learning has boosted the entire field of machine learning. Now, even programmers who know close to nothing about this technology can use simple, … - Selection from Hands-On Machine Learning with Scikit-Learn

www.oreilly.com

1. 머신러닝

일반적으로 명시적인 프로그래밍 없이 컴퓨터 스스로 학습하는 능력을 갖추게 하는 연구분야를 말한다. 시스템이 학습하는 데 사용하는 데이터를 훈련 세트(training set)라고 부르고 각 훈련 데이터를 샘플(sample)이라고 부른다. 머신러닝은 훈련 세트를 통해 알고리즘을 학습하여 훈련 데이터(training data)를 얻고 이 훈련 데이터를 기반으로 알고리즘의 성능을 향상시킨다.

머신러닝을 사용하면 문제가 어려워 규칙이 점점 길어지고 복잡해지는 문제에 대해 프로그램을 쉽고 간결하게 정의할 수 있어 유지 보수하기가 쉽고 정확도를 높일 수가 있다. 또한 문제가 너무 복잡해 알려진 알고리즘이 없는 문제에 대해서도 스스로 학습하는 알고리즘을 작성함으로써 문제를 해결할 수 있다. 마지막으로 데이터 마이닝(data mining), 머신러닝 알고리즘이 학습한 훈련 데이터를 기반으로 유용한 상관관계를 발견하여, 미래에 실행 가능한 정보를 추출해 낼 수 있다.

 

 

2. 머신러닝의 종류

1) 지도 학습과 비지도 학습

머신러닝 시스템을 '학습하는 동안의 감독 형태나 정보량'에 따라 분류할 수 있다. 지도 학습, 비지도 학습, 준지도 학습, 강화 학습으로 네 가지의 주요 범주가 있다.

① 지도 학습 (Supervised learning)

지도 학습에는 알고리즘에 주입하는 훈련 데이터에 레이블이라는 원하는 답이 포함되는 경우이다. 분류(classification), 회귀(regression) 등의 문제가 전형적인 지도 학습 작업이다. 분류 문제의 경우 해당 데이터가 어느 데이터에 속하는지를 판별해주는 문제를 말하며, 회귀 문제의 경우 예측 변수라고 부르는 특성(feature)을 이용하여 타깃(target) 수치를 예측하는 작업을 말한다. 일부 회귀 알고리즘은 분류에 사용될 수도 있고, 일부 분류 알고리즘은 회귀에 사용될 수도 있다. 지도 학습 알고리즘에는 다음과 같은 것들이 있다.

  • K-최근접 이웃 (KNN, K-nearest neighbors)
  • 선형 회귀 (linear regression)
  • 로지스틱 회귀 (logistic regression)
  • 서포트 벡터 머신 (SVM, support vector machine)
  • 결정 트리 (decision tree)
  • 랜덤 포레스트 (random forest)
  • 신경망 (NN, neural networks)

 

② 비지도 학습 (Unsupervised learning)

비지도 학습에는 말 그대로 훈련 데이터에 레이블이 없는 경우를 말한다. 시스템이 아무런 도움 없이 학습해야 하며 전체적으로는 여러 사람들이 공유하고 있는 특징으로 그룹을 만드는 군집 알고리즘이 있으나 그 아래 대표적인 알고리즘으로 군집(clustering), 시각화(visualization)와 차원 축소(dimensionality reduction), 연관 규칙 학습(association rule learning) 등이 있다. 시각화 알고리즘은 레이블이 없는 대규모 고차원 데이터를 도식화가 가능한 2D 혹은 3D로 표현하는 것으로 데이터가 어떻게 조직되어 있는지 이해할 수 있다. 차원 축소 알고리즘은 시각화 알고리즘과 비슷한 작업으로 상관관계가 있는 여러 특성을 하나로 합치는 특성 추출(feature extraction) 과정을 통해 데이터를 간소화하는 알고리즘이다. 마지막으로 대량의 데이터에서 특성 간의 흥미로운 관계를 찾는 연관 규칙 학습 알고리즘이 있다.

  • 군집 (Clustering)
    • K-평균 (K-means)
    • DBSCAN
    • 계층 군집 분석 (HCA, hierarchical cluster analysis)
    • 이상치 탐지(outlier detection), 특이치 탐지(novelty detection)
    • 원-클래스 SVM (one-class SVM)
    • 아이솔레이션 포레스트 (isolation forest)
  • 시각화 (Visualization)와 차원 축소(dimensionality reduction)
    • 주성분 분석 (PCA, principal component analysis)
    • 커널 PCA (kernal PCA)
    • 지역적 선형 임베딩 (LLE, locally-linear embedding)
    • t-SNE (t-distributed stochastic neighbor embedding)
  • 연관 규칙 학습(association rule learning)
    • Apriori
    • Eclat

 

③ 준지도 학습 (Semisupervised learning)

데이터에 레이블을 다는 것은 일반적으로 시간과 비용이 많이 들기 때문에 레이블이 없는 샘플이 많고 레이블 된 샘플은 적은 경우가 많다. 어떤 알고리즘은 일부만 레이블이 있는 데이터를 다룰 수 있는데, 이를 준지도 학습이라고 한다.

구글 포토 호스팅 서비스를 좋은 예로 들 수 있다. 이 서비스에 가족사진을 모두 올리면 사람 A는 사진 1, 5, 11에 있고, 사람 B는 2, 5, 7에 있다고 자동으로 인식한다. 이는 비지도 학습(군집)의 결과이다. 이제 시스템에 필요한 것은 이 사람들이 누구인가 하는 정보인데, 사람마다 이름 같은 레이블을 하나만 추가하면 사진에 있는 모든 사람의 이름을 알 수 있고, 편리하게 사진을 찾을 수 있다. 이런 식으로 대부분의 준지도 학습은 지도 학습과 비지도 학습의 조합으로 이루어져 있다.

 

★ ④ 강화 학습 (Reinforcement learning)

강화 학습 알고리즘은 앞서 이야기한 것과 다른 종류의 알고리즘이다. 여기서는 학습하는 시스템을 에이전트(Agent)라고 부르며 환경(environment)을 관찰해서 행동(action)을 실행하고 그 결과로 보상(reward) 혹은 벌점(penalty)을 받는다. 시간이 지나면서 가장 큰 보상을 얻기 위해 주어진 상황에서 에이전트가 어떤 행동을 선택해야 할지 정책(policy)이라고 부르는 최상의 전략을 스스로 학습한다.

 

 

2) 배치 학습과 온라인 학습

머신러닝 시스템을 분류하는 데 사용하는 또 다른 기준은 입력 데이터의 스트림으로부터 점진적으로 학습할 수 있는지에 대한 여부이다.

① 배치 학습 (Batch learning) - 오프라인 학습 (Offline learning)

배치 학습은 시스템이 점진적으로 학습할 수가 없어 가용한 데이터를 모두 사용해 훈련시켜야 한다. 일반적으로 이 방식은 시간과 자원을 많이 소모하므로 보통 오프라인에서 수행되며 먼저 시스템을 훈련시킨 다음 제품 시스템에 적용하면 더 이상의 학습 없이 실행된다. 배치 학습 시스템이 새로운 데이터에 대해 학습하려면 전체 데이터 (이전에 학습시킨 데이터 포함)를 사용하여 시스템의 새로운 버전을 위해 처음부터 다시 훈련해야 한다는 단점이 있다. 따라서 많은 컴퓨팅 자원이 필요하며 자원이 제한된 시스템을 사용하거나 데이터 양이 아주 많으면 배치 학습으로 훈련시킬 수 없다. 이런 경우 점진적으로 학습할 수 있는 알고리즘을 사용한다.

 

② 점진적 학습(Incremental learning) - 온라인 학습 (Online learning)

데이터를 순차적으로 미니 배치(mini-batch)라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킨다. 매 학습 단계가 빠르고 비용이 적게 들어 시스템은 데이터가 도착하는 대로 즉시 학습할 수 있다. 온라인 학습은 연속적으로 데이터를 받고 빠른 변화에 스스로 적응해야 하는 시스템이나 컴퓨팅 자원이 제한된 경우에 사용하기 좋다. 또한 컴퓨터 한 대의 메인 메모리에 들어갈 수 없는 아주 큰 데이터셋을 학습하는 시스템에도 학습 알고리즘을 사용할 수 있다. (이를 외부 메모리, out-of-core 학습이라고 한다. 이때 외부 메모리 학습은 보통 오프라인으로 실행된다.) 다만 온라인 학습은 시스템에 나쁜 데이터가 주입되었을 때 시스템 성능이 점진적으로 감소한다는 단점이 있다. 이를 줄이기 위해 시스템을 면밀히 모니터링하거나 입력 데이터를 모니터링해서 성능 감소가 감지되면 즉각 학습을 중지시키거나 이상치 탐지 알고리즘을 사용해 입력 데이터를 모니터링해서 비정상 데이터를 잡아낼 수 있다.

 

 

3) 사례 기반 학습과 모델 기반 학습

머신러닝 시스템은 어떻게 일반화(generalize)하는가에 따라 분류할 수도 있다. 대부분의 머신러닝 작업은 예측을 만드는 것이다. 이 말은 주어진 훈련 데이터로 학습하고 훈련 데이터에서는 본 적 없는 새로운 데이터에서 좋은 예측을 만들어야 한다는 것이다. 즉, 일반화를 잘해서 새로운 샘플에서도 잘 작동하는 시스템을 만드는 것이 머신러닝 작업의 목표이다. 이 일반화를 위한 두 가지 접근 방법에는 사례 기반 학습과 모델 기반 학습이 있다.

① 사례 기반 학습 (instance-based learning)

사례 기반 학습은 시스템이 훈련 샘플을 기억함으로써 학습을 한 후, 유사도 측정을 통해 새로운 데이터와 학습한 샘플을 비교하는 식으로 일반화하는 방식을 말한다. 해당 메일이 스팸인지 아닌지를 구별해주는 스팸 필터의 경우를 예를 들어보자. 새로 받은 메일과 기존에 스팸으로 분류되었던 메일 사이의 유사도(두 메일에서 공통으로 포함된 단어의 수 등)를 측정하여 유사도가 높으면 스팸으로, 아니면 일반 메일로 분류하는 등의 방식이다.

 

② 모델 기반 학습 (model-based learning)

모델 기반 학습은 이 샘플들의 모델을 만들어 예측에 사용하는 것이다. 여기서 말하는 모델은 앞서 지도 학습과 비지도 학습에서 언급한 모델의 종류(선형 회귀 등)나 완전히 정의된 모델 구조를 말하며 모델 훈련은 훈련 데이터에 가장 잘 맞는 모델 파라미터를 찾기 위해 알고리즘을 실행시키는 것을 말한다. 따라서 샘플들의 모델을 만든다는 것은 이 샘플에 적합한 모델을 선택하고 훈련 데이터를 통해 모델을 학습시킴으로써 해당 샘플에 적응한 모델을 만든다는 것, 즉 일반화 한다는 것을 의미한다.

머신러닝 알고리즘으로 새로운 데이터에서 좋은 예측을 만들기 위해선 우선 데이터를 분석해서 어떤 특징을 가지고 있는지 살펴보아야 한다. 이후 해당 데이터를 분석하고 학습하기에 올바른 모델을 구성한 후, 훈련 데이터로 모델을 훈련시킨다. 이 때 훈련 데이터와 모델간의 오차를 최소화 하기 위한 방향으로 계속해서 모델의 파라미터 값들을 업데이트 한다. 마지막으로 이렇게 훈련된 모델에 새로운 데이터를 대입하여 예측(추론, inference)한다. 이것이 전형적인 머신러닝 프로젝트의 형태이다.

  • 데이터 분석
  • 모델 선택
  • 훈련 데이터로 모델 훈련
  • 새로운 데이터에 모델을 적용해 예측
728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기