머신 러닝(machine learning)은 데이터를 이해하는 알고리즘의 과학이자 애플리케이션.
이 장에서 머신러닝의 주요 개념, 종류, 관련 용어를 소개하고, 머신 러닝 기술을 실제 문제 해결에 성공적으로 적용할 수 있는 초석을 다진다.
- 머신러닝의 일반적인 개념 이해하기
- 세 종류의 학급과 기본 용어 알아보기
- 성공적인 머신 러닝 시스템을 설계하는 필수 요소 알아보기
- 데이터 분석과 머신 러닝을 위하 파이썬을 설치하고 설정하기
1.1. 데이터를 지식으로 바꾸는 지능적인 시스템 구축
데이터에서 지식을 추출하여 예측하는 자기 학습(Self-learning) 알고리즘과 관련된 인공 지능(Artificial Intelligence, AI)의 하위 분야로 머신러닝이 출현 함.
머신러닝이 데이터에서 더 효율적으로 지식을 추출하여 예측 모델과 데이터 기반의 의사 결정 성능을 점진적으로 향상 시킬 수 있음.
1.2. 머신 러닝의 세가지 종류
지도 학습 | > 레이블된 데이터 > 직접 피드백 > 출력 및 미래 예측 |
비지도 학습 | > 레이블 및 타깃 없음 > 피드백 없음 > 데이터에서 숨겨진 구조 찾기 |
강화 학습 | > 결정 과정 > 보상 시스템 > 연속된 행동에서 학습 |
1.2.1. 지도학습으로 미래 예측
지도학습의 주요 목적은 레이블(Label)된 훈련 데이터에서 모델을 학습하여 본 적 없는 미래 데이터에 대해 예측을 만드는 것.
지도(supervised) : 희망하는 출력 신호(레이블)가 있는 일련의 샘플(데이터 입력)을 의미.
레이블된 훈련 데이터가 머신 러닝 알고리즘에 전달되어 예측 모델을 훈련하고 그 다음 새로운 레이블되지 않은 입력에 대해 예측을 수행.
분류(Classification) : 개별 클래스 레이블이 있는 지도 학습.
회귀(regression) : 연속적인 값을 출력하는 또 다른 종류의 지도 학습.
분류: 클래스 레이블 예측
분류는 지도 학습의 하위 카테고리. 과거의 관측을 기반으로 새로운 샘플의 범주형 클래스 레이블을 예측하는 것이 목적.
클래스 레이블은 이산적(discrete)이고 순서가 없어 샘플이 속한 그룹으로 이해 할 수있음.
회귀: 연속적인 출력 값 예측
회귀 분석은 연속적인 출력 값을 예측함. 예측 변수(predictor variable)와 연속적인 반응 변수(response variable)가 주어졌을 때 출력 값을 예측하기 위해 두 변수 사이의 관계를 찾음.
머신 러닝 분야에서는 예측 변수를 보통 "특성(feature)"이라고 부르며, 반응 변수를 "타깃(target)"이라고 부름.
1.2.2. 강화 학습으로 반응형 문제 해결
강화 학습은 머신러닝의 또 다른 종류이며, 환경과 상호 작용하여 시스템(에이전트(agent)) 성능을 향상하는 것이 목적.
환경의 현재 상태 정보는 보상(reward) 신호를 포함하기 때문에 강화 학습을 지도 학습과 관련된 분야로 생각할 수 있음.
강화 학습의 피드백은 보상 함수로 얼마나 행동이 좋은지를 측정한 값.
에이전트는 환경과 상호 작용하여 보상이 최대화되는 일련의 행동을 강화 학습으로 학습한다.
강화 학습에는 여러 하위 분류가 있음. 일반적인 구조는 강화 학습 에이전트가 환경과 상호 작용하여 보상을 최대화 하는 것.
강화학습은 행동을 수행하고 즉시 얻거나 지연된 패드백을 통해 얻은 전체 보상을 최대화하는 일련의 행동을 학습한다.
1.2.3. 비지도 학습으로 숨겨진 구조 발견
비지도 학습에서는 레이블되지 않거나 구조를 알 수 없는 데이터를 다룸.
비지도 학습 기법을 사용하면 알려진 출력 값이나 보상 함수의 도움을 받지 않고 의미 있는 정보를 추출하기 위해 데이터 구조를 탐색할 수 있음.
군집(Clustering): 서브그룹 찾기
클러스터링은 사전 정보 없이 쌓여 있는 그룹 정보를 의미있는 서브그룹(subgroup) 또는 클러스터(cluster)로 조직하는 탐색적 데이터 분석 기법.
분석 과정에서 만든 각 클러스터는 어느정도 유사성을 공유하고 다른 클러스터와는 비슷하지 않은 샘플 그룹을 형성함.
클러스터링을 비지도 분류(unsupervised classification)이라고 하는 이유.
클러스터링은 정보를 조직화하고 데이터에서 의미 있는 관계를 유도하는 훌륭한 도구.
차원 축소(dimensionality reduction): 데이터 압축
- 비지도 학습의 또 다른 하위 분야. 하나의 관측 샘플에 많은 측정 지표가 있음.
- 머신 러닝 알고리즘의 계산 성능과 저장 공간의 한계에 맞닥뜨릴 수 있음.
- 잡음(noise) 데이터를 제거하기 위해 특성 전처리 단계에서 종종 적용하는 방법.
잡음 데이터는 특정 알고리즘의 예측 성능을 감소시킬 수 있음. - 차원 축소는 관련 있는 정보를 대부분 유지하면서 더 작은 차원을 가진 부분 공간(subspace)으로 데이터를 압축함.
1.3. 기본용어와 표기법 소개
데이터셋의 다양한 측면을 언급할 때 사용하는 일반적인 용어를 다룸.
좀 더 정확하고 효율적으로 소통하기 위한 수학 표기법 소개.
1.3.1. 이 책에서 사용하는 표기법과 규칙
책 참조.
1.3.2. 머신 러닝 용어
훈련 샘플 : 데이터셋을 나타내는 테이블의 행. 동의어로는 관측(observation), 레코드(record), 인스턴스(instance), 예시(example)가 있음.
훈련 : 모델 피팅(fitting), 모수 모델(parametric model)의 경우 파라미터 추정(parameter estimation)과 비슷.
특성(x) : 데이터 테이블이나 데이터 행렬의 열, 동의어로는 예측 변수(preditor variable), 변수, 입력, 속성(attribute), 공변량(covariate)이 있음.
타깃(y) : 동의어로는 결과(outcome), 출력(output), 반응 변수, 종속 변수(dependent variable), (클래스) 레이블(label), 정답(ground truth)이 있음.
손실 함수(loass function) : 종종 비용 함수(cost function)와 동의어로 사용. 일부 자료에서는 손실 함수를 하나의 데이터 포인트에 대해 측정한 손실로 사용, 비용 함수는 전체 데이터셋에 대해 계산한 손실(평균 또는 합)로 사용.
1.4. 머신러닝 시스템 구축 로드맵
1.4.1. 전처리: 데이터 형태 갖추기
많은 머신 러닝 알고리즘에서 최적의 성능을 내려면 선택된 특성이 같은 스케일을 가져야 함.
특성을 [0, 1] 범위로 변환하거나 평균이 0이고 단위 분산을 가진 표준 정규 분포(standard normal distribution)로 변환하는 경우가 많음.
처원 축소 기법을 사용하여 특성을 저차원 부분 공간으로 압축하기도 함. 어떤 경우에는 차원 축소가 모델의 예측 성능을 높이기도 함. 데이터셋에 관련 없는 특성(또는 잡음)이 매우 많은 경우, 즉 신호 대 잡음비(Signal-to-Noise Ratio, SNR)가 낮은 경우.
데이터셋을 랜덤하게 훈련 데이터셋과 테스트 데이터셋으로 나누어야 함.
1.4.2. 예측 모델 훈련과 선택
가장 좋은 모델을 훈련하고 선택하기 위해 최소한 몇 가지 알고리즘을 비교해야 함. 정확도를 비교함.
다양한 교차검증 기법을 사용하여 모델들을 비교하며, 교차 겁증에서는 모델의 일반화 성능을 예측하기 위해 훈련 데이터를 훈련 데이터셋과 검증 데이터셋으로 더 나눈다.
1.4.3. 모델을 평가하고 본 적 없는 샘플로 예측
훈련 데이터셋에서 최적의 모델을 선택한 후에는 테스트 데이터셋을 사용하여 이전에 본 적이 없는 데이터에서 얼마나 성능을 내는지 예측하여 일반화 오차를 예상함.
1.5. 머신 러닝을 위한 파이썬
사이킷런(scikit-learn) 라이브러리로 대부분 머신 러닝 프로그램이 작업을 한다.
후반부의 딥러닝 다룰 때는 텐서플로 사용.
1.5.1. 파이썬과 pip에서 패키지 설치
1.5.2. 아나콘다 파이썬 배포판과 패키지 관리자 사용
https://www.anaconda.com/download/
1.5.3. 과학 컴퓨팅, 데이터 과학, 머신 러닝을 위한 패키지
- Numpy 1.16.1
- Scipy 1.2.1
- Scikit-learn 0.20.2
- Matplotlib 3.0.2
- Pandas 0.24.1
- Tensorflow 2.0.0
1.6. 요약
매우 넓은 시각으로 머신러닝을 봄.