머신러닝
명확한 답이 주어진 학습 데이터 세트를 통해 학습
테스트 데이터 세트를 통해 미지의 정답을 예측
> 사이킷런 이용
- sklearn.datasets : 데이터세트 생성 모듈
- sklearn.tree : 트리 기반 ML알고리즘 구현한 클래스 모임
- sklearn.npdel_selection : 데이터분리, 최적의 *하이퍼 파라미터 평가위한 모듈
* 하이퍼 파라미터 : 최적의 학습을 위해 직접 입력하는 파라미터 통칭
머신러닝 개요
1. 데이터 불러오기
2. 데이터 분리 : 학습데이터, 테스트 데이터
3. 모델 학습 : 학습데이터 이용, 머신러닝알고리즘(ML알고리즘) 적용 (x_train, y_train)
4. 예측 수행 : 테스트 데이터로 결과값 예측 (x_test)
5. 평가 : 예측된 결과값이 테스트 데이터의 실제 값과 얼마나 비슷한지 평가
교차검증
과적함(overfitting)을 개선하기 위해 교차검증 이용
기존에 분리한 학습데이터, 테스트데이터 중 학습데이터를 한번 더 분리하여 검증데이터를 생성
데이터 편중을 막기 위해 별도의 여러 세트로 구성된 학습 데이터 세트와 검증 데이터 세트에서 학습과 평가 수행
> k폴드 교차검증
학습데이터를 k개로 분리하여 각 그룹별로 한번씩 돌아가며 검증데이터의 역할을 하여 k번의 교차검증을 수행
> stratified k 폴드 교차검증
필요한 사건에 대한 데이터값이 적을 때 학습데이터와 테스트 데이터에 잘 분배되지 못하는 문제를 해결
ex. 1억개의 데이터 중 내가 원하는 사건에 대한 데이터가 1000개만 있다면 stratified k 폴드는 이 1000건에 대해서 동일하게 학습과 검증 데이터 세트를 분배할 수 있도록 레이블데이터의 분포를 고려
회귀에서는 연속값을 사용하여 레이블 데이터값별로 분포를 정하는게 의미없기 때문에 지원되지 않음
> cross_val_score() 교차검증
아래 3단계의 절차를 한번에 수행하여 교차검증을 쉽게 할 수 있게 해주는 API1. 폴드 세트 설정2. for문으로 데이터 인덱스 추출3. 반복학습 및 예측, 평가
cross_val_score(estimator, X, y=none, scoring=none, cv=none, n_jobs=1, verbose=0, fit_params=none, pre_dispatch='2*n_jobs')
estimator : ML알고리즘 변수명 작성 / 분류인 경우 stratified k폴드로 교차검증 수행, 회귀 알고리즘인 경우에는 k폴드로 교차검증 수행X : 피처 데이터 세트y : 레이블 데이터 세트scoring : 예측 성능 평가 지표cv : 교차 검증 폴드 수
> GridSearchCV
교차검증과 최적 하이퍼 파라미터 튜닝을 한번에 수행하이퍼 파라미터 튜닝을 통해 예측 성능 개선순차적으로 수행하기 때문에 시간이 오래 걸림
데이터 전처리
머신러닝 알고리즘에서는 Null, NaN값은 허용되지 않음 반드시 대체 값 입력 혹은 데이터 삭제 처리가 필요사이킷런 머신러닝 알고리즘은 문자열 입력이 안되기 때문에 숫자형으로 변환 필요id나 주민번호 같이 식별용 데이터는 삭제 추천
숫자형 변환을 위한 인코딩은 레이블 인코딩과 원핫인코딩이 있음
> 레이블 인코딩
fit(), transform()을 이용해 인코딩 수행
from sklearn.preprocessing import LabelEncoder
items = ['a', 'b', 'c', 'd', 'e']
# 레이블 인코더 객체 생성
encoder = LabelEncoder()
# 인코딩 수행
encoder.fit(items)
labels = encoder.transform(items)
print('인코딩 변환값 : ', labels)
a는 0, b는 5, c는 1 등의 숫자값을 변환
순서대로 변환되지 않기 때문에 어떤 순서로 변환되었는지 알고싶다면 encoder.classes_를 통해 확인 가능
> 원-핫 인코딩
위의 레이블 인코딩만 하면 숫자값의 크고 작음에 따라 가중치가 부여되는 문제가 발생
가중치 문제를 해결하기 위해 원-핫 인코딩 이용
이 경우에는 2차원이 될 수 밖에 없음
아래와 같이 해당하는 경우에만 1을 넣어주고 나머지는 0을 넣어줌
a. e. c. d. b
a. 1 0. 0. 0. 0
b. 0. 0. 0. 0. 1
c. 0. 0. 1. 0. 0
d. 0. 0. 0. 1. 0
e. 0. 1. 0. 0. 0
'ML&DL > study' 카테고리의 다른 글
파이썬 머신러닝 04-1. Mac에 Graghviz 설치하기 (0) | 2021.07.20 |
---|---|
파이썬 머신러닝 03. 평가 (0) | 2021.07.19 |
파이썬 머신러닝 공부 01. 넘파이, 판다스 (0) | 2021.07.13 |
머신러닝 알고리즘 8. 순환신경망 (RNN) (0) | 2021.06.18 |
머신러닝 알고리즘 8. 합성곱 신경망 (CNN) (0) | 2021.06.18 |