반응형
- 결손값 처리 (Null/ NaN 처리)
- 데이터 인코딩(레이블, 원-핫 인코딩)
- 머신러닝알고리즘은 문자열 데이터 속성을 입력값으로 받지않기 때문에 문자형이 아닌 숫자형으로 표현 되어야한다.
- 레이블인코딩 - 남, 여 → 1, 0 , 숫자값이기 때문에 의도하지 않아도 1이 더크다는 의미로 영향을 받는 알고리즘이 있을수있다. 따라서 회귀에는 적용하지말고 tree 계열 ML 알고리즘은 적용가능 , 이러한 문제점을 해결하기위해 나온것이 원핫 인코딩이다.
- 사이킷런의 LabelEncoder 클래스 , fit() 과 transform() 을 이용하여 변환
- 원핫(One-hot) 인코딩 -feature 값의 유형에 따라 새로운 피처를 추가 해서 고유값에 해당하는 컬럼에만 1을 표시 하고 나머지 컬럼에는 0 을 표시 하는 방식이다. -성별_남(남자일때 1) ,성별_여 (여자일때 1)
- 사이킷런의 OneHotEncoder 클래스 fit() 과 transform() 을 이용하여 숫자형으로 변환 - 인자로 이차원ndarray 입력 필요, Sparse 배열 형태로 변환되며 toarray() 를 적용하여 다시 Dense 형태로 변환 되어야함.
- pd.get_dummies(DataFrame) 을 이용 하면 쉽게 원핫 인코딩 가능 - 확인
- 데이터 스케일링
- 이상치 제거
- Feature 선택 , 추출 및 가공
데이터인코딩
1. 레이블인코딩
2. 원-핫인코딩(One-Hot encoding)
피처 스케일링과 정규화
- 데이터 스케일(Scale) : 변수를 구성하는 값 들의 크기 , 규모, 범위를 의미
- feacure scaling : 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업
Feature Scaling을 하는 이유는?
변수 값의 범위 또는 단위가 달라서 발생 가능한 문제를 예방할 수 있다. 머신러닝 모델이 특정 데이터의 편향성을 갖는 걸 방지할 수 있다. 즉 데이터 범위 크기에 따라 모델이 학습하는 데 있어서 bias(편향)가 달라질 수 있으므로 하나의 범위 크기로 통일해주는 작업이 필요할 수 있다.
Feature Scaling 종류
- 표준화- 데이터의 피처 각각이 평균이 0 이고 분산이 1인 가우시안 정규분포를 가진 값으로 변환하는 것을 의미 (데이터분포의 중심을 0으로)
- 정규화- 서로 다른 피처의 크기를 통일하기 위해 크기를 변환해주는 개념, 일반적으로 이상치 제거후 정규화
- 사이킷 런에서
- StandardScaler: Sklrean(사이킷런)에서 제공하는 표준화를 위한 클래스이며, 개별 변수를 평균이 0이고 분산이 1인 가우시안 정규 분포를 가질 수 있도록 값을 변환해준다.
- StandardScaler 사용 시 주의할 점
- Scaler에 의해 변환된 데이터는 ndarray 형식이므로 데이터 관리의 용이성을 위해 DataFrame 형식으로의 명시적 변환이 필요할 수 있다.
- 변수의 최소값과 최대값 크기를 제한하지 않음 ,
따라서 이상값(outlier) 있는 경우 평균과 표준편차에 영향을 미치기 때문에 데이터 분포 (확산)에 영향을 미침.
- StandardScaler 사용 시 주의할 점
- MinMaxScaler: 데이터값을 0과 1사이의 범위값으로 변환(음수값이 있으면 -1 에서 1값으로 변환) , 데이터 분포가 가우시안분포가 아닐경우 적용
- 선형, 회기는 스케일링 해주는것이 좋고 tree 분류는 스케일링에 크게 영향을 받지 않는다.
- 머신러닝 모델은 학습 데이터를 기반으로 학습되기 때문에 반드시 테스트 데이터는 학습데이터 스케일링 기반에 따라야 하고 테스트 데이터 에 다시 fit() 을 적용하면안되고 scaler 객체를 이용해 transform() 을 적용해야한다.
Scaler를 사용하는 이유:
데이터가 가진 크기과 편차가 다르기 때문에 한 피처의 특징을 너무 많이 반영하거나 패턴을 찾아내는데 문제가 발생하기 때문이다
StandardScaler
MinMaxScaler
반응형
'ML' 카테고리의 다른 글
머신러닝 2_4 교차검증 (0) | 2022.04.28 |
---|---|
머신러닝 2_3 ModelSelection (0) | 2022.04.22 |
머신러닝 2_2 (사이킷런 기반프레임워크) (0) | 2022.04.22 |
머신러닝 2_1 (0) | 2022.04.21 |
댓글