사용자 도구

사이트 도구


wiki:miscellaneous:핸즈_온_머신러닝_hands-on_machine_learning_with_scikit-learn_keras_tensorflow

핸즈 온 머신러닝

  • 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.학습하는 동안의 감독 형태나 정보량에 따른 분류


8-)지도 학습 [supervised learning, 슈퍼바이즈드 러닝] : 알고리즘에 주입하는 훈련 데이터에 레이블(label)이라는 원하는 답이 포함된다.


  • 분류[classification, 클래시피케이션] : 전형적인 지도학습으로, 스팸 필터가 좋은 예제입니다. 많은 메일 샘플과 소속 정보(스팸인지 아닌지)로 훈련되어야 하며 어떻게 새 메일을 분류할 지 학습해야 합니다.
  • 회귀[regression, 리그래션] : 예측 변수{predictor variable, 프리딕터 베리어블]라 부르는 특성[feature, 피처](ex.주행거리, 연식, 브랜드 등)을 사용해 중고차 가격 같은 타겟(target) 수치를 예측하는 것입니다. 시스템을 훈련하려면 예측변수와 레이블(중고차 가격)이 포함된 중고차 데이터가 많이 필요합니다.
    • 프랜시스 골턴[Sir Francis Galton, 1822~1911)이 키가 큰 사람의 아이가 부모보다 키가 작은 경향이 있다는 사실을 연구하면서 소개한 통계학 용어입니다. 부모보다 아이가 더 작기 때문에 평균으로 회귀한다고 불렀습니다. 그 후 프랜시스가 두 변수 사이의 상관관계를 분석하기 위해 사용한 방법에 이 이름을 붙였습니다.



8-)비지도 학습 [unsupervised learning, 언슈퍼바이즈드 러닝] : 훈련 데이터에 레이블이 없고, 시스템이 아무런 도움없이 학습해야 합니다.


  • 계층 군집 분석[hierarchical clustering analysis, 하이어롸키클 클러스터링 어낼러시스] : 하향식(top-down) 분할군집[divisive clustering, 디바이시브 클러스터링]. 알로리즘 스스로 데이터간의 연결고리를 찾아 대상 그룹을 세분화할 수 있습니다.
  • 시각화 [visualization, 비주얼리제이션] : 레이블이 없는 대규모의 고차원 데이터를 넣으면 도식화가 가능한 2D나 3D 표현을 만들어주는 알고리즘으로 가능한 한 구조를 그댈호 유지하려 하므로 데이터가 어떻게 조직되어 있는지 이해할 수 있고, 예상하지 못한 패턴을 발견할 수도 있습니다.
    • 차원 축소[dimensionality reduction 디맨션낼러티 리덕션] : 상관관계가 있는 여러 특성을 하나로 합치는 것.
      • 차원축소 알고리즘으로 하나의 특성으로 합치는 것을 특성 추출[feature extraction, 피쳐 익스트렉션]이라고 합니다.
  • 이상치 탐지 [outlier detection, 아웃라이어 디텍션] : 예를 들어 부정거래를 막기 휘해 이상한 신용카드 거래를 감지하고, 제조 결함을 잡아내고, 학습 알고리즘에 주입하기 전에 데이터셋에서 이상한 값을 자동으로 제거하는 것 등입니다. 시스템은 훈련하는 동안 대부분 정상 샘플을 만나 이를 인식하도록 훈련됩니다. 그다음 새로운 샘픙을 보고 정상 데이터인지 혹은 이상치인지 판단합니다.
    • 특이치 탐지 [novelty detection, 나블티 디텍션] : 훈련 세트에 있는 모든 샘플과 달라 보이는 새로운 샘플을 탐지하는 것이 목적이며, 알로기즘으로 감지하고 싶은 모든 샘플을 제거한 매우 '깨끗한'훈련 세트가 필요합니다.
  • 연관 규칙 학습 [association rule learning, 어쏘시에이션 룰 러닝 ] : 대량의 데이터에서 특성 간의 흥미로운 관계를 찾습니다.



8-)준지도 학습 [semisupervised learning, 세미슈퍼바이즈드 러닝] : 일부만 레이블이 있는 데이터를 다룰 수 있습니다.


  • 대부분의 준지도 학습 알고리즘은 지도 학습과 비지도 학습의 조합으로 이루어져 있습니다. 예을 들어 심층 신뢰 신경망(DBN, deep belief network, 딥 빌리프 네트워크]은 여러 겹으로 쌓은 제한된 볼츠만 머신[RBM, restricted Boltzmann machine, 리스트릭티드]이라 불리는 비지도 학습에 기초합니다. RBM이 비지도 학습 방식으로 순차적으로 훈련된 다음 전체 시스템이 지도 학습 방식으로 세밀하게 조정됩니다.



8-)강화 학습 [ reinforcement learning, 리인포스먼트 러닝 ]


  • 학습하는 시스템을 에이전트라고 부르며, 환경을 관찰해서 행동을 실행하고 그 결과로 보상(reward) 또는 부정적인 보상에 해당하는 벌점(penalty)을 받습니다. 시간이 지나면서 가장 큰 보상을 얻기 위해 정책(policy)이라고 부르는 최상의 전략을 스스로 학습합니다. 정책은 주어진 상황에서 에이전트가 어던 행동을 선택해야 할지 정의합니다.



2.입력 데이터의 스트림(stream)부터 점진적으로 학습할 수 있는지의 여부에 따른 분류


8-)배치 학습 [batch learning, 배치 러닝] :


  • 시스템이 점진적으로 학습할 수 없어, 가용한 데이터를 모두 사용해 훈련시켜야 합니다. 시간과 자원을 많이 소모하므로 보통 오프라인에서 수행됩니다. 먼저 시스템을 훈련시키고 그런 다음 제품 시스템에 적용하면 더 이상의 학습없이 실행됩니다. 즉, 학습한 것을 단지 적용만 합니다. 이를 오프라인 학습(offline learning)이라고 합니다.
  • 배치 학습 시스템이 새로운 데이터에 대해 학습하려면 이전 데이터도 포함한 새로운 데이터를 포함한 전체 데이터를 사용하여 시스템의 새로운 버전을 처음부터 다시 훈련해야 합니다. 그런 다음 이전 시스템을 중지시키고 새 시스템으로 교체합니다.
  • 방식이 간단하고 잘 작동하지만, 전체 데이터셋을 사용해 훈련하는 데 몇 시간이 소요될 수 있으며, 보통 24시간마다 또는 매주 시스템을 훈련시킵니다.
  • 전체 데이터 셋을 사용해 훈련한다면 많은 컴퓨팅 자원이 필요하며, 데이터 양이 아주 많으면 배치 학습 알고리즘을 사용하는 게 불가능할 수도 있습니다.


8-)온라인 학습(online learning) :


  • 데이터를 순차적으로 한 개씩 또는 미니배치(mini batch)라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킵니다. 매 학습 단계가 빠르고 비용이 적게 들어 시스템은 데이터가 도착하는 대로 즉시 학습할 수 있습니다.
  • 연속적으로 데이터를 받고 빠른 변화에 스스로 적용해야 하는 시스템에 적합합니다. 컴퓨팅 자원이 제한된 경우에도 좋은 선택입니다.
  • 새로운 데이터를 학습하면 학습이 끝난 데이터는 이전 상태로 되돌릴 수 있도록 데이터를 재사용하기 위해 보관할 필요가 없다면 더는 필요하지 않으므로 버릴 수 있어 공간을 절약할 수 있습니다.
  • 컴퓨터 한 대의 메인 메모리에 들어갈 수 없는 아주 큰 데이터셋을 학습하는 시스템에도 온라인 학습 알고리즘을 사용할 수 있습니다.(이를 외부 메모리(out-of-core)학습이라고 합니다.) 알고리즘이 데이터 일부를 읽어 들이고 훈련 단계를 수행합니다. 전체 데이터가 모두 적용될 때까지 이 과정을 반복합니다.
  • 외부 메모리 학습은 보통 오프라인으로 실행됩니다. 즉, 실시간 시스템에서 수행되는 것이 아닙니다. 그래서 온라인 학습이란 이름이 혼란을 줄 수 있으니, 점진적 학습[incremental learning, 인크리멘틀 러닝]이라고 생각합시다.
  • 데이터에 얼마나 빠르게 적응하는지를 의미하는 학습률(learning rate)이 온라인 학습 시스템에서 중요합니다. 학습률에 따라 예전 데이터를 잊어버리거나 혹은 더 느리게 학습하게 됩니다.
  • 가장 큰 문제점은 시스템에 나쁜 데이터가 주입될 경우, 시스템 성능이 점진적으로 감소한다는 것입니다. 이을 예방하기 위해 면밀한 모니터링이 필요합니다.



3. 일반화 방식에 따른 분류

  • 일반화 : 주어진 훈련 데이터로 학습하고 훈련 데이터에서는 본 적 없는 새로운 데이터에서 좋은 예측을 하게 만드는 것.


8-)사례 기반 학습[instance-based learning, 인스턴스 베이스드 러닝] :


  • 시스템이 훈련 샘플을 기억함으로써 학습하고, 유사도 측정[similarity measure, 씨밀래러티 메저]을 사용해 새로운 데이터와 학습한 샘플을 비교하는 식으로 일반화를 합니다.


8-)모델 기반 학습[model-based learning, 모델 베이스드 러닝] :


  • 샘플들의 모델을 만들어 예측[prediction, 프리딕션]에 사용하는 것입니다.
  • 흩어져있는 데이터들에서 어떤 경향을 파악하고 모델 선택[model selection, 모델 셀렉션]을 하여 선형 모델[linear model, 리니어 모델]을 만듭니다.
  • 이 선형 모델은 두 개의 모델 파리미터[model parameter]를 가지며, 이 모델 파라미터를 조정하여 어떤 선형 함수를 표현하는 모델을 얻을 수 있습니다.
  • 이 모델을 사용하여 최상의 성능을 얻기 위한 값을 알기위해 측정 지표를 정해야 합니다.
  • 모델이 얼마나 좋은지 측정하는 효용함수[utility function, 유틸리티 펑션](또는 적합도 함수[fitness function, 피트니스 펑션])를 정의합니다.
  • 또는 모델이 얼마나 나쁜지 측정하는 비용함수[cost function, 코스트 펑션]을 정의합니다.
  • 선형 회귀[linear regression]에서는 보통 선형 모델의 예측과 훈련 데이터 사이의 거리를 재는 비용 함수를 사용하며, 이 거리를 최소화하는 것이 목표입니다.
  • 알고리즘에 훈련 데이터를 공흡하면 데이터에 가장 잘 맞는 선형 모델의 파라미터를 찾고, 이를 모델을 훈련(training)시킨다고 말합니다.


머신러닝의 주요 도전 과제

나쁜 데이터


m(1. 충분하지 않은 양의 훈련 데이터


  • 대부분의 머신러닝 알로리즘이 잘 작동하려면 데이터가 많아야 합니다. 아주 간단한 문제에서조차도 수천 개의 데이터가 필요하고, 이미지나 음성 인식 같은 복잡한 문제라면 수백만 개가 필요할지도 모릅니다.
    • Ref : Peter Norvig et al.“The Unreasonable Effectiveness of Data” IEEE Intelligent Systems 24, no.2 (2009):8-12. https://homl.info/7


m(2. 대표성 없는 훈련 데이터 : 정확한 예측을 유도하지 못하는 훈련 데이터


  • 일반화하려는 사례들을 대표하는 훈련세트를 사용하는 것이 중요하나, 샘플이 작으면 샘플링 잡음[sampling noise, 우연에 의한 대표성 없는 데이터)이 생기고, 매우 큰 샘플도 표본 추출 방법이 잘못되면 대표성을 띠지 못할 수 있는데 이를 샘플링 편향[sampling bias, 샘플링 바이어스]라고 합니다.


m(3. 낮은 품질의 데이터 : 머신러닝 시스템이 내재된 패턴을 찾도록 훈련 데이터 정제에 많은 노력이 필요


  • 일부 샘플이 이상치라는 것이 명확하다면, 그것들을 무시하거나 수동으로 잘못된 것을 고치는 것이 좋습니다.
  • 일부 샘플에 특성 몇 개가 빠져있다면, 이 특성을 모두 무시할지, 이 샘플을 무시할지, 빠진 값을 채울지, 또는 이 특성을 낳은 모델과 제외한 모델을 따로 훈련시킬 것인지 결정해야 합니다.


m(4. 관련 없는 특성 : 시스템이 학습할 수 있도록 특성이 충분한 데이터 사용


  • 특성 공학[feature engineering, 피쳐 엔지니어링] : 훈련에 사용할 좋은 특성들을 찾는 과정
  • 특성 선택[feature selection, 피쳐 셀렉션] : 가지고 있는 특성 중에서 훈련에 가장 유용한 특성을 선택
  • 특성 추출[feature extraction, 피쳐 익스트렉션] : 특성을 결합하여 더 유용한 특성을 만듭니다.
  • 새로운 데이터를 수집해 새로운 특성을 만듭니다.


나쁜 알고리즘


m(1. 훈련 데이터 과대적합[overfitting, 오버피팅]


  • 모델이 훈련 데이터에 너무 잘 맞지만 일반성이 떨어지는 것을 의미합니다.
  • 훈련 세트에 잡음이 많거나 데이터셋이 너무 작으면 (샘플링 잡음이 발생하므로) 잡음이 섞인 패턴을 감지하게 되고, 이런 패턴은 새로운 샘플에 일반화되지 못합니다.
  • 우연히 훈련 데이터에서 찾은 것이지만 이 패턴이 진짜인지 잡음 데이터로 인한 것인지 모델이 구분해낼 방법은 없습니다.
  • 과대적합[overfitting, 오버피팅]은 훈련 데이터에 있는 잡음의 양에 비해 모델이 너무 복잡할 때 일어납니다.
    • 파라미터 수가 적은 모델을 선택하거나(예를 들면 고차원 다항 모델보다 선형 모델), 훈련 데이터에 있는 특성 수를 줄이거나, 모델에 제약을 가하여 단순화시킵니다.
    • 훈련 데이터를 더 많이 모읍니다.
    • 훈련 데이터의 잡음을 줄입니다.(예를 들어, 오류 데이터 수정과 이상치 제거)
  • 규제[regularization, 레귤러리제이션] : 모델을 단순하게 하고 과대적합의 위험을 감소하기 위해 모델에 제약을 가하는 것으로, 과대적합의 위험을 감소시킵니다.
  • 데이터에 완벽히 맞추는 것과 일반화를 위해 단순한 모델을 유지하는 것 사이의 올바른 균형을 찾는 것이 중요합니다.
    • 하이퍼파라미터[hyperparameter] : 학습 알고리즘의 파라미터로서 학습하는 동안 적용할 규제의 양을 결정하므로, 머신러닝 시스템 구축 시 하이퍼파라미터 튜닝이 매우 중요합니다.


m(2. 훈련 데이터 과소적합[underfitting, 언더피팅]


  • 모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못할 때 발생합니다.
    • 모델 파라미터가 더 많은 강력한 모델을 선택합니다.
    • 학습 알고리즘에 더 좋은 특성을 제공합니다(특성공학).
    • 모델의 제약을 줄입니다(예을 들면 규제 하이퍼파라미터를 감소시킵니다)



테스트와 검증

/volume1/web/dokuwiki/data/pages/wiki/miscellaneous/핸즈_온_머신러닝_hands-on_machine_learning_with_scikit-learn_keras_tensorflow.txt · 마지막으로 수정됨: 2023/01/13 18:44 (바깥 편집)