220920

AIVILLAIN·2022년 9월 20일
0

오공완

목록 보기
10/25

데이터 전처리

ML 알고리즘은 데이터에 기반하고 있기 때문에 어떤 데이터를 입력으로 가지느냐에 따라 결과도 크게 달라질 수 있음
결손값(NaN, Null)은 허용되지 않음
고정된 다른 값으로 변환해야 함
피처 값 중 Null 값이 얼마 되지 않는다면 피처의 평균값 등으로 대체 가능
Null값이 대부분이라면 해당 피처를 drop하는 것이 더 나음
가장 어려운 부분은 Null값이 일정 수준 이상이 되는 경우
해당 피처가 중요도가 높고 Null을 단순히 평균값으로 대체할 경우 예측 왜곡이 심할 수 있다면 더 정밀한 대체 값을 선정해야 함

사이킷런 머신러닝 알고리즘은 문자열 값을 입력으로 허용하지 않음
모든 문자열 값은 인코딩하여 숫자형으로 변환해야 함
문자열은 일반적으로 카테고리형 피처와 텍스트형 피처를 의미
카테고리형 피처는 코드 값으로 표현하는게 이해하기 쉬움
텍스트형 피처는 벡터화 등의 기법을 사용하거나 불필요한 피처라면 삭제하는게 좋음

데이터 인코딩

머신러닝을 위한 대표적인 인코딩 방식은 레이블 인코딩과 원-핫 인코딩이 있음

레이블 인코딩
카테고리 피처를 코드형 숫자 값으로 변환
ex) TV, 냉장고, 전자레인지, 컴퓨터로 상품 구분이 있을 때
TV : 1, 냉장고 : 2, 전자레인지 : 3, 컴퓨터 : 4와 같이 숫자형 값으로 변환
LabelEncoder 클래스로 구현, fit()과 transform()을 호출하여 수행
LabelEncoder 객체의 classes_ 속성값으로 문자열이 어떤 숫자값으로 인코딩되었는지 직관적으로 알 수 있음
inverse_transform()을 통해 인코딩된 값을 다시 디코딩할 수 있음
레이블 인코딩이 일괄적인 숫자 값으로 변환하는데, 이 데이터를 ML 알고리즘에 적용할 경우 예측 성능이 떨어지는 경우가 발생할 수 있음
이는 숫자 값의 크고 작음에 대한 특성을 모델이 학습하기 때문
냉장고가 2, 전자레인지가 3으로 변환되었을 때 3이 2보다 큰 값이므로 특정 ML 알고리즘에서 가중치가 더 부여되거나 중요하게 인식될 수 있음
레이블 인코더에 의해 변환된 숫자값은 단순히 각 레이블을 특정하기 위한 코드 값이지 값의 크기나 순서에 따른 중요도를 갖지 않음

원-핫 인코딩
원-핫 인코딩은 레이블 인코딩의 문제점을 해결하기 위한 인코딩 방식
피처 값의 유형에 따라 새로운 피처를 추가하여 고유 값에 해당하는 컬럼에만 1을 표시, 나머지에는 0을 표시하는 방식
OneHotEncoder 클래스 사용
변환 전 모든 문자열 값이 숫자형으로 변환되어 있어야 함 (LabelEncoder 적용 결과에 적용하면 편함)
입력 값으로 2차원 데이터가 필요

판다스에 원-핫 인코딩을 쉽게 지원하는 API가 있음
get_dummies()를 이용하여 문자열 카테고리 값을 숫자 형으로 변환할 필요 없이 바로 변환 가능

피처 스케일링과 정규화

서로 다른 변수의 값 범위를 일정 수준으로 맞춰주는 작업을 피처 스케일링이라고 함
대표적으로 표준화, 정규화가 있음
표준화는 데이터의 피처 각각이 평균 0, 분산 1인 가우시안 정규 분포를 가진 값으로 변환
정규화는 서로 다른 피처의 크기를 통일하기 위해 크기를 변환해주는 개념
개별 데이터의 범위를 똑같은 단위로 변경

사이킷런의 전처리에서 제공하는 Normalizer 모듈과 일반적인 정규화는 약간 차이가 있음
사이킷런의 Normalizer 모듈은 선형대수에서의 정규화 개념이 적용되었으며 개별 벡터의 크기를 맞추기 위해 변환하는 것을 의미

StandardScaler
표준화를 쉽게 지원하기 위한 클래스
개별 피처를 평균이 0, 분산이 1인 값으로 변환
사이킷런에서 구현한 RBF 커널을 이용하는 서포트 벡터 머신, 선형 회귀, 로지스틱 회귀는 데이터가 가우시안 분포를 가지고 있다고 가정하고 구현됐기 때문에 사전에 표준화를 적용하는 것은 예측 성능 향상에 중요한 요소가 될 수 있음

MinMaxScaler
데이터 값을 0과 1사이의 범위 값으로 변환
데이터 분포가 가우시안 분포가 아닐 경우 Min, Max Scale을 적용해볼 수 있음

사이킷런으로 수행하는 타이타닉 생존자 예측

캐글은 세계적인 ML 기반 분석 대회를 온라인상에서 주관
오픈된 데이터 자료를 기반으로 전 세계 데이터 분석가가 데이터 분석 실력을 경쟁하고 협업하는 가장 뛰어난 데이터 분석 오픈 포탈
타이타닉 생존자 데이터는 머신러닝에 입문하는 데이터 분석가/과학자를 위한 기초 예제로 제공되고 있으며 많은 캐글 이용자가 저마다의 방법으로 타이타닉 생존자 예측을 수행하고 그 방법을 캐글에 공유하고 있음

실습 코드

profile
소신있는 오픈마인드

0개의 댓글