케라스란
- 파이썬으로 설계된 머신러닝 라이브러리
머신러닝 프로세스
- [문제 정의 및 데이터 준비하기] → [학습하기] → [추론 및 평가] → <<반복>>
1. 문제 정의 및 데이터 준비
- 데이터의 명확한 정의
- 데이터 전처리 방법의 선택
2. 학습하기
- 선택한 모델이 주로 어떤 데이터에 적용이 되었는지? 사례는?
- 모델이 얼마나 깊어야 하는가?
- 옵티마이저는? 손실함수는?
- 실험 환경이 적합한가?
3. 추론 및 평가
- 결과물에 대한 평가기준 세우기
- 상황에 맞는 학습모델 선택하기
용어 살펴보기
클래스 불균형
클래스가 불균형하게 분포되어 있는 것. 특이한 경우가 포함된 데이터에서 많이 볼 수 있고, 이러한 문제들을 이상 탐지Anomaly Detaction이라고 한다.
과소 표집과 과대 표집
- 과소표집UnderSampling : 다른 표집에 비해 상대적으로 많이 나타나있는 클래스의 개수를 줄이는 것
- 과대표집OverSalpling : 데이터를 복제하는 것. 화대적합 문제가 발생할 수 있다. 이를 피하기 위해 SMOTE가 있다. 개수가 적은 클래스의 표본을 가져와 임의의 값을 추가하여 새로운 표본을 만들고 이를 데이터에 추과하는 것이다.
회귀와 분류
회귀
- 하나 또는 여러개의 특징을 통해 연속적인 숫자로 이루어진 정답을 예측하는 것.
- 하나 또는 여러개의 특징을 독립변수. 정답을 종속변수 라고 한다.
- 0과 1을 예측할 때 사용하는 회귀를 로지스틱 회귀라고 한다.
분류
-
데이터셋에서 미리 정의된 여러 클래스 중 하나를 예측하는 것.
-
정답은 연속적이지 않은, 하나의 클래스에 속하는 것이어야 한다.
ex) 햄버거의 종류, 숫자 판별, 얼굴 인식 ...
-
클래스는 분류 문제에서 고유한 레이블의 집합.
햄버거와 음료를 구분하는 것은class
, 불고기버거와 치즈버거를 구분하는 것은label
이 된다.
분류의 세 가지 범주
- 이진 분류 : 햄버거와 음료처럼 두 개의 범주로 구분한다.
- 다중 분류 : 3개 이상의 범주로 구분
- 다중 레이블 분류 : 불고기버거, 치킨버거, 치즈버거, 콜라, 사이다, 환타가 있을 때, 불고기버거 세트에서 불고기버거와 콜라 레이블을 모두 할당한다.
원핫 인코딩(One-Hot Encoding)
- 하나의 클래스만 1이고, 나머지는 전부 0인 인코딩.
- 불고기버거: [1, 0, 0]
- 치킨버거: [0, 1, 0]
- 치즈버거: [0, 0, 1]
교차 검증(Cross Validation)
-
모델의 타당성을 검증하는 방법이다.
-
데이터를 모두 사용하여 모델을 학습시킬 경우, 해당 데이터에서는 매우 좋은 성능을 보여주지만, 새로운 데이터에 대해서는 좋은 성능을 보이지 못한다.
-
데이터에 대한 과대적합을 방지하기 위한 것이다.
-
데이터를 크게 세 가지로 나누어서 사용한다.
- 학습데이터train data : 모델 학습에 사용
- 검증데이터validation data : 모델 검증을 위해 사용하며, 주로 학습 도중에 사용한다.
- 테스트 데이터test data : 모델의 최종 성능을 평가하는 데 사용한다.
-
홀드아웃Hold-Out 검증 기법 : 데이터셋을 부작위로 학습, 테스트, 검증 데이터로 나누는 것.
-
문제점
-
데이터가 잘 나누어져서 성능이 좋을 수도 있다.
-
데이터를 등분하다 보니, 학습 데이터의 개수가 부족할 수 있다.
K-폴드 교차 검증 기법
- 데이터셋을 K개의 그룹(폴드)으로 나눈 후에, 하나의 그룹을 제외한 후 모든 그룹을 학습 데이터로 사용한다.
- 제외한 그룹은 검증 데이터로 사용된다.
- 각 폴드는 학습 데이터셋과 테스트 데이터셋으로 나눈다.
- 각 폴드마다 저장된 모델을 통해 결과를 도출하고, 결과를 평균내어 최종 성능을 검증한다.
- 계층적 K-폴드 교차검증, 임의 분할 교차 검증, 그룹별 교차 검증, LOOCV(Leave-One-Out CV) 등이 있다.
'Python > Python 딥러닝' 카테고리의 다른 글
[딥러닝용어-평가] 혼동행렬 정확도 정밀도 재현율 F1스코어 특이도 ROC곡선 (0) | 2020.07.10 |
---|---|
[딥러닝용어-학습] 하이퍼파라미터, 배치, 에포크, 스텝, 지도학습, 비지도학습, 강화학습 (0) | 2020.07.10 |
Python 딥러닝 3_ numpy 행렬의 내적 (0) | 2020.06.23 |
Python 딥러닝 2_ Perceptron과 활성화 함수 (0) | 2020.05.03 |
Python 딥러닝 1_ Perceptron과 Logic Gates (0) | 2020.05.01 |