목차
1. 데이터 분석
1.1 데이터 사이언스
•
데이터 사이언스란 데이터를 수집하고 분석하여 활용하기 위한 모든 기술의 집합으로, 컴퓨터 사이언스, 수학, 통계학, 머신러닝, 영상 및 신호 처리 등 다양한 학문 분야가 만나는 영역
•
컴퓨터 사이언스는 실제로 데이터를 다루기 위한 필수 기술
•
수학과 통계학은 데이터 분석 모형의 기반에 깔린 핵심적인 개념을 구체화하는 언어
•
머신 러닝은 이러한 분석 결과를 활용하여 지금까지 인간이 해오던 각종 분석과 의사 판단을 대신하고자 하는 노력
1.2 데이터 분석
•
데이터 분석이란 어떤 입력 데이터가 주어졌을 때
1) 입력 데이터간의 관계를 파악하거나
2) 파악된 관계를 사용하여 원하는 출력 데이터를 만들어 내는 과정
•
분석 목적에 따라 예측(prediction), 클러스터링(clustering), 모사(approximation) 등 여러가지 문제 존재
•
예측(prediction): 가장 많이 사용되는 데이터 분석 유형
◦
다양한 형태의 입력 데이터를 주면, 데이터 분석의 결과로 다른 데이터를 출력하는 분석 방법
◦
시간상으로 미래를 예측하는 의미가 아님
시계열 분석에서 시간상 미래를 예측하는 것은 미래예측(forecasting)
◦
내가 모르는 빈 칸을 채우는 작업으로, 조건이 들어갈수록 답의 확률이 높아짐
◦
예측 문제 예시
▪
부동산의 위치, 주거환경, 건축연도 등을 주면 해당 부동산의 가치를 추정한다.
▪
꽃잎의 길이와 너비 등 식물의 외형적 특징을 주면 해당하는 식물의 종을 알아낸다.
▪
얼굴 사진을 주면 해당하는 사람의 이름을 출력한다.
▪
현재 바둑돌의 위치들을 주면 다음 바둑돌의 위치를 지정한다.
•
입력 데이터와 출력 데이터
◦
입력 데이터(input data): 분석의 기반이 되는 데이터로 보통 로 표기
▪
=독립 변수(independent variable), 설명 변수(explanatory variable), 특징(feature)
◦
출력 데이터(output data): 추정하거나 예측하고자 하는 목적 데이터로, 보통 로 표기
▪
= 종속 변수(dependent variable), 카테고리값이면 라벨(label) 또는 클래스(class)
◦
입력 데이터와 출력 데이터를 정확히 파악하는 것은 예측문제를 구체화하는 첫번째 단계로, 예측 성능은 입출력 데이터의 숫자와 종류에 크게 의존하므로 입력 데이터 정의는 문제 해결에 매우 중요한 부분
•
예측 방법론: 규칙기반 방법 vs. 학습기반 방법
◦
규칙기반(rule-based) 방법
▪
어떤 입력이 들어오면 어떤 출력이 나오는지 결정하는 규칙/알고리즘을 사람이 미리 만들어놓는 방법
◦
학습기반(training-based) 또는 데이터기반(data-based) 방법 → 머신러닝
▪
대량의 데이터를 컴퓨터에 보여줌으로써 규칙/알고리즘을 스스로 만들게 하는 방법
•
예측문제의 수학적 표현
◦
함수 를 맞추는 것이 문제 (최대한 비슷한 것을 구하기)
◦
확률을 이용하는 방법도 있음
•
예측할 때 train data에서 정확히 맞추는 것이 아니라 새로운 데이터를 예측을 잘 하는 것이 중요
•
train data의 중요성: 현실의 특성을 잘 반영하는지
2. 머신러닝
2.1 머신러닝이란
•
데이터로부터 학습하도록 컴퓨터를 프로그래밍하는 과학(또는 예술)
◦
"머신러닝은 명시적인 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야다" - 아서 새뮤얼(Arthur Samuel), 1959
◦
"어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정했을 때 경험 E로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업 T와 성능 측정 P에 대해 경험 E로 학습한 것이다." - 톰 미첼(Tom Michell), 1997
•
학습이란, 어떤 작업에서 주어진 성능 지표가 더 나아지는 것을 의미
2.2 머신러닝의 유용성
머신러닝이 유용한 경우
•
기존 솔루션으로는 많은 수동 조정과 규칙이 필요한 문제 → 간단하게, 더 좋은 성능
•
전통적인 방식으로는 명확한 해결책이 없는 복잡한 문제
•
변화하는 환경에 적응하는 시스템을 만드는 경우
•
복잡한 문제와 대량의 데이터에서 통찰을 제공 (e.g. 데이터 마이닝)
3. 머신러닝의 종류
3.1 지도학습과 비지도 학습
1) 지도 학습(supervised learning)
•
지도학습 원리
◦
알고리즘에 주입하는 훈련 데이터에 label, 즉 원하는 답이 포함
▪
학습용 데이터 집합: 입력값과 목푯값을 쌍으로 가지는 샘플 데이터의 집합
◦
컴퓨터는 나름의 방법으로 샘플 데이터를 예측하고 정답과 비교, 방법을 바꾸어보며 이 과정을 반복
◦
주어진 목푯값과 최대한 비슷한 값을 출력하는 예측 방법을 찾아내는 것이 목표
◦
학습데이터를 마련하는 것이 힘들고 중요한 부분이며, 학습데이터가 얼마나 양질로, 많이 있느냐가 성공여부를 좌우
지도학습의 원리
•
지도 학습 예
◦
분류(classification)
◦
회귀(regression): 예측변수(predictor variable)라 부르는 특성(feature)을 사용해 타깃 수치를 예측
•
중요 지도 학습 알고리즘
◦
k-최근접 이웃(k-nearest neighbors)
◦
선형회귀(linear regression)
◦
로지스틱 회귀(logistic regerssion)
◦
서포트 벡터 머신(support vector machine, SVM)
◦
결정트리(dicision tree)와 랜덤 포레스트(random forest)
◦
신경망(neural networks)
2) 비지도 학습(unsupervised learning)
•
훈련 데이터에 레이블이 없이 학습
•
중요 비지도 학습 알고리즘
◦
군집(clustering)
▪
k-평균(k-means)
▪
DBSCAN
▪
계층 군집 분석(hierarchical cluster analysis, HCA): 각 그룹을 더 작은 그룹으로 세분화 가능
▪
이상치 탐지(outlier detection), 특이치 탐지(novelty detection)
▪
원-클래스(one-class SVM)
▪
아이솔레이션 포레스트(isolation forest)
◦
시각화(visualization)와 차원 축소(dimentionality reduction)
▪
주성분 분석(principal component analysis, PCA)
▪
커널(kernel) PCA
▪
지역적 선형 임베딩(locally-linear embedding, LLE)
▪
t-SNE(t-distributed stochastic neighbor embedding)
◦
연관 규칙 학습(asosciation rule learning)
▪
어프라이어리(Apriori)
▪
이클렛(Eclat)
3) 준지도 학습(semisupervised learning)
•
일부만 레이블이 있는 데이터를 다룸
•
대부분 준지도 학습 알고리즘은 지도 학습과 비지도 학습의 조합으로 이루어짐
◦
심층 신뢰 신경망(deep belief network, DBN): 제한된 볼츠만 머신(restricted Boltzmann machine, RBM)이라 불리는 비지도 학습 방식으로 순차적으로 훈련된 다음 전체 시스템이 지도 학습 방식으로 세밀하게 조정
4) 강화 학습(reinforcement learning)
•
에이전트(학습하는 시스템)가 환경(environment)을 관찰해서 행동(action)을 실행하고 그 결과로 보상이나 벌점(reward or penalty)를 받고, 시간이 지나면서 가장 큰 보상을 얻기 위해 정책(policy)라고 부르는 최상의 전략을 스스로 학습
•
바둑 등의 게임을 해결하거나 로봇의 제어 방법 등을 찾는데 많이 사용
3.2 배치 학습과 온라인 학습
1) 배치 학습(batch learning)
•
시스템이 점진적으로 학습할 수 없고, 가용한 데이터를 모두 사용해 훈련시켜야 함
•
오프라인 학습(offline learning)
•
새로운 데이터에 대해 학습하려면 전체 데이터를 사용하여 처음부터 다시 훈련 → 이전 시스템을 중지하고 새 시스템으로 교체
•
많은 컴퓨팅 자원이 필요
2) 온라인 학습(online learning)
•
데이터를 순차적으로 한 개씩 또는 미니배치(mini-batch)라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시키는 점진적 학습 방법
•
매 학습 단계가 빠르고 비용이 적게 듬
•
연속적으로 데이터를 받고 빠른 변화에 스스로 적응해야 하는 시스템에 적합
•
학습률(learning rate): 변화하는 데이터에 얼마나 빠르게 적응하는지 나타내는 파라미터
◦
학습률을 높이면 시스템이 데이터에 빠르게 적응하지만 예전 데이터를 금방 잊어버림
◦
학습률이 낮으면 시스템의 관성이 커져 느리게 학습되고, 새로운 데이터의 잡음 등에 덜 민감해짐
•
시스템에 나쁜 데이터가 주입되었을 때 시스템 성능이 점진적으로 감소할 수 있음
•
외부 메모리 알고리즘을 통해 컴퓨터 주메모리에 들어갈 수 없는 대용량의 데이터를 다룰 수 있음
3.3 사례 기반 학습과 모델 기반 학습
•
머신러닝 시스템은 일반화(generalize)가 잘 되어 새로운 데이터에서 좋은 예측을 만들어야 함
•
일반화를 위한 두 가지 접근법: 사례 기반 학습, 모델 기반 학습
1) 사례 기반 학습(instance-based learning)
•
시스템이 훈련 샘플을 기억함으로써 학습
•
훈련 샘플을 기억하여 학습하고, 새로운 샘플과 유사도 측정을 사용해 비교하는 식으로 일반화
2) 모델 기반 학습(model-based learning)
•
샘플들의 모델을 만들어 예측(prediction)에 사용
•
모델 기반 학습 알고리즘은 새로운 샘플에 잘 일반화되기 위한 모델 파라미터의 최적값을 찾음
전형적인 머신러닝 프로젝트 형태
•
데이터를 분석
•
모델을 선택
•
훈련 데이터로 모델 훈련 (학습 알고리즘이 비용 함수를 최소화하는 모델 파라미터를 찾음)
•
새로운 데이터에 모델을 적용해 예측. 이를 추론(inference)라고 함
4. 머신러닝 주요 도전 과제
4.1 나쁜 데이터의 사례
충분치 않은 양의 훈련 데이터
•
대용량 데이터는 딥러닝 발전의 원동력
•
알고리즘보다 데이터가 더 중요하다는 idea
•
소규모, 중간규모의 데이터셋은 여전히 매우 흔하고, 대량 데이터셋을 모으는 것은 어렵고 비용이 많이 들기 때문에 알고리즘을 무시할 수 없음
대표성 없는 훈련 데이터
•
일반화가 잘 되려면 훈련 데이터가 일반화를 원하는 사례를 잘 대표해야 함
•
샘플링 잡음(sampling noise): 우연에 의한 대표성 없는 데이터, 샘플이 작을 때 발생
•
샘플링 편향(sampling bias): 표본 추출 방법이 잘못되어 샘플이 대표성을 띠지 못함
낮은 품질의 데이터
•
훈련 데이터의 에러, 이상치(outlier), 잡음 등에 데이터 정제가 필요
관련 없는 특성
•
feature engineering: 훈련에 사용할 좋은 특성들을 찾는 것
◦
feature selection: 가지고 있는 특성 중 훈련에 가장 유용한 특성을 선택
◦
feature extraction: 특성을 결합하여 더 유용한 특성을 만듦. (차원 축소 알고리즘)
◦
새로운 데이터로 새 특성을 만듦
4.2 나쁜 알고리즘의 사례
훈련 데이터 과대적합(overfitting)
•
overfitting: 모델이 훈련 데이터에 너무 잘 맞지만 일반성이 떨어짐
•
overfitting은 훈련 데이터의 잡음 양에 비해 모델이 너무 복잡할 때 일어남
•
해결 방법
◦
모델 단순화(간단한 알고리즘을 선택, 특성/파라미터 수를 줄이기, 모델에 제약을 가해 단순화)
◦
훈련 데이터를 더 많이 수집
◦
훈련 데이터의 잡음을 줄이기
•
규제(regularization): 모델을 단순하게 하고 과적합의 위험을 감소시키기 위해 모델에 제약을 가하는 것
◦
데이터에 완벽히 맞추는 것과 일반화를 위해 단순한 모델을 유지하는 것 사이의 올바른 균형을 찾는 것이 좋음
◦
규제의 양은 하이퍼파라미터(hyperparameter)가 결정함
◦
하이퍼파라미터란 (모델이 아니라) 학습 알고리즘의 파라미터로, 학습 알고리즘으로부터 영향을 받지 않으며 훈련 전에 미리 지정되고 훈련 동안 상수로 남아 있음
◦
머신러닝 시스템 구축에서 하이퍼파라미터 튜닝은 매우 중요한 과정!
훈련 데이터 과소적합(underfitting)
•
모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못할 때 발생
•
해결 기법
◦
모델 파라미터가 더 많은 강력한 모델 선택
◦
학습 알고리즘에 더 좋은 특성을 제공
◦
모델의 제약을 줄임(규제 하이퍼파라미터 감소)
5. 테스트와 검증
5.1 테스트 방법
•
훈련 데이터를 train set과 test set으로 나누어 (e.g. 80:20) 각각 train과 test 진행
•
test set 으로 모델을 평가하여, 일반화 오차(generalization error) 또는 외부 샘플 오차(out-of-sample error)에 대한 추정값(estimation)을 얻음
5.2 검증 방법
홀드아웃 검증(holdout validation)
•
train set의 일부를 떼어 검증 세트(validation set)으로 만듦
•
줄어든 훈련세트(전체 train set - validation set)에서 다양한 하이퍼파라미터 값을 가진 여러 모델 훈련
•
validation set에서 가장 높은 성능을 내는 모델 선택
•
선택한 최선의 모델을 전체 훈련세트에서 다시 훈련하여 최종 모델을 만듦
•
마지막으로 최종 모델을 test set에서 평가하여 일반화 오차 추정
교차 검증(cross-validation)
•
test set을 사용해 하이퍼파라미터를 튜닝하면 test set에 과적합될 위험이 있고 일반화 오차를 낙관적으로 측정하게 됨
•
이를 방지하기 위해 작은 검증 세트를 여러 개 사용해 반복적인 검증 수행
•
validation set마다 나머지 데이터에서 훈련한 모델을 해당 validation set에서 평가
•
모든 모델의 평가를 평균하면 훨씬 정확한 성능 측정
•
훈련 시간이 validation set의 개수에 비례해 늘어난다는 단점
훈련-개발 세트(train-dev set)
•
validation set, test set은 실전에서 기대하는 데이터를 가능한한 잘 대표해야 하므로 대표 샘플을 포함시키는 것이 좋음
•
검증시 모델의 성능이 낮은 것이 과적합인지 데이터 불일치 때문인지 알기 어려우므로, 다음과 같이 확인
◦
훈련 데이터의 일부를 떼어내어 train-dev set을 만듦
◦
모델을 train set에서 train하고 train-dev set에서 평가
◦
train-dev set에서 모델이 잘 작동한다면 과적합이 아님, validation set에서 성능이 나쁘다면 문제는 데이터 불일치
→ train data를 데이터 불일치가 해소되도록 전처리 후 다시 train
◦
train-dev set 성능이 낮다면 train set에 과적합
→ 모델을 규제하거나, 더 많은 train data를 모으거나, 데이터 정제 시도
참고자료
•
오렐리앙 제롬 지음, 박해선 옮김, ⟪핸즈온 머신러닝 2/E⟫
•
데이터 사이언스 스쿨 8기 강의 자료, 패스트 캠퍼스