오늘은 K-MOOC <실습으로 배우는 머신러닝> 강의를 통해 그동안 배운 내용을 복습했다
Introduction to Machine Learning
머신러닝이란
input (data) → function → output
결국에 머신러닝이라고 하는 건 함수를 학습하는 것이다.
컴퓨터를 학습시킬 수 있는 알고리즘을 컴퓨터에게 입력시켜주면 컴퓨터가 스스로 데이터 안에 있는 유용한 패턴을 찾아서 함수를 찾아주는 것이다. 그렇게 도출된 유용한 함수를 사용하는 것이다.
딥러닝, 머신러닝, 이러한 개념의 차이는 데이터를 입력하고, 그 다음에 function의 기본적인 형태를 컴퓨터에게 알려주면 트레이닝 과정을 통해서 최종적인 optimal function, 굉장히 좋은 유용한 함수를 컴퓨터 스스로 학습을 한다는 것이다.
CPU Computing VS GPU Computing
기본적인 컴퓨팅 환경은 CPU Computing 환경이다. (중앙처리장치 - 컴퓨터의 두뇌 역할을 하는 장치)
그러나 최근 들어서 GPU Computing 기술을 이용해서 계산을 굉장히 효율적으로 할 수 있게 되었다.
GPU는 3D 그래픽, 현란한 게임 그래픽 등 Graphical한 프로세싱을 할 수 있게끔 도와주는 연산 장비이다.
GPU의 장점은 분산해서 굉장히 빠르게 쉬운 계산들을 처리할 수 있다는 것이다. 이를 활용하려는 여러 노력을 통해 GPU를 활용한 대용량 데이터 처리가 굉장히 효율적이게 되었다. 이런 GPU Computing은 딥러닝의 발전을 가속화시키는 데 큰 역할을 했다. 그리고 딥러닝에서 성공을 이루면서 기존에 있었던 다른 기본적인 머신러닝 알고리즘들도 이런 GPU를 이용한 효율적인 계산을 응용하게 되었다.
머신러닝 학습 개념
지도학습 - 분류 Classification, 회귀Regression
비지도학습 Clustering
강화학습 - Markov Decision Process, DQN, Policy Gradient
Training Error VS Validation Error(Test error)
머신러닝에서 모형을 잘 학습시키는 것도 중요하지만, 학습된 모형이 잘 예측되게끔 만들어주는 것도 굉장히 중요하다.
대부분의 케이스에서 가지고 있지 않은 데이터를 가지고 있는 데이터를 통해 잘 예측하기를 원한다.
Training error는 내가 학습시키는 그 데이터 내에서 발생하는 오차.
Validation error는 내가 학습할 때 사용하지 않았던 데이터에 대해서 검증해서 validation 데이터에 있는 실제 y랑 모형에서 출력된 y랑 정말 차이가 큰지 작은지 검증용으로 쓰는 에러이다. 궁극적으로는 일반화 오류라는 개념으로 연관이 된다.
선형회귀를 예로 들면, 선형회귀는 이 x와 y와의 관계를 직선 하나로 표현을 한다. 굉장히 단순하게 표현을 하기때문에 model complexity(복잡도)가 낮다. 반면 곡선으로 미세하게 데이터를 표현한다면 복잡도가 높은 것이다
모형이 너무 단순해서 데이터에 들어있는 전체 패턴을 표현하지 못한다고 하면 Under-fitting이라고 하고, 그 다음에 너무 복잡해서 쓸데없는 패턴까지 다 학습을 해버리면 Over-fitting이라고 한다. 그러면 예측이 잘 안 되고, 일반화가 잘 안 된다. 갖고 있는 트레이닝 데이터에만 너무 집중을 해서 그 패턴에만 몰두를 했기 때문에 일반적인 패턴에 가면 오히려 실패를 하게 되기 때문이다. 그래서 Validation error가 최소가 되는 그런 적절한 모형을 찾아야 된다. 너무 단순해도 안 되고 너무 복잡해도 안 된다.
model complexity를 결정하는 데는 hyperparameter가 영향을 준다. hyperparameter는 모형을 구축하는, 모형의 형태들이나 모형의 특성을 규정하는 외적인 요소로, 유저들이 결정 해줘야 한다.
Machine Learning Pipeline
데이터 준비 과정(Data preparation)
- Dataset Exploration 데이터셋 탐구
- Missing Value 결측치 보정
- Data Types and Conversion 데이터타입 분석이 가능한 형태로 변환
- Normalization 정규화 (변수들의 단위 조정 등)
- Outliers 이상치 전처리
- Feature Selection 변수 선택
- Data sampling 일부분 추출하는 과정을 거치기도 함