이전

리뷰 (2)

한줄평
평점 분포
  • 리뷰 총점10 50%
  • 리뷰 총점8 50%
  • 리뷰 총점6 0%
  • 리뷰 총점4 0%
  • 리뷰 총점2 0%
연령대별 평균 점수
  • 10대 0.0
  • 20대 0.0
  • 30대 10.0
  • 40대 8.0
  • 50대 0.0
리뷰 총점 종이책 구매
피처 엔지니어링, 제대로 시작하기
"피처 엔지니어링, 제대로 시작하기" 내용보기
데이터 분석 업무 중 피처 엔지니어링에 대해서 설명해주는 책입니다. 솔직히 캐글이나 데이콘에서 공모전 참여하거나 토이 프로젝트 하기 전에 꼭 한 번 보면 좋은 책인 거 같아요 그냥 강의나 글에서 얻을 수 없었던 관점에서 많이 얻을 수 있어서 좋았습니다.
"피처 엔지니어링, 제대로 시작하기" 내용보기
데이터 분석 업무 중 피처 엔지니어링에 대해서 설명해주는 책입니다. 솔직히 캐글이나 데이콘에서 공모전 참여하거나 토이 프로젝트 하기 전에 꼭 한 번 보면 좋은 책인 거 같아요 그냥 강의나 글에서 얻을 수 없었던 관점에서 많이 얻을 수 있어서 좋았습니다. 
e******5 2024.02.29. 신고 공감 0 댓글 0
리뷰 총점 종이책 구매
[도서] 피처 엔지니어링, 제대로 시작하기
"[도서] 피처 엔지니어링, 제대로 시작하기" 내용보기
읽기전데이터를 많이 들여다 보려고 노력하고 있는데, 이거 참 기본이 있어야지...특히 데이터를 어떻게 들여다 볼 것인가? 에 대한 고민이 필요해서 구매 한 책.기존 딥러닝 책들은, 이미 잘 정제 되어 있거나, 필요한 값들을 이미 선별해 둔 책이 많다.하지만, 실제 데이터들은 잘 정제되어 있지도, 어떠한 값을 딥러닝에 넣어야 할지도 모르니....에라, 모르겠다. 걍 딥러닝에 다 때려
"[도서] 피처 엔지니어링, 제대로 시작하기" 내용보기

읽기전

  • 데이터를 많이 들여다 보려고 노력하고 있는데, 이거 참 기본이 있어야지...

  • 특히 데이터를 어떻게 들여다 볼 것인가? 에 대한 고민이 필요해서 구매 한 책.

  • 기존 딥러닝 책들은, 이미 잘 정제 되어 있거나, 필요한 값들을 이미 선별해 둔 책이 많다.

  • 하지만, 실제 데이터들은 잘 정제되어 있지도, 어떠한 값을 딥러닝에 넣어야 할지도 모르니....

  • 에라, 모르겠다. 걍 딥러닝에 다 때려 박으면 되지 싶다가도,

    • 그래도 기본은 알아야지.
    • 필요한 것만 때려 박으면 더 잘 되겠지.
  • 싶어서 구매한 책

  • 이 책에 있는 대부분의 예제는 전체 소스코드가 나와 있지 않고, 설명이 생략 된 것도 꽤나 된다.

  • 그러므로 초보자가 읽기에 적당하지 않은듯 하다.

책 읽기

서문

옮긴이의 말

  • 하지만 너무나 다양한 데이터의 종류가 특성에 따라 경험적으로 수행돼 왔을 뿐, 이를 범용적으로 적용하는 방법에 대한 책이나 논문이 거의 없었다.
  • 머신 러닝 입문자들에게는 피처 엔지니어링에 대한 원리를 배우고 실습을 통해 실력을 높일 수 있는 좋은 기회가 될 것이며, 데이터 과학에 종사하는 분들에게는 그동안 경험적으로 수행해 오던 피처 엔지니어링 기법들을 암묵지에서 형식지로 정리하는 계기가 될 것이다.

들어가며

  • 모델은 피처(feature)를 입력으로 사용한다. 피처는 원시 데이터의 숫자적인 표현이다..
  • 피처 엔지니어링은 원시 데이터로부터 피처를 추출하고 이를 머신 러닝 모델에 적합한 형식으로 변환하는 작업이다.
  • 데이터와 모델은 매우 다양하기 때문에 피처 엔지니어링 방법으로 일반화 하기 어렵다.

1장 머신 러닝 파이프라인

데이터

  • 데이터, 모델, 피처, 모델 평가
    • 실제 세계의 현상에 대한 관측 결과
    • 데이터의 각 조각은 현실의 제한된 한 측면에 대한 창을 제공
    • 원시 데이터는 숫자가 아닌 경우가 많다. ( 앨리스가 수요일에 책을 샀다. )
    • 피처는 원시 데이터의 숫자적인 표현이다.
    • 우리가 해결하고자 과제에 적합한 모델에, 잘 들어 맞는 피처를 만들어야 한다.
    • 피처가 적으면 제대로 과제를 수행하지 못하고, 피처가 많아도 필요 없는 피처로 인해 모델의 학습에 많은 비용과 어려움이 있을 수 있다.
  • 원본 소스가 통찰력까지 가기는...
    • 소스 ->(추출 및 통합)-> 원시 데이터 -> (정제 및 변환) -> 피처 -> 모델링 -> 통찰력
    • 여기서 "정제 및 변환" 부분이 피처 엔지니어링 부분이다.

2장 숫자를 위한 멋진 트릭

  • 이미 숫자는 수학적 모델로 처리하기 쉬운 형식.
  • 하지만 좋은 피처는 데이터를 가장 두드러진 특징을 표현할 뿐만 아니라, 모델의 가정에도 맞아야 한다. 그러므로 피처 엔지니어링이 필요.
  • 고려사항
    • 값의 크기 : 양수? 음수?, 구간을 나눠야하나? 숫자가 누적되나?
    • 스케일 : 가장 큰 값, 가장 작은 값, 둘의 차이가 몇자리 수. 출력 값이 커질 수 있나? 출력값이 바이너리면?
    • 숫자 피처의 분포
    • 여러 피처를 조합해 더 복잡한 피처를 만들 수도 있음

스칼라, 벡터, 공간

  • 스칼라(scalar) : 단일 숫자 피처
  • 벡터(vector) : 방향이 있는 스칼라의 리스트, 벡터는 벡터공간내에 위치.
  • 벡터는 공간상의 한 점( 종종 원점에서 그 점까지의 선이나 화살표로 그린다. )

카운트 처리

  • 노래나 영화를 플레이 한 횟수 등 이런 카운트
  • 누군가가 조작하기가 쉬우므로, 그래도 사용할지, 존재 여부만 처리 할지, 몇개의 구간으로 나눌지 등을 고민해야 한다.

바이너리 변환

  • '견고한 척도'(통계 용어에서 "견고함"은 해당 기업이 매우 다양한 조건하에서도 잘 작동함을 말한다. 라는 말이 있는데.. 이걸 이쪽 세상에서는 로버스터(robust)라는 용어를 훨씬 더 많이 사용한다.
  • 데이터의 값이 너무 많이 차이가 나면, 그냥 1 과 0 으로 나눠 주는것도 가능하다.

양자화 또는 비닝

  • 비닝(binning)은 구간화 정도로 생각하면 되겠다.
  • 양자화랑 비슷한 듯.
  • 쉽게 말하면, 값을 구간을 두고 정리 한다는것. ( 10대, 20대, 30대 등 )
  • 고정폭 비닝
    • 나이를 가지고 할 것이라면, 10대, 20대로 할 수도 있지만, 삶의 단계에 맞게, 초등학교, 중학교, 고등학교, 대학교의 나이로 나누는것이 더 좋을 수도 있다.
    • 여러 자리수라면, 0 ~ 9, 10 ~ 100, 100 ~ 1000 등으로 나눌 수도 있다.
  • 분위수(quantile) 비닝
    • 그냥 고정폭 비닝은, 중간에 빈 값이 많으면 데이터가 없는 구간이 너무 많다.
    • 걍 전체 값의 1/2이나 1.4 단위, 혹은 1/10 단위로 나눠서 배치한다.

로그 변환

  • 작은 숫자가 많고, 큰 숫자가 듬성 듬성 적게 데이터가 존재한다면, 작은 숫자들을 좀 더 잘게 쪼개야 하고, 큰 숫자를 좀 더 모아줘야 한다.
  • 이럴때는 로그 변환을 사용하면 된다.
  • log10(x) 는
    • 1 ~ 10 사이의 숫자를 0 ~ 1 사이로 배치
    • 10 ~ 100 사이의 숫자를 1 ~ 2 사이로 배치
    • 100 ~ 1000 사이의 숫자를 2 ~ 3 사이로 배치 할 수 있다.
  • 즉, 큰 수의 변화량을 작은 변화량으로 바꿀 수 있어, 상대적으로 작은 숫자의 변화량을 더 잘 표현할 수 있게 된다.
  • 뒤에 Box-Cox 라는것도 나오는데, 잘 모르겠지만, 결국 데이터를 잘 분산한다는것에 목적이 있는 듯 하다.

피처 스케일링 또는 정규화

  • 위도나 경도는 피처의 숫자 값에 한계가 있음. 하지만 카운트는 한계가 없음.
  • 모델이 입력 피처의 스케일링(값 범위)에 민감하다면, 피처를 적절히 스케일링 해 주어야 한다.
  • 이걸 피처 스케일링, 혹은 피처 정규화(normalizataion)이라고 부른다.

min-max 스케일링

  • 제일 작은 값을 0, 제일 큰 값을 1로 변환
  • min-max scailing

표준화(분산 스케일링)

  • 피처 표준화(standardization) : 모든 데이터 포인트에 대한 피처의 평균을 빼고 분산으로 나눈다.
  • 그래서 분산 스케일링이라고도 부름
  • 스케일링된 피처의 결과는 평균이 0, 분산이 1
  • 즉 0을 중심으로 좌우로 적절히 데이터를 배치한다.

l2 정규화

  • 원본 피처 값을 유클리드 노름(norm)으로 불리는 l2 노름으로 정규화한다.(나눈다)
  • 원본 값 / (모든 데이터에 제곱을 한 뒤, 이를 모두 더하고, 다시 제급근(루트)를 씌워 준다.)
  • 자세한건 나도 모르니깐 통과.
  • 이상과 같은 피처스케일링은, 피처의 분포의 모양을 바꾸지는 않는다. 다만 분포에 대한 스케일만 변경한다.
  • 예를들면 원본 데이터를 이용해서 만든 그래프와, min-max를 이용해서 만들어진 그래프의 모양은 동일하다. 다만, 피처의 스케일만 달라져 있는 것이다.
  • 입력 피처들의 기준이 다를때는 비슷하게 만들어 주는것이 좋다. 방문자 수가 100만명 단위인데, 구매자 수가 100명 단위라면, 균형을 맞춰줄 필요가 있다.
  • 그렇지 않으면 모델 학습 알고리즘에서 수치 안정성 문제를 일으킬 수 있다.

상호작용 피처

  • 한개의 피처만을 사용하는것이 아니라, 두개의 피처를 모두 사용하는 방법.
  • 예를들면, "서울"에서 "30대" 같은것.
  • 고객의 위치만으로 예측하는것, 혹은 고객의 나이만으로 예측하는것 보다는, 둘 다의 값으로 예측하는것이 더 정확
  • 하지만, 더 복잡한 계산이 필요. 어떤 피처들 선택할 것인가도 문제.

피처 선택

  • 필요 없는 피처는 제거하는것이 모델의 복잡성을 줄일 수 있음.
  • 그러면 정확도는 거의 저하시키지 않고, 빠르게 연산 할 수 있을 것임.
  • 어느 피처가 중요한지 알아 내기 위해서, 오히려 전체 학습 시간이 오래 걸릴 수도 있음.

필터링

  • 피처와 목표 변수 사이의 상관관계, 상호 정보량등을 계산해 크게 영향을 미치지 않는것을 걍 제거.
  • 쉽게 할 수 있지만, 내가 필터링 할 피처를 잘못 선택할 수도 있다.
  • 아예 해당 데이터를 사용하지 않을 것이므로, 유용한 필터를 제거 할 수 있으므로, 보수적으로 선택해야 한다.

레퍼메소드

  • 비용은 많이 들지만, 피처의 하위 집합을 시험해 볼 수 있도록 해 줌.
  • 정보량이 많지 않을 수도 있지만, 조합했을 경우 유용한 것일 수 있으므로 실수를 방지 해 줌.

내장 메소드

  • 모델 학습 과정의 일부로서 피처 선택을 수행
  • 의사결정트리는 각 학습 단계에서 트리를 분할하기 위한 피처를 선택하게 되어 있음.
  • 선형 모델 학습에 사용하는 l1 정규화도, 모델 학습 과정의 일부로 피처를 선택하게 되어 있음.
  • 레퍼메소드 방식보다 강력하지 않지만, 비용이 절감
  • 필터링과 비교 했을 때 보다는 모델에 적합한 피쳐를 선택,
  • 필터링과, 내장 메소드 사이의 적절한 균현을 이룸
  • 이 책의 설명 범위가 벗어난다면서, 여기에 대한 설명을 다른곳을 찾아 보라고 함.

요약

  • 일반적인 숫자 피처에 대한 피처 엔지니어링을 설명
  • 통계적인 머신러닝에서 모든 데이터는 결국 숫자 피처로 귀결
  • 결국 몇가지 숫자 피처 엔지니어링 기법이 필요

자세한 내용은 https://blog.ggaman.com/1010 를 참고하세요.


t*****l 2019.05.20. 신고 공감 0 댓글 0