Feature Enginnering(특성공학)이란 도메인 지식과 창의성을 바탕으로, 데이터셋에 존재하는 Feature들을 재조합하여 새로운 Feature를 만드는 것이다. 즉, 데이터 분석에 사용되는 모델의 정확도를 높이기 위해서 주어진 데이터를 예측 모델의 문제를 잘 표현할 수 있는 features로 변형하는 과정이다.
통계 분석 혹은 머신러닝, 더 나아가 딥러닝까지 대부분의 분석은 데이터에 있는 패턴을 인식하고 해당 패턴들을 바탕으로 예측을 하기 때문에, 더 좋은 퍼포먼스를 위하여 더 새롭고 더 의미있는 패턴을 제공하는 것이 궁극적인 Feature engineering의 목적이라고 할 수 있다.
Feature Engineering에 대한 너무나도 많은 내용들을 다룰 수 없기에, 간략하게 배운 것들을 위주로 정리해보고자 한다.
feature는 어떤 대상에 대한 정보의 나열인가?
pandas의 dataframe을 간략하게 표현하자면 table 형태의 data라고 할 수 있다.
tidy 형태
일반적으로 하나의 행에는 하나의 데이터 혹은 관측치를, 하나의 열에는 하나의 feature를 기반으로 저장된 형태. 다른 라이브러리들과의 호환성을 위해서 tidy형태로 저장하는 것이 좋다.
R에서의 NA는 '잘못된 값', Null은 '아직 정해지지 않은 값'으로, 서로 다른 의미인데 Python에서는 NA과 Null을 NaN으로 표현한다고 한다.
Na(Not Available) : 결측값
Null : 값이 입력되지 않음, 결측값
NaN(Not a Number) : 숫자가 아니다, 결측값.
0 : 실수
Undefined : 선언은 되었으나 값이 할당되지 않은 변수로 오류 표기?
일반적으로 머신러닝 모델링에서는 문자열(string)로 이루어진 값은 잘 사용하지 않는다. 정수(integer)나 실수(float)형태의 값으로 바꿔줘야하는 경우가 많다!
string variable.replace(“삭제할 값“, ‘’)
df['index1'] = df['index2'].apply(사용자지정함수)