[빅데이터] 특징량 엔지니어링

Updated on

특징량을 직역하자면, 데이터 중 수치로 된 관측된 값의 대표적 특징이라고 이해하는게 좋은 것 같다.

  • 데이터를 머신러닝 알고리즘에서 사용할 수 있게 변환하는 것
  • 데이터를 기반으로 머신러닝 알고리즘을 예측할 때, 새로운 특징량(데이터의 대표적인 값)을 만드는 것
  • [글쓴이의 견해]특징량은 어려운 개념이 아니다. 사실 일상생활 에서도 많이 쓰인다. 대표적인 예로 우리는 어떤 친구가 시험을 잘봤는지 못봤는지 평가하기 위해서 그래서 너의 평균 점수가 몇이야? 라고 말한다. 왜? 기준이 필요하기 때문이다. 그 사람을 대표하는 점수가 그 사람의 특징을 나타내기 때문이다.위의 설명은 이해를 돕기 위한 예시일뿐이다. 그렇다고 모든 데이터가 위처럼 국한되지는 않는다. then 일반화 하여 말하자면 데이터의 어떤 값을 특정상황에 활용할 수 있게 만들어 내는것을 특징량 엔지니어링이라고 일괄할 수 있다.
  • 아래는 타이타닉 데이터 셋 중 예제 코드 중 특징량 처리 과정 중 한 부문을 발췌하였다.
# 타이타닉 데이터 예제 코드
[1] 분할된 학습용 데이터 세트와, 검증용 데이터 세트를 정렬하지 않고 세로로 결합한다.
[2] 성별 변수 중 문자열 자료형인 male과 female을 0과 1로 바꾼다. (특징량 엔지니어링)

[1] data = pd.concat([train,test],sort=False) 
[2] data['sex'].replace(['male,'female'],[0,1],inplace=True)
[1] Fare(요금) 변수 중 숫자형 자료형 중 관측값이 없는 (NA) 데이터를 평균값으로 대체한다. (특징량 엔지니어링)

[1] data['Fare'].fillna(np.mean(data['fare']),inplcae=True)

[데이터 처리]특징량 일반화

  • 대표적인 일반화하는 정규화 함수 중 로지스틱 회귀는 특징량의 범위가 다르면 학습이 제대로 되지 않는다.
  • 이러한 문제를 해결하는 방법은 최대한 특징량의 범위를 조정해야한다.
  • 특징량의 평균을 0, 표준편차를 1로 변환 하는게 대표적이다.
  • 로지스틱 회귀 외 ‘랜덤 포레스트’,‘LightGBM’ 등이 여기에 해당한다.

[데이터 처리]결손값 처리

  • 일반적으로 결손(NA)값은 다음과 같이 처리한다
  1. 결손값을 그대로 다룬다.
  2. 대푯값으로 결손값을 보완한다.
  3. 다른 특징량으로 결손값을 예측해서 보완한다.
  4. 결손값인지 아닌지를 기반으로 새로운 특징량을 만들어서 사용한다.