Hands-On Machine Learning with Scikit-Learn & TensorFlow 책을 읽고 공부하면서 내용을 요약하고 정리한 것입니다.

1.1 머신 러닝이란?

어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정했을 때 경험E로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업 T와 성능 측정 P에 대해 경험 E로 학습한 것이다.

                                     - 톰 미첼(Tom Mitchell, 1997)

위키백과 문서를 모두 내려받는 것 -> 많은 데이터를 갖게 되는 것 : 머신 러닝 X

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

  • 기존 솔루션으로는 많은 수동 조정과 규칙이 필요한 문제 : 하나의 머신러닝 모델이 코드를 간단하고 더 잘 수행되도록 할 수 있습니다.
  • 전통적인 방식으로는 전혀 해결 방법이 없는 복잡한 문제 : 가장 뛰어난 머신러닝 기법으로 해결 방법을 찾을 수 있습니다.
  • 유동적인 환경 : 머신러닝 시스템은 새로운 데이터에 적응할 수 있습니다.
  • 복잡한 문제와 대량의 데이터에서 통찰 얻기

1.3 머신러닝 시스템의 종류

  • 사람의 감독 하에 훈련하는 것인지 그렇지 않은 것인지(지도, 비지도, 준지도, 강화 학습)
  • 실시간으로 점진적인 학습을 하는지 아닌지(온라인 학습과 배치 학습)
  • 단순하게 알고 있는 데이터 포인트와 새 데이터 포인트를 비교하는 것인지 아니면 훈련 데이터셋에서 과학자들처럼 패턴을 발견하여 예측 모델을 만드는지(사례 기반 학습과 모델 기반 학습)

-> 서로 배타적이지 않으며 연결 가능

1.3.1 지도 학습과 비지도 학습

학습하는 동안의 감독 형태나 정보량’에 따라 분류

지도학습(supervised learning)

-> 훈련데이터에 레이블 포함

  • 회귀(regression) : 예측 변수predictor variable라 부르는 특성featrue(주행거리, 연식, 브랜드 등)을 사용해 중고차 가격 같은 타깃 수치를 예측하는 것
  • 분류 (Classification) : 전형적 지도 학습

가장 중요한 지도 학습 알고리즘

  • k-최근접 이웃 k-Nearest Neighbors
  • 선형 회귀 Linear Regression
  • 로지스틱 회귀 Logistic Regression
  • 서포트 벡터 머신 Support Vector Machines(SVM)
  • 결정 트리 Decision Tree와 랜덤 포레스트 Random Forests
  • 신경망 Neural networks

비지도 학습(unsupervised learning)

-> 훈련데이터에 레이블 미포함

가장 중요한 비지도 학습 알고리즘

  • 군집 clustering
    • k-평균k-Means
    • 계층 군집 분석Hierarchical Cluster Analysis(HCA)
    • 기댓값 최대화Expectation Maximization
  • 시각화visualization와 차원 축소dimensionality reduction
    • 주성분 분석Principal Component Analysis(PCA)
    • 커널kernelPCA
    • 지역적 선형 임베딩Locally-Linear Embedding(LLE)
    • t-SNEt-distributed Stochastic Neighbor Embedding
  • 연관 규칙 학습Assiociation rule learning
    • 어프라이어리Apriori
    • 이클렛Eclat

시각화visualization알고리즘 : 도식화 가능한 2D나 3D 표현 , 가능한 구조 유지
차원 축소dimensionality reduction : 상관관계가 있는 여러 특성을 하나로 합치는 것 ex) 주행거리, 연식 -> 차의 마모 (특성 추출)
이상치 탐지anomaly detection : 학습 알고리즘 주입 전 데이터셋에 이상한 값을 자동으로 제거
연관 규칙 학습association rule learning : 대량의 데이터에서 특성 간의 흥미로운 관계

준지도 학습semisupervised learning

레이블이 일부만 존재

강화 학습Reinforcement Learning

학습하는 시스템을 에이전트, 환경을 관찰해서 행동을 실행하고 보상 또는 벌점을 받습니다. 가장 큰 보상을 얻기 위해 정책policdy이라 부르는최상 전략을 스스로 학습합니다.

1.3.2 배치 학습과 온라인 학습

입력 데이터의 스트림stream으로부터 점진적으로 학습할 수 있는 여부

배치 학습batch learning

  • 가용한 데이터를 모두 사용해 훈련
  • 제품 시스템에 적용하면 더 이상의 학습없이 실행
  • 많은 컴퓨팅 자원 필요(CPU, 메모리 공간, 디스크 공간, 디스크 IO, 네트워크 IO 등)
  • 자원이 제한된 시스템(예 - 스마트폰, 화성 탐사 로버)이 스스로 학습해야 할 때 많은 자원 사용하면 심각한 문제

온라인 학습online learning

  • 데이터를 순차적으로 한 개씩 또는 미니배치mini-batch라 부르는 작은 묶음 단위로 주입
  • 빠른 변화에 스스로 적응해야하는 시스템에 적합, 컴퓨팅 자원이 제한된 경우
  • 메인 메모리에 들어갈 수 없는 아주 큰 데이터셋을 학습하는 시스템(외부 메모리out-of-core 학습)
  • 전체 프로세스는 보통 오프라인, 따라서 점진적 학습incremental learning으로 생각
  • 학습률learning rate : 변화는 데이터에 얼마나 빠르게 적응할 것

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

어떻게 일반화되는가에 따라 분류

사례 기반 학습instance-based learning

  • 유사도similarity를 측정하여 새로운 데이터를 일반화

모델 기반 학습model-based learning

  • 모델을 만들어 예측에 사용
    • 데이터를 분석
    • 모델 선택
    • 훈련 데이터로 모델 훈련(비용 함수cost function 최소화 하는 모델 파라미터 탐색)
    • 새로운 데이터에 모델을 적용해 예측, 잘 일반화되길 기대

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

문제점

  1. 나쁜 알고리즘
  2. 나쁜 데이터

1.4.1 충분하지 않은 양의 훈련 데이터

1.4.2 대표성 없는 훈련 데이터

  • 샘플이 작으면 샘플링 잡음sampling noise(즉, 우연에 의한 대표성 없는 데이터)
  • 샘플이 큰 경우도 추출 방법이 잘못된 경우 샘플링 편향sampling bias

1.4.3 낮은 품질의 데이터

  • 에러, 이상치outlier, 잡음
  • 이상치가 명확하면 무시하거나 수동으로 잘못된 것을 고침
  • 일부 특성 중 데이터가 누락된 경우 특성을 무시할지, 샘플을 무시할지, 빠진값을 채울지, 특성을 넣은 모델과 제외한 모델을 따로 훈련 시킬것인지 결정

1.4.4 관련 없는 특성

  • 특성 공학feature engineering : 훈련에 사용할 좋은 특성들을 찾는 것
    • 특성 선택feature selection : 가지고 있는 특성 중에서 훈련에 가장 유용한 특성을 선택
    • 특성 추출feature extraction : 특성을 결합하여 더 유용한 특성을 만듬(차원 축소 알고리즘)
    • 새 특성을 만듬

1.4.5 훈련 데이터 과대적합

  • 과대적합overfitting : 모델이 훈련 데이터에 너무 잘 맞지만 일반성이 떨어짐
    • 훈련 데이터에 있는 잡음의 양에 비해 모델이 너무 복잡할 때 발생
    • 파라미터 수가 적은 모델 선택, 훈련데이터에 특성수를 줄임, 모델에 제약을 가하여 단순화(하이퍼파라미터hyperparameter : 학습하는 동안 적용할 규제의 양, 학습 알고리즘의 파라미터)
    • 훈련 데이터를 더 많이 모음
    • 훈련 데이터의 잡음을 줄임

1.4.6 훈련 데이터 과소적합

  • 과소적합underfitting : 모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못할 때
    • 파라미터가 더 많은 강력한 모델 선택
    • 더 좋은 특성 제공(특성 엔지니어링)
    • 모델의 제약을 줄임( 규제 하이퍼파라미터를 감소)

1.5 테스트와 검증

  • 훈련 세트테스트 세트 로 나누어 훈련
    • 일반화 오차generalization error(외부 샘플 오차out-of-sample erro) : 새로운 샘플에 대한 오류 비율
    • 훈련 오차가 낮지만 일반화 오차가 높다면 과대 적합
  • 검증 세트validation set
    • 교차 검증cross-validation 기법