[Python.ML] Feature, 독립변수, input 값 알아보기
2020. 11. 28. 05:00ㆍPython과 머신러닝/웹 데이터 추출
이전 포스트
Feature란?
- 머신러닝이란 결국 주어진 x값들에 대한 y값을 계산할 수 있는 하나의 함수 f를 찾는 것이다.
- Y라는 종속변수를 계산하기 위해 사용되는 input 값 혹은 독립변수를 우리는 하나의 Feature라고 부른다.
- Machine Leraning 시에는 이 Feature를 하나의 vector로 표현한다.
- Feature가 1개이면 y와 x의 상관관계를 2차원 그래프로 표현이 가능하다
- 마찬가지로 Feature가 2개이면 3차원 그래프로 표현이 가능하다.
Data의 종류
- 데이터의 타입을 구분하는 방법은 여러 가지가 있어서, 몇 가지 구분 기준과 용어를 정의한다.
연속형 데이터와 이산형 데이터로 구분
- 연속형 데이터 (Continuous Data) : 온도, 불량률 등 연속적인 숫자로 표현되는 데이터
- 이산형 데이터 (Discrete Data) : 성별, 분류 등 연속적인 숫자가 아닌 구분되어진 값들로 구성된 데이터
Numerical / Nominal / Ordinal Type으로 구분
- Numerical Data
- 정량적으로 측정 가능한 데이터 타입
- 일반적으로 정수 또는 실수로 표현
- 예로는 온도, 자동차 속도, 시간 등이 존재한다
- Nominal Data
- 정량적인 값이 아닌 범주로 분류 가능한 데이터 타입
- 예를 들어 A 학교와 B 학교를 다니는 학생을 구분하고자 한다면
- 모든 학생은 A_학교, B_학교 라는 변수에 해당하는 데이터를 가지고 있고,
- A 학교에 다니는 학생은 A_학교 = 1이고, B 학교를 다니는 학생은 B_학교 = 1일 것이다.
- 이와 같이 숫자 1이 수치로서 의미는 없지만, 범주 / 분류로의 의미가 있을 경우 이를 Nominal Data라고 한다.
- Ordinal Data
- Nominal Data와 유사하게 범주로 분류 가능한 데이터 타입이다.
(크게 보면 Numerical Data vs. Nominal & Ordinal Data로 구분된다) - Nominal Data와의 차이는, Nominal Data의 값은 아무런 수치로서의 의미가 없는데 비해
- Ordinal Data는 범주간의 순서가 존재하여 유의미한 데이터 비교가 가능하다.
- 예를 들어 5점 척도 설문조사를 들 수 있다.
- 1, 2, 3, 4, 5의 범주로 상사를 평가하거나, 강의를 평가하기 때문에 5개의 범주만 존재하지만,
각 범주에는 순서가 존재한다는 차이가 있다.
- Nominal Data와 유사하게 범주로 분류 가능한 데이터 타입이다.
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인지 등을 결정해야 한다.
마무리
- 데이터 타입은 우리 주변에서 항상 보는 데이터 형에 대한 정의일 뿐이다.
- 중요한 것은 이러한 데이터를 어떻게 컴퓨터에게 전달해줘야 방대한 양의 데이터를 효율적/효과적으로 처리할지에 대한 고민이 필요하다
- 데이터를 처리할 때 유의할 점들을 5가지 정도 정리했는데, 하나씩 깊게 다뤄보자.
- 2020/11/30 - [Python과 머신러닝/웹 데이터 추출] - [Python.ML] Pandas로 데이터 불러오기
'Python과 머신러닝 > 웹 데이터 추출' 카테고리의 다른 글
[Python.ML] Pandas로 데이터 불러오기 (0) | 2020.11.30 |
---|---|
[Python.ML] Python & Machine Learning Overview (0) | 2020.11.27 |
[Python.JSON] Python으로 JSON 데이터 저장 및 전달 - 실전편 (0) | 2020.11.26 |
[Python.JSON] Python으로 JSON 데이터 읽기 - 실전편 (0) | 2020.11.25 |
[Python.JSON] Python으로 JSON 데이터 파싱 - 이론편 (0) | 2020.11.24 |