핸즈 온 머신러닝
description : 핸즈 온 머신러닝
author : 오션
email : shlim@repia.com
lastupdate : 2020-07-20
출처
“핸즈 온 머신러닝 사이킷런, 케라스, 텐서플로 2를 활용한 머신러닝, 딥러닝 완벽 실무
(Hands-On Machine Learning with Scikit-Learn Keras & TensorFlow) 2판”
'오렐리앙 제롱 지음/박해선 옮김', 페이지 952, ISBN 9791162242964 한빛미디어 2020년 5월 1일 2판 1쇄
기초 개념과 용어
머신러닝은 데이터에서부터 학습하도록 컴퓨터를 프로그램하는 과학(또는 예술)이다.
머신러닝은 명시적인 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야다 - 아서 새뮤얼(Arthur Samuel, 1959)
머신러닝은 데이터를 이용해서 명시적으로 정의되지 않은 패턴을 컴퓨터로 학습하여 결과를 만들어내는 학문 분야 - “처음 배우는 머신러닝” 김승연, 정용주 지음/한빛미디어 (초판 3쇄 2019.3.10)
어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정했을 때 경험 E로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업 T와 성능 측정 P에 대해 경험 E로 학습한 것이다 - 톰 미첼(Tom Michell. 1997)
시스템이 학습하는 데 사용하는 샘플을 트레이닝 세트[training set, 훈련 세트]라고 하고, 각 훈련 데이터를 훈련 사례[training instance, 트레이닝 인스턴스]라고 한다.
데이터 마이닝[Data Mining] : 머신러닝 기술을 적용해서 대용량의 데이터를 분석하면 겉으로는 보이지 않던 패턴을 발견하는 것을 의미한다.
머신러닝 시스템의 종류
1.학습하는 동안의 감독 형태나 정보량에 따른 분류
지도 학습 [supervised learning, 슈퍼바이즈드 러닝] : 알고리즘에 주입하는 훈련 데이터에 레이블(label)이라는 원하는 답이 포함된다.
분류[classification, 클래시피케이션] : 전형적인 지도학습으로, 스팸 필터가 좋은 예제입니다. 많은 메일 샘플과 소속 정보(스팸인지 아닌지)로 훈련되어야 하며 어떻게 새 메일을 분류할 지 학습해야 합니다.
회귀[regression, 리그래션] : 예측 변수{predictor variable, 프리딕터 베리어블]라 부르는 특성[feature, 피처](ex.주행거리, 연식, 브랜드 등)을 사용해 중고차 가격 같은 타겟(target) 수치를 예측하는 것입니다. 시스템을 훈련하려면 예측변수와 레이블(중고차 가격)이 포함된 중고차 데이터가 많이 필요합니다.
비지도 학습 [unsupervised learning, 언슈퍼바이즈드 러닝] : 훈련 데이터에 레이블이 없고, 시스템이 아무런 도움없이 학습해야 합니다.
계층 군집 분석[hierarchical clustering analysis, 하이어롸키클 클러스터링 어낼러시스] : 하향식(top-down) 분할군집[divisive clustering, 디바이시브 클러스터링]. 알로리즘 스스로 데이터간의 연결고리를 찾아 대상 그룹을 세분화할 수 있습니다.
시각화 [visualization, 비주얼리제이션] : 레이블이 없는 대규모의 고차원 데이터를 넣으면 도식화가 가능한 2D나 3D 표현을 만들어주는 알고리즘으로 가능한 한 구조를 그댈호 유지하려 하므로 데이터가 어떻게 조직되어 있는지 이해할 수 있고, 예상하지 못한 패턴을 발견할 수도 있습니다.
이상치 탐지 [outlier detection, 아웃라이어 디텍션] : 예를 들어 부정거래를 막기 휘해 이상한 신용카드 거래를 감지하고, 제조 결함을 잡아내고, 학습 알고리즘에 주입하기 전에 데이터셋에서 이상한 값을 자동으로 제거하는 것 등입니다. 시스템은 훈련하는 동안 대부분 정상 샘플을 만나 이를 인식하도록 훈련됩니다. 그다음 새로운 샘픙을 보고 정상 데이터인지 혹은 이상치인지 판단합니다.
연관 규칙 학습 [association rule learning, 어쏘시에이션 룰 러닝 ] : 대량의 데이터에서 특성 간의 흥미로운 관계를 찾습니다.
준지도 학습 [semisupervised learning, 세미슈퍼바이즈드 러닝] : 일부만 레이블이 있는 데이터를 다룰 수 있습니다.
대부분의 준지도 학습 알고리즘은 지도 학습과 비지도 학습의 조합으로 이루어져 있습니다. 예을 들어 심층 신뢰 신경망(DBN, deep belief network, 딥 빌리프 네트워크]은 여러 겹으로 쌓은 제한된 볼츠만 머신[RBM, restricted Boltzmann machine, 리스트릭티드]이라 불리는 비지도 학습에 기초합니다. RBM이 비지도 학습 방식으로 순차적으로 훈련된 다음 전체 시스템이 지도 학습 방식으로 세밀하게 조정됩니다.
강화 학습 [ reinforcement learning, 리인포스먼트 러닝 ]
2.입력 데이터의 스트림(stream)부터 점진적으로 학습할 수 있는지의 여부에 따른 분류
배치 학습 [batch learning, 배치 러닝] :
시스템이 점진적으로 학습할 수 없어, 가용한 데이터를 모두 사용해 훈련시켜야 합니다. 시간과 자원을 많이 소모하므로 보통 오프라인에서 수행됩니다. 먼저 시스템을 훈련시키고 그런 다음 제품 시스템에 적용하면 더 이상의 학습없이 실행됩니다. 즉, 학습한 것을 단지 적용만 합니다. 이를 오프라인 학습(offline learning)이라고 합니다.
배치 학습 시스템이 새로운 데이터에 대해 학습하려면 이전 데이터도 포함한 새로운 데이터를 포함한 전체 데이터를 사용하여 시스템의 새로운 버전을 처음부터 다시 훈련해야 합니다. 그런 다음 이전 시스템을 중지시키고 새 시스템으로 교체합니다.
방식이 간단하고 잘 작동하지만, 전체 데이터셋을 사용해 훈련하는 데 몇 시간이 소요될 수 있으며, 보통 24시간마다 또는 매주 시스템을 훈련시킵니다.
전체 데이터 셋을 사용해 훈련한다면 많은 컴퓨팅 자원이 필요하며, 데이터 양이 아주 많으면 배치 학습 알고리즘을 사용하는 게 불가능할 수도 있습니다.
온라인 학습(online learning) :
데이터를 순차적으로 한 개씩 또는 미니배치(mini batch)라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킵니다. 매 학습 단계가 빠르고 비용이 적게 들어 시스템은 데이터가 도착하는 대로 즉시 학습할 수 있습니다.
연속적으로 데이터를 받고 빠른 변화에 스스로 적용해야 하는 시스템에 적합합니다. 컴퓨팅 자원이 제한된 경우에도 좋은 선택입니다.
새로운 데이터를 학습하면 학습이 끝난 데이터는 이전 상태로 되돌릴 수 있도록 데이터를 재사용하기 위해 보관할 필요가 없다면 더는 필요하지 않으므로 버릴 수 있어 공간을 절약할 수 있습니다.
컴퓨터 한 대의 메인 메모리에 들어갈 수 없는 아주 큰 데이터셋을 학습하는 시스템에도 온라인 학습 알고리즘을 사용할 수 있습니다.(이를 외부 메모리(out-of-core)학습이라고 합니다.) 알고리즘이 데이터 일부를 읽어 들이고 훈련 단계를 수행합니다. 전체 데이터가 모두 적용될 때까지 이 과정을 반복합니다.
외부 메모리 학습은 보통 오프라인으로 실행됩니다. 즉, 실시간 시스템에서 수행되는 것이 아닙니다. 그래서 온라인 학습이란 이름이 혼란을 줄 수 있으니, 점진적 학습[incremental learning, 인크리멘틀 러닝]이라고 생각합시다.
데이터에 얼마나 빠르게 적응하는지를 의미하는 학습률(learning rate)이 온라인 학습 시스템에서 중요합니다. 학습률에 따라 예전 데이터를 잊어버리거나 혹은 더 느리게 학습하게 됩니다.
가장 큰 문제점은 시스템에 나쁜 데이터가 주입될 경우, 시스템 성능이 점진적으로 감소한다는 것입니다. 이을 예방하기 위해 면밀한 모니터링이 필요합니다.
3. 일반화 방식에 따른 분류
사례 기반 학습[instance-based learning, 인스턴스 베이스드 러닝] :
모델 기반 학습[model-based learning, 모델 베이스드 러닝] :
샘플들의 모델을 만들어 예측[prediction, 프리딕션]에 사용하는 것입니다.
흩어져있는 데이터들에서 어떤 경향을 파악하고 모델 선택[model selection, 모델 셀렉션]을 하여 선형 모델[linear model, 리니어 모델]을 만듭니다.
이 선형 모델은 두 개의 모델 파리미터[model parameter]를 가지며, 이 모델 파라미터를 조정하여 어떤 선형 함수를 표현하는 모델을 얻을 수 있습니다.
이 모델을 사용하여 최상의 성능을 얻기 위한 값을 알기위해 측정 지표를 정해야 합니다.
모델이 얼마나 좋은지 측정하는 효용함수[utility function, 유틸리티 펑션](또는 적합도 함수[fitness function, 피트니스 펑션])를 정의합니다.
또는 모델이 얼마나 나쁜지 측정하는 비용함수[cost function, 코스트 펑션]을 정의합니다.
선형 회귀[linear regression]에서는 보통 선형 모델의 예측과 훈련 데이터 사이의 거리를 재는 비용 함수를 사용하며, 이 거리를 최소화하는 것이 목표입니다.
알고리즘에 훈련 데이터를 공흡하면 데이터에 가장 잘 맞는 선형 모델의 파라미터를 찾고, 이를 모델을 훈련(training)시킨다고 말합니다.
머신러닝의 주요 도전 과제
나쁜 데이터
1. 충분하지 않은 양의 훈련 데이터
2. 대표성 없는 훈련 데이터 : 정확한 예측을 유도하지 못하는 훈련 데이터
일반화하려는 사례들을 대표하는 훈련세트를 사용하는 것이 중요하나, 샘플이 작으면 샘플링 잡음[sampling noise, 우연에 의한 대표성 없는 데이터)이 생기고, 매우 큰 샘플도 표본 추출 방법이 잘못되면 대표성을 띠지 못할 수 있는데 이를 샘플링 편향[sampling bias, 샘플링 바이어스]라고 합니다.
3. 낮은 품질의 데이터 : 머신러닝 시스템이 내재된 패턴을 찾도록 훈련 데이터 정제에 많은 노력이 필요
일부 샘플이 이상치라는 것이 명확하다면, 그것들을 무시하거나 수동으로 잘못된 것을 고치는 것이 좋습니다.
일부 샘플에 특성 몇 개가 빠져있다면, 이 특성을 모두 무시할지, 이 샘플을 무시할지, 빠진 값을 채울지, 또는 이 특성을 낳은 모델과 제외한 모델을 따로 훈련시킬 것인지 결정해야 합니다.
4. 관련 없는 특성 : 시스템이 학습할 수 있도록 특성이 충분한 데이터 사용
특성 공학[feature engineering, 피쳐 엔지니어링] : 훈련에 사용할 좋은 특성들을 찾는 과정
특성 선택[feature selection, 피쳐 셀렉션] : 가지고 있는 특성 중에서 훈련에 가장 유용한 특성을 선택
특성 추출[feature extraction, 피쳐 익스트렉션] : 특성을 결합하여 더 유용한 특성을 만듭니다.
새로운 데이터를 수집해 새로운 특성을 만듭니다.
나쁜 알고리즘
1. 훈련 데이터 과대적합[overfitting, 오버피팅]
모델이 훈련 데이터에 너무 잘 맞지만 일반성이 떨어지는 것을 의미합니다.
훈련 세트에 잡음이 많거나 데이터셋이 너무 작으면 (샘플링 잡음이 발생하므로) 잡음이 섞인 패턴을 감지하게 되고, 이런 패턴은 새로운 샘플에 일반화되지 못합니다.
우연히 훈련 데이터에서 찾은 것이지만 이 패턴이 진짜인지 잡음 데이터로 인한 것인지 모델이 구분해낼 방법은 없습니다.
과대적합[overfitting, 오버피팅]은 훈련 데이터에 있는 잡음의 양에 비해 모델이 너무 복잡할 때 일어납니다.
파라미터 수가 적은 모델을 선택하거나(예를 들면 고차원 다항 모델보다 선형 모델), 훈련 데이터에 있는 특성 수를 줄이거나, 모델에 제약을 가하여 단순화시킵니다.
훈련 데이터를 더 많이 모읍니다.
훈련 데이터의 잡음을 줄입니다.(예를 들어, 오류 데이터 수정과 이상치 제거)
규제[regularization, 레귤러리제이션] : 모델을 단순하게 하고 과대적합의 위험을 감소하기 위해 모델에 제약을 가하는 것으로, 과대적합의 위험을 감소시킵니다.
데이터에 완벽히 맞추는 것과 일반화를 위해 단순한 모델을 유지하는 것 사이의 올바른 균형을 찾는 것이 중요합니다.
2. 훈련 데이터 과소적합[underfitting, 언더피팅]
테스트와 검증