데이터과학 삼학년

Feature engineering 기초 & wide and deep model 본문

Machine Learning

Feature engineering 기초 & wide and deep model

Dan-k 2020. 1. 18. 17:16
반응형

Overview

- Data collection : 1. data house에 있는 경우

                             2. data가 없으면 beautifulsoup, selenium 등으로 데이터 수집 가능

- data가 이미 저장되어 있는 경우

  > data correction

  > data processing

  > clean up

  > transformation

- ML : AI, ML, DL → DS

  > ML은 function(모델을 의미하는)을 선택, DL은 neuralnet 선택(활성화함수 선택이 모델을 의미하는 것은 아님) 

- Good enough model

  > svm

  > random forest

  > linear & logistic regression

- 주피터에서 show contextual help 누르면 쓰고 있는 함수들 정보를 다 볼수 있음 

- d3py → visualization 하기에 좋음

 

Turn raw data to features

- 문제 해결을 위한 domain 지식도 중요

  > 이상한 데이터(컬럼 성격에 따라 최소값과 최댓값이 다를 것임) 처리

- string to number 바꾸는 것들(one-hot, embedding 등)

 

Compare good versus bad features

- 예측하는 것이랑 연관이 있는 feature인지 확인

  > 예측할 것과 feature간의 상관관계 이용

 - 예측에 쓰일 데이터가 미래에 실시간으로 쓰여져야할 데이터라면>?, 즉 예측할 시점에 수집되지 않은 데이터가 feature라면?

  > 예측시간에 쓸 수 있는 데이터를 골라야함

  > sign 패턴을 실시간 데이터로 쓰기는 힘들지

  > 과거 데이터로 학습을 시키고, 그 feature가 예측시에 쓰일수 있는 데이터인지 확인한 다음에 적용해야함

- 숫자 데이터인지 확인 → 숫자데이터도 나타내고 있는 숫자가 의미있게 쓰일 수 있는 것인지를 확인해야함

- 카테고리형 데이터도 뉴메릭한 데이터로 바꾸어줘야함

- 적절한 feature 수?

  > 최소 5개 이상의 종류를 가진 카테고리형 데이터이면 괜찮은 듯

  > 5개의 다른 column이 있으면 괜찮은 듯

- feature를 선택하는데 도메인 지식이 중요

 

Represent features

- 카테고형 데이터 변형

- 데이터 형태에 따라 다르게 카테고리형 feature를 변형 시킬수 있음

  > hash는 전체 데이터 종류 사이즈, 두번째 num_buckets은 그 수대로 임베딩하는듯(그룹핑)

- 이상한 데이터가 있을 경우 카테고리형 변수는 쓰레기로 취급해서 0으로 모든 값을 만들어 주는 방법

  > missing value 처리 방법이지

 

 

Feature engineering

- 뉴메릭을 카테고리형으로 바꿔서 분석 가능

- 데이터의 capped를 정해줄수 있어(즉, 최대값을 정해주는 방법) → 클린하는 방법(아웃라이어제거 or 그값 이상이면 다 합쳐진 값 적용)

- tf.data 는 많은 데이터를 읽어오는 용도 → 분산처리를 가능하게 위함

- scaling

  > min-max scaler

  > standardization scaler

  > robust saler

- feature engineering을 이용해서 새로운 데이터를 생성

  > 조합하는 방법(x**2, x1+x2 등)

- ctrl  + shift + - → 주피터 코드 cell을 분리해줌

- feature 엔지니어링 한 로직을 feature_cols에 넣어주고 모델에 넣어주면, 데이터가 들어가고 나서 내가 정한 형식에 맞게 feature를 변형시킨 다음 모델이 학습함

  > 따로 전처리로 데이터를 전부 변환시키지않고 로직만 만들어 데이터를 넣을 수 있는 장점



 

Building Feature cross

- 아래 그림과 같은 경우, feature를 곱해주는 것으로도 이진분류를 진행할 수 있음

- feature cross는 버킷을 만들어서 분배하는 개념으로 볼 수 있음

  > polynomial 개념이여~

- permutation(순열)의 개념으로 n*m개의 경우가 생김

  > 복잡성을 증가시킴

 

 

 

Embedding from Feature crosses

- sparse data to dense data 로 바꾸는데 용이함 

- 일반적으로 차원수를 정하는 방법 → 가능한 더비변수 사이즈를 4제곱근 루트 씌운 수 정도

- embedding은 성격이 비슷한 녀석끼리 벡터값이 비슷하게 만들어주는것

 

Wide and Deep model

- memorization & generalization  

  >  memorization : 모든 새는 날개를 가지고 있다

  > generalization : 다른 피처들을 더 살펴볼 필요 있음

- wide model : 선형모델 → 패턴과 연관(feature를 구체적으로 적용함)

- deep model : 딥러닝 

- sparse data 에는 선형 모델이 조금 더 잘 작동함(딥러닝 모델보다)

- dese data 에는 deep model이 잘 작동함

- dnnlinearcombined → 컬럼(features)을 나눠서 집어 넣을 수 있음 

 

- sparse data를 임베딩 한것도 딥러닝에 넣는데 왜 굳이 리니어한 sparse feature를 넣어야 하나?

  > 펭귄같은 경우, 이런 케이스를 모델이 기억하고 있기를 원함

  > memorization을 위해서 리니어한 wide 모델이 들어가게 됨

 

 

Feature preprocessing 단계를 따로 만들지 않으려면 모델에 그래프로 단계를 저장해라!!!

 

- model에 들어가는 feature_cols를 정해놓으면 모델이 저장되면 모델을 돌릴때 알아서 preprocess단계가 적용되어 모델에 들어가게 됨 

- 그러나 tf.feature_column을 이용하여 preprocess를 하는 것은 제한적임

- 머신에서 병렬로 최적화해서 처리할 수 있는 한 방법이기 함



** feature_colunm.~ → placeholder 만들어 놓는 것이랑 같은 개념

 

728x90
반응형
LIST

'Machine Learning' 카테고리의 다른 글

Learning rate and Batch size  (0) 2020.01.18
Regularization  (0) 2020.01.18
Distributed training (feat.GCP CMLE)  (0) 2020.01.12
Deep Neural Networks 기초  (0) 2020.01.12
Linear & Logistic regression  (0) 2020.01.10
Comments