[Python.ML] Feature, 독립변수, input 값 알아보기

2020. 11. 28. 05:00Python과 머신러닝/웹 데이터 추출

이전 포스트

 

[Python.ML] Python & Machine Learning Overview

요약 Machine Learning을 쉽게 설명하면, 컴퓨터에게 무한반복의 학습을 통해 하나의 task를 잘하도록 교육하는 것이다. Machine Learning의 목적은 기존 데이터를 가지고 새로운 데이터의 결과를 예측하

coding-grandpa.tistory.com

 

Feature란?

  • 머신러닝이란 결국 주어진 x값들에 대한 y값을 계산할 수 있는 하나의 함수 f를 찾는 것이다.
  • Y라는 종속변수를 계산하기 위해 사용되는 input 값 혹은 독립변수를 우리는 하나의 Feature라고 부른다.
  • Machine Leraning 시에는 이 Feature를 하나의 vector로 표현한다.
  • Feature가 1개이면 y와 x의 상관관계를 2차원 그래프로 표현이 가능하다
  • 마찬가지로 Feature가 2개이면 3차원 그래프로 표현이 가능하다.

 

Data의 종류

  • 데이터의 타입을 구분하는 방법은 여러 가지가 있어서, 몇 가지 구분 기준과 용어를 정의한다.

 

연속형 데이터와 이산형 데이터로 구분

  1. 연속형 데이터 (Continuous Data) : 온도, 불량률 등 연속적인 숫자로 표현되는 데이터
  2. 이산형 데이터 (Discrete Data) : 성별, 분류 등 연속적인 숫자가 아닌 구분되어진 값들로 구성된 데이터

 

Numerical / Nominal / Ordinal Type으로 구분

  1. Numerical Data
    • 정량적으로 측정 가능한 데이터 타입
    • 일반적으로 정수 또는 실수로 표현
    • 예로는 온도, 자동차 속도, 시간 등이 존재한다
  2. Nominal Data
    • 정량적인 값이 아닌 범주로 분류 가능한 데이터 타입
    • 예를 들어 A 학교와 B 학교를 다니는 학생을 구분하고자 한다면
    • 모든 학생은 A_학교, B_학교 라는 변수에 해당하는 데이터를 가지고 있고,
    • A 학교에 다니는 학생은 A_학교 = 1이고, B 학교를 다니는 학생은 B_학교 = 1일 것이다.
    • 이와 같이 숫자 1이 수치로서 의미는 없지만, 범주 / 분류로의 의미가 있을 경우 이를 Nominal Data라고 한다.
  3. Ordinal Data
    • Nominal Data와 유사하게 범주로 분류 가능한 데이터 타입이다.
      (크게 보면 Numerical Data vs. Nominal & Ordinal Data로 구분된다)
    • Nominal Data와의 차이는, Nominal Data의 값은 아무런 수치로서의 의미가 없는데 비해
    • Ordinal Data는 범주간의 순서가 존재하여 유의미한 데이터 비교가 가능하다.
    • 예를 들어 5점 척도 설문조사를 들 수 있다.
    • 1, 2, 3, 4, 5의 범주로 상사를 평가하거나, 강의를 평가하기 때문에 5개의 범주만 존재하지만,
      각 범주에는 순서가 존재한다는 차이가 있다. 

 

Machine Learning에서 데이터를 처리할 때 고려할 유의사항

  • 데이터를 전처리하기 위해서 다뤄야 할 내용이 아주 많지만, 몇 가지만 미리 정리하자면 다음과 같다.

 

1. Feature마다 최대/최소가 다르면 안 된다

  • Feature마다 최대/최소가 다르면, 각 feature가 y(종속변수)에 미치는 영향이 임의로 달라지게 된다.
  • 예를 들어, 카페인 함량이라는 feature는 아주 소량이기 때문에 0~10mg 정도의 값을 가지지만 가격은 0~500,000원 까지 존재한다면, 가격이 y에 항상 더 큰 영향을 미치는 것처럼 보이게 된다.
  • 이를 해결하기 위해서는 각 feature 별로 정규화(normalization)를 해야 하고, 이는 추후 포스트에서 추가 정리할 계획이다.

 

2. Nominal/Ordinal Data는 어떻게 표현할지 고려가 필요하다.

  • One-hot encoding 방식을 많이 사용하는데, 이에 대해서도 다음 포스트에서 정리 예정이다.

 

3. 잘못 기입된 값들에 대한 처리

  • 우리가 예제로 보는 데이터는 아주 순도 높고 정제된 데이터만 존재한다.
  • 하지만 데이터 분석의 가장 기초는 산재하고 정제되지 않은 데이터를 전처리하는 곳에서 시작한다.
  • 그 과정 중에 잘못 기입된 값들을 어떻게 발견하고 수정할지에 대해서도 꾸준한 고민이 필요하다.

 

4. 값이 없을 경우에 대한 처리

  • 5년 전만 해도 우리나라는 미세먼지에 대해 민감하게 생각하지 않아서 5년 이전의 데이터는 존재하지 않는다.
  • 이런 경우 최근 5년의 데이터만 사용해서 미래의 날씨를 예측할 것인가? 아니면 5년 이전의 미세먼지 데이터는 다른 방식으로 처리할 것인가? 등등 고려가 필요하다.
  • 값이 없는 경우를 우리는 '결측치'라고 정의하고 지나간다.

 

5. 극단적으로 큰 값 / 작은 값에 대한 처리

  • Outlier에 대한 처리도 필요하다.
  • 이러한 값들이 대부분의 사례들에 대한 예측을 오히려 망치기 때문인데, 이를 완전히 제거할지, 제거한다면 어디까지가 Outlier인지 등을 결정해야 한다.

 

마무리

 

[Python.ML] Pandas로 데이터 불러오기

0. 요약 Pandas란 무엇이고, Pandas를 통해 어떤 데이터를 읽어 들일 수 있는지 보려고 한다. 실제 예제를 통해서 어떻게 csv 형태의 데이터를 읽어 들일 수 있는지도 볼 계획이다. 1. 용어 정리 데이터

coding-grandpa.tistory.com