*빅데이터 분석
- 훈련 데이터(Train data): 모델을 학습시키는데 들어가는 데이터
- 검증 데이터(Test data): 학습된 모델의 성능을 평가하기 위한 데이터. 모델의 일반화를 판단하는데 사용
(*검증 데이터는 절대로 훈련 데이터를 포함해서는 안됨!)
- Train data : Test data = 8 : 2 (or 7 : 3)
-과적합(Overfitting)
: 모델이 너무 복잡하여 훈련 데이터(Train)에는 적합하지만 일반화하기 힘든 상황
-부적합(Underfitting)
: 모델이 너무 단순하여 훈련 데이터에서의 성능이 좋지 않아 일반화하기 힘든 상황
* 기계학습(Machine Learning)
- ‘학습’?
: 데이터로부터 모형을 만들어 나가는 것
1) 지도학습: 인덱스가 있는 것을 주고 인덱스 별로 학습. 이후 인덱스가 없는걸 주었을때 분류해줄 수 있도록 하는 학습방법
2) 비지도학습: 답을 알려주지 않고 인공지능을 학습시키는 방법
3) 강화학습: 잘풀었냐 못풀었냐에 따라서 당근과 채찍(보상과 패널티); 일종의 피드백
(성공경험, 실패경험에 대해 보상과 패널티로 학습시킴)
* 교차검증(CV; Cross Validation)
- 목적: 예측값(y햇)과 실제값(y)의 차이를 줄여나가는 것; ‘모델의 성능향상’
- 데이터셋을 여러번 반복해서 나누고 여러 모델을 학슴함으로써 주어진 데이터셋에 학습된 알고리즘이 얼마나 잘 일반화되어 있는지 평가하는 방법
- 데이터를 폴드(fold)라는 비슷한 크기의 부분 집합 k로 나누어 각 데이터마다 모델을 학습시켜 정확도를 측정
- k-fold 교차검증: cross_val_score
- 층화 k-fold 교차검증: StratifiedKFold
*교차검증(Cross Validation) 코딩
1) 패키지 가져오기_sklearn(사이킷런)
- Train, Test데이터 나누기: from sklearn.model_selection import train_test_split
- CV(교차검증): from sklearn.model_selection import cross_val_score
2) k-fold 교차검증; cross_val_score
- y = '평균 구매주기' (연속형 데이터)
- K-NN 회귀모형 사용
3) 층화 k-fold 교차검증; Stratified K-Fold
- y = '이탈여부' (이산형 데이터)
- K-NN 분류모형 사용
- cv = skf
4) 그리드 서치
- 모델의 베스트 성능을 만들어주는 하이퍼 파라미터를 찾는 방법
- 관심 있는 파라미터들을 대상으로 모든 조합을 시도하여 최적의 파라미터를 찾는 방법
- accuracy가 7~80%일 때, '모델이 과적합은 아니다' 라고 해석해 볼 수 있음