티스토리 뷰
머신러닝(Machine Learning)
- 명시적인 프로그래밍 없이 데이터를 이용해서 예측 또는 분류를 수행하는 알고리즘을 구현하는 기법
- 한국말로 기계학습이라고도 부름
1. 머신러닝(Machine Learning)이 필요한 이유
- 머신러닝 방법론을 이용할 경우, 인간이 정확히 하나하나 로직을 지정해주기 어려운 복잡한 문제를 데이터에 기반한 학습을 통해서 해결할 수 있다.
ex. 어떤 사용자에게 어떤 광고를 보여주는 것이 최적의 광고 배분 전략일까? - 머신러닝 알고리즘을 사용할 때 가장 중요한 부분은 머신러닝 모델이 잘 학습할 수 있도록 적절한 특징(Feature)을 설정해주는 것이다.
2. 예측 모델(Prediction Model)의 필요성
- 데이터 분석을 통한 정교한 예측 모델(Prediction Model)을 갖고 있을 경우, 중요한 비즈니스적 의사결정을 안정적이고 계획적으로 수행할 수 있다.
- 예제 1) 다음달에 휴대폰 판매량은 얼마나 될까? → 생산 계획 및 재고관리 전략을 수립할 수 있따.
- 예제 2) 광고비를 100만원 더 집행하면 얼마나 많은 유저를 추가적으로 획득할 수 있을까? → 목표로 하는 유저 획득 수에 따른 광고비 집행 전략을 세울 수 있다.
3. 지도 학습(Supervised Learning)
- 머신러닝 모델은 일반적으로 지도 학습(Supervised Learning)이라는 방법론을 사용한다.
- 지도 학습 방법론을 사용하기 위해서는 트레이닝 데이터의 구성이 (인풋 데이터, 데이터에 대한 정답) 쌍으로 구성되어 있어야만 한다. 즉, 지도 학습은 정답을 보여주면서 학습시키는 머신러닝 방법론이다.
- 이때 보통 인풋 데이터를 x, 데이터에 대한 정답을 y라고 부른다.
- 즉, 데이터는 (x,y) 쌍으로 구성된다.
- 예를 들어, 우리가 키를 기반으로 몸무게를 예측하는 모델을 만드는 경우를 생각해보면 트레이닝 데이터는 여러 사람에게서 수집한 키와 몸무게 데이터가 된다.
3-1. Training Data, Test Data
- (x,y)로 구성된 데이터를 학습용 데이터(Training Data)라고 부른다. 머신러닝 모델을 사용하는 경우 다음의 2가지 과정을 거친다.
- 학습용 데이터로 머신러닝 모델을 학습시킨다.
- 학습된 머신러닝 모델의 성능을 트레이닝 데이터에 포함되어 있지 않고 따로 빼놓은 테스트 데이터(Test Data) 로 측정한다.
- Training Data, Test Data나누기 (split)
- 따라서 머신러닝 모델을 학습시키기 위해서 전체 데이터의 일부를 Training Data, 일부는 Test Data로 나눠서 사용한다.
- 일반적으로 데이터의 80% 정도는 트레이닝 데이터, 20% 정도는 테스트 데이터로 나눠서 사용한다.
- 예를 들어 1000명의 (키, 몸무게) 데이터가 있다면 800명분의 데이터는 트레이닝 데이터, 200명분의 데이터는 테스트 데이터로 나눠서 사용한다.
3-2. Validation Data(검증용 데이터)
- 전체 데이터를 트레이닝(training) 데이터, 검증용(validation) 데이터, 테스트(test) 데이터로 나누기도 한다.
- 검증용 데이터는 트레이닝 과정에서 학습에 사용하지는 않지만 중간중간 테스트하는데 사용해서 학습하고 있는 모델이 오버피팅에 빠지지 않았는지 체크하는데 사용된다.
- 즉, 직관적으로 설명하면 검증용 데이터는 트레이닝 과정 중간에 사용하는 테스트 데이터로 볼 수 있다.
-
Your Dataset train test train validation test
3-3. Overfitting, Underfitting
- 아래 그림은 학습 과정에서 트레이닝 에러와 검증 에러를 출력한 그래프이다.
- 처음에는 트레이닝 에러와 검증 에러가 모두 작아지지만 일정 횟수 이상 반복할 경우 트레이닝 에러는 작아지지만 검증 에러는 커지는 오버피팅(Overfitting)에 빠지게 된다.
- 따라서, 트레이닝 에러는 작아지지만 검증 에러는 커지는 지점에서 업데이트를 중지하면 최적의 파라미터를 얻을 수 있다.
- 오버피팅(Overfitting)은 학습 과정에서 머신러닝 알고리즘의 파라미터가 트레이닝 데이터에 과도하게 최적화되어 트레이닝 데이터에 대해서는 잘 동작하지만 새로운 데이터인 테스트 데이터에 대해서는 잘 동작하지 못하는 현상을 말한다. 오버피팅은 모델의 표현력이 지나치게 강력할 경우 발생하기 쉽다.
- 언더피팅(Underfitting)은 오버피팅의 반대 상황으로 모델의 표현력이 부족해서 트레이닝 데이터도 제대로 예측하지 못하는 상황을 말한다.
- 오버피팅을 방지하기 위한 기법들을 정규화(Regularization) 기법이라고 부른다.
'파이썬 > 머신러닝' 카테고리의 다른 글
머신러닝 (0) | 2021.07.02 |
---|---|
결정 트리(Decision Tree)와 랜덤 포레스트(Random Forest) (0) | 2021.06.08 |
scikit-learn & 머신러닝 기초 (0) | 2021.06.08 |