chapter 1 - 한눈에 보는 머신러닝

inxnxng·2021년 1월 22일
0

이미지까지 확인하려면 notion을 참고하자.
링크 : https://www.notion.so/bmo29/1-chp-1-6fe62c77bdb2486fad0bdfb45c6ad3db

1.1 머신러닝이란?

  • training set : 훈련 세트
  • training instance : 훈련 사례 (혹은 샘플)
  • 작업 T
  • 경험 E : 훈련 데이터
  • 성능 측정 P : 정확도 (accuracy)

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

새로운 규칙을 영원히 추가하는 방식과 달리 머신러닝 기반으로 소프트웨어를 구현하면 자동으로 인식하고 별도의 작업을 하지 않아도 자동으로 분류한다.

머신러닝이 유용한 분야는 전통적인 방식으로 해결하기 어렵거나 알려진 알고리즘이 없는 문제이다. 예를 들면 음성인식 (speech recognization).

데이터 마이닝 (data mining) : 머신러닝 기술을 적용해서 대용량의 데이터를 분석하면 겉으로 보이지 않던 패턴을 발견할 수 있다.

1.4 머신러닝 시스템의 종류

  • 지도, 비지도, 준지도, 강화 학습 : 사람의 감독하에 훈련 or not
  • 온라인 학습, 배치 학습 : 실시간으로 점진적인 학습 or not
  • 사례 기반 학습, 모델 기반 학습 : 단순하게 알고 있는 데이터 포인트와 새로운 데이터의 비교 or 훈련 데이터 셋에서 패턴 발견 및 예측

1.4.1 지도 학습과 비지도 학습

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

  • 지도 학습 (supervised learning) → 정답이 있는 경우

    • 알고리즘에 주입하는 훈련 데이터에 레이블 (label, == class)이라는 원하는 답을 포함시킨 것
    • 분류 (classification) : like 스팸 필터
      • 로지스틱 회귀 : 클래스에 속할 확률을 출력
    • 회귀 (regression) : 예측 변수 (predictor variable)라 불리는 특성 (feature)을 사용해 결괏값인 target 수치를 예측하는 것.
      • k-최근접 이웃, 선형 회귀, 로지스틱 회귀, 서프토 벡터 머신, 결정 트리와 랜덤 포레스트, 신경망
  • 비지도 학습 (unsupervised learning) → 정답이 없는 경우

    • 훈련 데이터에 레이블이 없어 시스템이 아무런 도움 없이 학습해야 하는 것.
    • 군집 (clustering)
      • k-평균, DBSCAN, HCA, 계층 군집 분석, 이상치 탐지와 특이치 탐지
    • 시각화와 차원 축소 (visualization and dimensionality reduction) : 특성 추출 (feature extraction)
    • 연관 규칙 학습 (association rule learing)
  • 준지도 학습 (semisupervised learning) → 정답이 일부만 있음

    • 일부만 레이블이 있는 데이터를 다룸.
    • 지도 학습과 비지도 학습의 조합으로 이뤄짐.
  • 강화 학습 (reinforcement learnig) → 행동의 보상으로 보정

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

1.4.2 배치 학습과 온라인 학습

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

  • 배치 학습 (batch learning)

    • 시스템이 점진적으로 학습할 수 없다. 가용한 데이터를 모두 사용해 훈련시켜야 하므로 시간과 자원이 많이 소모되어 오프라인에서 수행된다. 학습한 것을 단지 적용만 하는 오프라인 학습 (offline learning)이다.
    • 따라서 새로운 데이터를 학습시키려면 이전 데이터까지 포함하여 전체를 새로운 버전으로 다시 훈련시켜야 한다.
  • 온라인 학습 (online learning)

    • 데이터를 순차적으로 한 개씩 혹은 미니배치 (mini-batch)라 부르는 묶음 단위로 주입하여 훈련시킨다.
    • 제한된 컴퓨팅 자원을 쓰면서 빠르게 적응할 수 있다. 학습이 끝난 데이터는 더 필요로 하지 않아 버려도 된다.
    • 외부 메모리 (out-of-core) 학습을 통해 메모리에 들어가지 않는 아주 큰 데이터 셋을 훈련시킬 수도 있다. 하지만 이는 오프라인으로 실행한다. 점진적 학습의 개념으로 받아드리자.
    • 학습률 (learning rate) : 변화하는 데이터에 얼마나 빠르게 적응할 것인지 결정한다. 높으면 빠르게 적용하지만 이전 데이터를 금방 잊어버리고 낮으면 시스템의 관성이 더 커져서 더 느리게 학습한다. 하지만 새로운 데이터에 있는 잡음이나 대표성 없는 데이터 포인터에는 덜 민감해진다.

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

머신러닝은 어떻게 일반화 (generalization)되는가에 따라 분류할 수 있다.

  • 사례 기반 학습 (instance-based learning) → 단순히 기억하는 것
    • 유사도(similarity) 측정
  • 모델 기반 학습 (model-based learning) → 모델을 만들어 예측하는 것
    • 모델 선택, 선형 모델
    • 모델이 얼마나 좋은지 측정하는 호용 함수(utility func) (또는 적합도 함수(fitness func))를 정의하거나 얼마나 나쁜지 측정하는 비용 함수(cost func)
# 예제 코드
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import sklearn.linear_model

# 데이터 적재
#datapath는 위에서 정의함. thousand 단위에',' 추가한다는 설정까지
oecd_bli = pd.read_csv(datapath + "oecd_bli_2015.csv", thousands=',')
gdp_per_capita = pd.read_csv(datapath + "gdp_per_capita.csv",thousands=',',
			delimiter='\t', encoding='latin1', na_values="n/a")

# 데이터 준비
country_stats = prepare_country_stats(oecd_bli, gdp_per_capita)
X = np.c_[country_stats["GDP per capita"]]
y = np.c_[country_stats["Life satisfaction"]]

# 데이터 시각화
country_stats.plot(kind='scatter', x="GDP per capita", y='Life satisfaction')
plt.show()

# 선형 모델 선택
model = sklearn.linear_model.LinearRegression()

# 모델 훈련
model.fit(X, y)

# 키프로스에 대한 예측
X_new = [[22587]]  # 키프로스 1인당 GDP
print(model.predict(X_new)) # 출력 [[ 5.96242338]]

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

  • 충분하지 않은 양의 훈련 데이터
  • 대표성이 없는 훈련 데이터 : 샘플링 잡음(noise), 샘플링 편향(bias)
  • 낮은 품질의 데이터
  • 관련 없는 특성 : garbage in, garbage out
    • 특성 공학 (feature engineering)을 거쳐 좋은 특성으로 바꿈
  • 훈련 데이터의 과대적합 (overfitting)
    • 규제 (regularization)를 통해 파라미터의 자유도를 부여한다. 규제의 양은 학습 알고리즘으로부터 영향을 받지 않는 hyperparameter가 결정한다.
  • 훈련 데이터의 과소적합 (underfitting)

1.6 테스트와 검증

  • 훈련 세트와 테스트 세트
  • 새로운 샘플에 대한 오류 비율을 일반화 오차 (generalization error) (혹은 외부 샘플 오차 (out-of-sample error))라고 하며 테스트 세트에서 모델을 평가함으로써 이 오차에 대한 추정값 (estimation)을 얻는다.

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

  • 홀드아웃 검증 (holdout validation) : 테스트 세트에 적합하게 최적화되었기 때문에 일반화가 잘 작동하지 않는 문제를 해결할 수 있는 방법.
  • 교차 검증 (cross-validation)

0개의 댓글