Hands-On Machine Learning Chapter 1 한눈에 보는 머신러닝

JINU·2021년 9월 16일
0
post-custom-banner

PART 1 머신러닝

CHAPTER 1 한눈에 보는 머신러닝

1.1 머신러닝 이란?

"명시적인 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야" - 아서 새뮤얼

1.2 왜 머신러닝을 사용하는가?

기존 솔루션으로는 많은 수동 조정과 규칙이 필요한 문제에 유용하다. 스팸을 예시로 들었을 때, 전통적인 기법으로는 이를 유지보수하고 지속적으로 업데이트 해야하지만, 머신러닝 기법에 기반을 둔 필터는 일반 메일에 비해 스팸에 자주 나타나는 패턴을 감지하여 어떤 단어와 구절이 스팸 메일을 판단하는 데 좋은 기준인지 자동으로 학습한다. 이렇게 한다면 프로그램이 훨씬 짧아지고 유지 보수하기 쉬우며, 대부분 정확도가 더 높다.

머신러닝이 유용한 또 다른 분야는 전통적인 방식으로는 너무 복잡하거나 알려진 알고리즘이 없는 문제. 예를 들어 음성 인식 분야가 있다.

우리는 머신러닝 알고리즘이 학습한 것을 조사하여 배울 수도 있다. 예를 들어 데이터 마이닝 분야가 있는데, 이는 머신러닝 기술을 적용하여 대용량의 데이터를 분석해 겉으로 보이지 않던 패턴을 발견하는 것.

1.3 사례

1.4 머신러닝 시스템의 종류

넓은 범주에서 분류하였을 때 다음과 같이 있다.

- 사람의 감독하에 훈련하는 것인지 그렇지 않은 것인지(지도, 비지도, 준지도, 강화 학습)

- 실시간으로 점진적인 학습을 하는지 아닌지(온라인 학습과 배치 학습)

- 단순하게 알고 있는 데이터 포인트와 새 데이터 포인트를 비교하는 것인지 아니면 과학자들이 하는 것처럼 훈련 데이터셋에서 패턴을 발견하여 예측 모델을 만드는지(사례 기반 학습과 모델 기반 학습)

1.4.1 지도 학습과 비지도 학습

지도 학습(Supervised learning)에는 알고리즘에 주입하는 훈련 데이터에 레이블(Label)이라는 답이 포함되어 있다.
분류(Classification)가 전형적인 지도 학습 작업이며, 그 외에는 예측 변수(Prediction variable)라 부르는 특성(Feature)를 사용해 타겟(Target) 수치를 예측하는 회귀(Regression)가 있다.

지도 학습 알고리즘으로는 다음이 있다.

  • k-최근접 이웃(K-nearest neighbors)
  • 선형 회귀(Linear regression)
  • 로지스틱 회귀(Logistic regression)
  • 서포트 벡터 머신(Support vector machine, SVM)
  • 결정 트리(Decision tree), 랜덤 포레스트(Random forest)
  • 신경망(Neural networks)

비지도 학습(Unsupervised learning)에는 훈련 데이터에 레이블이 없다. 시스템이 아무런 도움 없이 학습해야 한다.

비지도 학습 알고리즘으로는 다음이 있다.

  • 군집(clustering): k-평균, DBSCAN, 계층 군집 분석(Hierarchical cluster analysis), 이상치 탐지 및 특이치 탐지, One-class, Isolation forest
  • 시각화(Visualization)와 차원 축소(Dimension reduction): 특성 추출, 주성분 분석(Principal component analysis, PCA), 커널 PCA, 지역전 선형 임베딩(Locally-linear embedding), t-SNE(t-distributed stochastic neighbor embedding)
  • 연관 규칙 학습(association rule learning): 어프라이어리, 이클렛

준지도 학습에는 데이터 일부분에만 레이블이 존재한다.
EX) 구글 포토 호스팅 서비스. 이 서비스에 가족사진을 올리면 사람A는 사진 1,5,11에 있고, 사진B는 사진 2,5,7에 있다고 자동으로 인식.
대부분의 준지도 학습 알고리즘은 지도 학습과 비지도 학습의 조합으로 이루어져 있다. 심층 신뢰 신경망(Deep belief network)은 여러 겹으로 쌓은 제한된 볼츠만 머신(restricted boltzmann machine(RBM)이라 불리는 비지도 학습에 기초한다.

강화학습은 학습하는 시스템을 에이전트라고 부르며, 환경을 관찰해서 행동을 실행하고, 그 결과로 보상(또는 부정적인 보상에 해당하는 패널티) 부여. 시간이 지나면서 가장 큰 보상을 얻기 위해 정책(Policy)이라고 부르는 최상의 전략을 학습. 정책은 주어진 상황에서 에이전트가어떤 행동을 해야 할지 정의.

1.4.2 배치 학습과 온라인 학습

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

배치 학습
배치 학습(Batch learning)에서는 시스템이 점진적으로 학습할 수 없다. 가용한 데이터를 모두 사용해 훈련시켜야 하는데, 이 방법은 시간과 자원을 많이 소모하여 보통 오프라인에서 수행된다. 먼저 시스템을 훈련시키고 그런 다음 제품 시스템에 적용하면 더 이상의 학습 없이 실행된다. 이를 오프라인 학습(offline learning)이라고 한다.

배치 학습시스템이 새로운 데이터에 대해 학습하려면 전체 데이터를 사용하여 시스템의 새로운 버전을 처음부터 다시 훈련한 후 이전 시스템을 중지시키고 새로운 시스템으로 교체해야 한다. 이에 시스템이 빠르게 변하는 데이터에 적응해야 한다면, 더 능동적인 방법이 필요하다. 또한 전체 데이터셋을 사용하기 위해서는 더 많은 컴퓨팅 자원이 필요하며, 자원이 제한된 시스템이 스스로 학습해야 할 때 많은 양의 훈련 데이터를 나르고 학습을 위해 몇 시간씩 매일 자원을 사용하면 문제가 발생할 수 있기에, 이러한 경우는 점진적으로 학습할 수 있는 알고리즘을 사용하는 편이 낫다.

온라인 학습
온라인 학습에서는 데이터를 순차적으로 한 개씩 미니배치라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킨다. 매 학습 단계가 빠르고, 비용이 적게 들어 시스템은 데이터가 도착하는 대로 즉시 학습할 수 있다.

이는 연속적으로 데이터를 받고(예를 들어 주식 가격) 빠른 변화에 스스로 적응해야 하는 시스템에 적합하다. 컴퓨팅 자원이 제한된 경우에도 좋은 선택이다. 온라인 학습 시에는 시스템이 새로운 데이터 샘플을 학습하면 학습이 끝난 데이터는 버리면 되며, 이로 인해 많은 공간을 절약할 수 있다.

또한, 컴퓨터 한 대의 메인 메모리에 들어갈 수 없는 아주 큰 데이터셋을 학습하는 시스템에도 온라인 학습 알고리즘을 사용할 수 있다. 이를 외부 메모리(Out-of-core) 학습이라고 한다.

온라인 학습 시스템에서는 학습률(learning rate)가 매우 중요하다. 이는 변화하는 데이터에 얼마나 빠르게 적응할 것인지를 나타내는 Parameter인데, 학습률을 높게 하면 시스템이 데이터에 빠르게 적응하지만, 예전 데이터를 금방 잊어버릴 것이다. 이를 잘 조정해야 한다.

온라인 학습의 단점은 시스템에 나쁜 데이터가 주입되버린다면 성능이 점진적으로 감소한다는 것이다. 이를 위해 시스템을 면밀히 모니터링하고, 성능 감소가 감지되면 즉각 학습을 중지시켜야 하는 방법이나, 입력 테이터를 모니터링하여 비정상 데이터를 잡아내야 한다.

1.4.3 사례 기반 학습과 모델 기반 학습

머신러닝 시스템은 어떻게 일반화(Generalize)되는가에 따라 분류할 수 있다. 대부분의 머신러닝 작업은 예측을 만드는 것으로, 주어진 훈련 데이터로 학습하고, 훈련 데이터에서는 본 적 없는 새로운 데이터에서 좋은 예측을 만들어야 한다는 것. 훈련 데이터에서 우수한 성능을 보이는 것이 다가 아니다.

사례 기반 학습
가장 간단한 형태의 학습으로, 단순히 기억하는 것. 유사도(Similarity)를 측정하여 새로운 데이터와 학습한 샘플을 비교하는 식으로 일반화 하는 것. 이를 사례 기반 학습(Instance-based learning)이라고 한다.

모델 기반 학습
샘플로부터 일반화 시키는 다른 방법은 이 샘플들의 모델을 만들어 예측(Prediction)에 사용하는 것. 이를 모델 기반 학습(model-based learning)이라고 한다. 이는 모델 선택과정을 거쳐 선형 모델 등의 모델을 고르며, 모델 파라미터 등을 조정하게 된다.

이 모델이 어느 정도의 성능을 내는지 측정하려면 모데링 좋은지 측정하는 효용함수(utility function)이나 적합도 함수(fitness function)을 정의하거나, 얼마나 나쁜지 측정하는 비용 함수(cost function)을 정의한다. 이러한 일련의 과정을 거친 후, 마지막으로 새로운 데이터에 모델을 적용해 예측을 하고(이를 추론(Inference)라고 한다), 이 모델이 잘 일반화되기를 기대한다.

1.5 머신러닝의 주요 도전 과제

머신러닝의 주요 작업은 학습 알고리즘을 선택해서 어떤 데이터에 훈련시키는 것. 이때 문제가 되는 것은 나쁜 알고리즘과 나쁜 데이터.

1.5.1 충분하지 않은 양의 데이터

머신러닝 알고리즘이 잘 작동하려면, 데이터가 많아야 한다.

1.5.2 대표성 없는 훈련 데이터

일반화가 잘 되려면 우리가 일반화하기 원하는 새로운 사례를 훈련 데이터가 잘 대표하는 것이 중요하다.

대표성 없는 데이터를 사용한다면, 정확한 예측을 할 수 없게 된다. 일반화하려는 사례들을 대표하는 훈련 세트를 사용하는 것이 매우 중요하지만, 이때 샘플이 작으면 샘플링 잡음(Sampling noise, 우연에 의한 대표성 없는 데이터)나 매우 큰 샘플도 표본 추출 방법이 잘못되었을 경우 대표성을 띄지 못하는 샘플링 편향(Sampling bias)가 발생할 수 있습니다.

1.5.3 낮은 품질의 데이터

훈련 데이터가 에러, 이상치 잡음으로 가득하다면, 머신러닝 시스템이 내재된 패턴을 찾기 어려워 잘 작동하지 않을 것. 이에 데이터 정제 필요한 경우 많다. 다음과 같은 경우에 데이터 정제가 필요하다.

  • 일부 샘플이 이상치라는 게 명확하면 간단히 그것들을 무시하거나 수동으로 수정할 필요가 있다.
  • 일부 샘플에 특성 몇 개가 빠져있다면, 이 특성을 모두 무시할지, 이 샘플만 무시할지, 빠진 값을 채울지(평균 등으로), 또는 이 특성을 넣은 모델과 제외한 모델을 따로 훈련시킬지 등을 고려해야 한다.

1.5.4 관련 없는 특성

훈련 데이터에 관련이 없는 특성이 적으면서 관련 있는 특성이 충분한 데이터를 이용해 학습해야 한다. 특성공학(Feature engineering)이라 불리며 다음과 같은 작업을 한다.

  • 특성 선택(Feature selection): 가지고 있는 특성 중, 가장 유용한 특성 선택
  • 특성 추출(Feature extraction): 특성을 결합하여 더 유용한 특성을 만든다. 앞 서 본것처럼 차원 축소 알고리즘이 도움이 될 수 있다.
    새로운 데이터를 수집해 새 특성 만든다.

1.5.5 훈련 데이터 과대적합

무언가를 일반화 시키는 것. 머신러닝에서는 이를 과대적합(Overfitting)이라고 한다. 모델이 훈련 데이터에 너무 잘 맞지만 일반성이 떨어지는 경우를 말한다.

모델을 단순하게 하고, 과대적합의 위험을 감소시키기 위해 모델에 제약을 가하는 것을 규제(Regularization)이라고 하는데, 모델의 Parameter의 자유도를 조정하는 방법 등으로 이루어진다. 데이터를 완벽히 맞추는 것과 일반화를 위해 단순한 모델을 유지하는 것 사이의 올바른 균형을 찾는 것이 중요하다. 이때, 규제의 양은 하이퍼 파라미터(Hyper parameter)가 결정한다. 이는 학습 알고리즘의 파라미터로, 학습 알고리즘으로부터 영향을 받지 않으며, 훈련 전에 미리 지정되고, 훈련하는 동안에는 상수로 남아 있는 것을 말한다. 하이퍼 파라미터 튜닝역시 매우 중요한 과정이다.

1.5.6 훈련 데이터 과소적합

과대적합의 반대. 모델이 너무 단순하여 데이터의 내재된 구조를 학습하지 못할 때 발생. 이를 해결하기 위해서는 다음과 같은 방법을 선택해야 한다.

  • 모델 파라미터가 더 강력한 모델 선택
  • 학습 알고리즘에 더 좋은 특성 제공(특성 공학)
  • 모델의 제약을 줄인다

1.5.7 한걸음 물러서서

모델을 학습시켰다 해서 새로운 샘플에 일반화되기만을 바라기만 해서는 안된다. 모델을 평가하고 필요하면 상세하게 튜닝해야 한다.

1.6 테스트와 검증

모델이 새로운 샘플에 얼마나 잘 일반화될지 아는 유일한 방법은 새로운 샘플에 실제로 적용해 보는 것. 이를 위해 보통 훈련 데이터를 훈련 세트(Training set)와 테스트 세트(Test set) 두 개로 나누는 것. 새로운 샘플에 대한 오류 비율을 일반화 오차(Generalization error) 또는 외부 샘플 오차(out-of-sample error)라고 한다. 이때, 훈련 오차가 낮지만(즉, 훈련 세트에서 모델의 오차가 적음) 일반화 오차가 높다면 이는 모델이 훈련 데이터에 과적합 되었다는 것.

1.6.1 하이퍼파라미터 튜닝과 모델 선택

선형 모델이 더 잘 일반화되었다고 가정하고 과대적합을 피하기 위해 규제를 적용할 때, 하이퍼파라미터를 어떻게 선택해야 할까. 이때 하이퍼 파라미터도 테스트 세트에 최적화 되어 새로운 데이터에 모델을 적용하였을 때 잘 작동하지 않을 수 있다.

post-custom-banner

0개의 댓글