Search
🤖

ML 00. 데이터 분석 & 머신러닝 Overview

Created at
2021/01/25
Updated at
2021/02/01
Tags
Keywords
ML
3 more properties
목차

1. 데이터 분석

1.1 데이터 사이언스

데이터 사이언스란 데이터를 수집하고 분석하여 활용하기 위한 모든 기술의 집합으로, 컴퓨터 사이언스, 수학, 통계학, 머신러닝, 영상 및 신호 처리 등 다양한 학문 분야가 만나는 영역
컴퓨터 사이언스는 실제로 데이터를 다루기 위한 필수 기술
수학과 통계학은 데이터 분석 모형의 기반에 깔린 핵심적인 개념을 구체화하는 언어
머신 러닝은 이러한 분석 결과를 활용하여 지금까지 인간이 해오던 각종 분석과 의사 판단을 대신하고자 하는 노력

1.2 데이터 분석

데이터 분석이란 어떤 입력 데이터가 주어졌을 때 1) 입력 데이터간의 관계를 파악하거나 2) 파악된 관계를 사용하여 원하는 출력 데이터를 만들어 내는 과정
분석 목적에 따라 예측(prediction), 클러스터링(clustering), 모사(approximation) 등 여러가지 문제 존재
예측(prediction): 가장 많이 사용되는 데이터 분석 유형
다양한 형태의 입력 데이터를 주면, 데이터 분석의 결과로 다른 데이터를 출력하는 분석 방법
시간상으로 미래를 예측하는 의미가 아님 시계열 분석에서 시간상 미래를 예측하는 것은 미래예측(forecasting)
내가 모르는 빈 칸을 채우는 작업으로, 조건이 들어갈수록 답의 확률이 높아짐
예측 문제 예시
부동산의 위치, 주거환경, 건축연도 등을 주면 해당 부동산의 가치를 추정한다.
꽃잎의 길이와 너비 등 식물의 외형적 특징을 주면 해당하는 식물의 종을 알아낸다.
얼굴 사진을 주면 해당하는 사람의 이름을 출력한다.
현재 바둑돌의 위치들을 주면 다음 바둑돌의 위치를 지정한다.
입력 데이터와 출력 데이터
입력 데이터(input data): 분석의 기반이 되는 데이터로 보통 XX로 표기
=독립 변수(independent variable), 설명 변수(explanatory variable), 특징(feature)
출력 데이터(output data): 추정하거나 예측하고자 하는 목적 데이터로, 보통 YY로 표기
= 종속 변수(dependent variable), 카테고리값이면 라벨(label) 또는 클래스(class)
입력 데이터와 출력 데이터를 정확히 파악하는 것은 예측문제를 구체화하는 첫번째 단계로, 예측 성능은 입출력 데이터의 숫자와 종류에 크게 의존하므로 입력 데이터 정의는 문제 해결에 매우 중요한 부분
예측 방법론: 규칙기반 방법 vs. 학습기반 방법
규칙기반(rule-based) 방법
어떤 입력이 들어오면 어떤 출력이 나오는지 결정하는 규칙/알고리즘을 사람이 미리 만들어놓는 방법
학습기반(training-based) 또는 데이터기반(data-based) 방법 → 머신러닝
대량의 데이터를 컴퓨터에 보여줌으로써 규칙/알고리즘을 스스로 만들게 하는 방법
예측문제의 수학적 표현
함수 ff를 맞추는 것이 문제 (최대한 비슷한 것을 구하기)
확률을 이용하는 방법도 있음
예측할 때 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
Unreasonable effectiveness of data.pdf
376.8KB
소규모, 중간규모의 데이터셋은 여전히 매우 흔하고, 대량 데이터셋을 모으는 것은 어렵고 비용이 많이 들기 때문에 알고리즘을 무시할 수 없음
대표성 없는 훈련 데이터
일반화가 잘 되려면 훈련 데이터가 일반화를 원하는 사례를 잘 대표해야 함
샘플링 잡음(sampling noise): 우연에 의한 대표성 없는 데이터, 샘플이 작을 때 발생
샘플링 편향(sampling bias): 표본 추출 방법이 잘못되어 샘플이 대표성을 띠지 못함
낮은 품질의 데이터
훈련 데이터의 에러, 이상치(outlier), 잡음 등에 데이터 정제가 필요
관련 없는 특성
feature engineering: 훈련에 사용할 좋은 특성들을 찾는 것
feature selection: 가지고 있는 특성 중 훈련에 가장 유용한 특성을 선택
feature extraction: 특성을 결합하여 더 유용한 특성을 만듦. (차원 축소 알고리즘)
새로운 데이터로 새 특성을 만듦

4.2 나쁜 알고리즘의 사례

훈련 데이터 과대적합(overfitting)
overfitting: 모델이 훈련 데이터에 너무 잘 맞지만 일반성이 떨어짐
overfitting은 훈련 데이터의 잡음 양에 비해 모델이 너무 복잡할 때 일어남
해결 방법
모델 단순화(간단한 알고리즘을 선택, 특성/파라미터 수를 줄이기, 모델에 제약을 가해 단순화)
훈련 데이터를 더 많이 수집
훈련 데이터의 잡음을 줄이기
규제(regularization): 모델을 단순하게 하고 과적합의 위험을 감소시키기 위해 모델에 제약을 가하는 것
데이터에 완벽히 맞추는 것과 일반화를 위해 단순한 모델을 유지하는 것 사이의 올바른 균형을 찾는 것이 좋음
규제의 양은 하이퍼파라미터(hyperparameter)가 결정함
하이퍼파라미터란 (모델이 아니라) 학습 알고리즘의 파라미터로, 학습 알고리즘으로부터 영향을 받지 않으며 훈련 전에 미리 지정되고 훈련 동안 상수로 남아 있음
머신러닝 시스템 구축에서 하이퍼파라미터 튜닝은 매우 중요한 과정!
훈련 데이터 과소적합(underfitting)
모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못할 때 발생
해결 기법
모델 파라미터가 더 많은 강력한 모델 선택
학습 알고리즘에 더 좋은 특성을 제공
모델의 제약을 줄임(규제 하이퍼파라미터 감소)

5. 테스트와 검증

5.1 테스트 방법

훈련 데이터를 train settest 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기 강의 자료, 패스트 캠퍼스