데이터가 뭔가요 ?

용가리·2024년 8월 24일

반갑습니다.
우리가 아무렇지 않게 말하는 데이터에 대해 설명해볼까 합니다.
맨날 데이터데이터하는데 데이터가 뭔지는 알아야겠죠

데이터에 대한 이해는 아주 중요합니다.
본인이 사용하는 데이터의 특성을 파악하고, 그 특성에 맞게 이리저리 사용할 수 있는 유연성을 가져야 데이터 관련 직무를 잘 해낼 수 있겠습니다.

그럼 데이터의 종류에 대해 알아보겠습니다.

데이터의 종류들

데이터는 모두 본인만의 도메인을 가지고 있습니다.
도메인은 간단히 말하면 데이터의 분야를 의미합니다.
분야는 다양한데

로그 데이터
주식 데이터
이미지, 영상 데이터
거래 기록 데이터
인구 통계
설문 데이터

등등이 있겠습니다.
그럼 데이터를 어떻게 저장하냐
다양한 방법이 있고, 일반적으로는 CSV, JSON, XML 등으로 저장합니다.
csv파일은 많이 들어보셨을 것 같습니다.
comma seperated values라고 하는데, 파일을 열어보면 각 값이 ' , '로 나누어져 있습니다.
Pandas의 read_csv를 통해 불러올 수 있습니다.
다른 파일들도 형태에 맞게 불러오는 모듈들이 있으니, 잘 활용하면 될것같습니다.

데이터는 비정형, 반정형, 정형 데이터로 구분됩니다.
정형 데이터는 우리가 데이터베이스에 잘 넣을수 있는 구조를 의미하고, 반정형 데이터는 트리 구조 같이 선형 구조가 아닌 데이터들을 의미합니다. (Json같은거)
마지막으로 반정형 데이터는 이미지, 영상같은 형식이 정형화돼있지 않은 데이터들을 의미합니다.

데이터들은 어떤 value를 갖냐에 따라서도 분류가 됩니다.

데이터는 크게 범주형 데이터, 수치형 데이터로 분류될 수 있습니다.
범주형 데이터는 또 순서형 데이터, 명목형 데이터로 나뉘고
수치형 데이터는 이산형 데이터, 연속형 데이터로 나뉩니다.
뭔가 시험문제내기 딱 좋은 분류같네요.

1. 범주형 데이터

범주형 데이터는 수치로 비교될 수 없는 녀석들을 의미합니다.
아래를 읽어보시면 감을 잡으실 수 있다고 생각합니다.

1. 명목형 데이터

순서에 상관없이 항목으로 구분되는 애들입니다.
과일 종류, 나라 종류, 성별 등이 예시로 있겠습니다.

2. 순서형 데이터

값이 우위로 정해질 수 있는 데이터 등을 의미합니다.
영화 별점 순위, 선호도 조사 등이 있습니다.
수치형 데이터와 헷갈릴 수 있는데, 수치형 데이터들은 '두배'라는 의미를 진짜 두배로 받아들일 수 있고, 순서형 데이터들은 곱하기 2를 한다고 두배 좋아지진 않습니다.
별점 2점과 별점 4점은 두배의 차이를 가지고 있지 않죠.
이런 녀석들이 순서형 데이터입니다.

2. 수치형 데이터

수치형 데이터는 범주형 데이터와 반대로 수치들로 나타낼 수 있는 친구들을 의미합니다.

1. 이산형 데이터

이산형 에서 알 수 있겠지만 셀 수 있는 데이터들을 의미합니다.
뭐 동물이 몇마리냐 사람이 몇명이냐
사람이 0.5명일 수 는 없겠죠. 그런 녀석들입니다.

2. 연속형 데이터

연속형 데이터는 수치형 데이터와 반대로 값이 다양하게 분포할 가능성이 있는 데이터들을 의미합니다.
과일의 당도, 사람의 키 등이 있겠습니다.
(롤에서 0.5인분을 했다는 표현을 많이 하는데, 이거도 연속형 데이터겠죠?)

3. 순환형 데이터

순환형 데이터란 각도, 계절, 날짜와 같이 같은 기준 내에서 계속 도는 데이터들을 의미합니다.

데이터의 전처리

1. 범주형 데이터의 전처리

데이터의 전처리는 아주 중요합니다.
컴퓨터가 알아먹을 수 있는 형태로 바꿔야 모델을 학습시킬 수 있기 때문이죠.

가령, ['26세', '남자'] 라는 데이터가 있다면 이를 모델에 넣었을 때

ㅇㅇ 슴여섯 남자군
하진 않습니다.(그랬으면 좋겠다)

그럼 어떻게 하느냐
뭐 이진법으로 바꾼다던가
라벨인코딩을 한다던가
원핫인코딩을 한다던가
임베딩을 한다던가
여러가지 방법이 있습니다.

남자 라는 데이터가 있다면
남 : [1] 여 : [0]
로 표현할 수 있고(Label Encoding), 또는
[1,0], [0,1]로도 표현할 수 있습니다(One-hot Encoding)
아니면 단어나 문장을 벡터로도 바꿔서 수치화 할 수 있겠습니다.

각각의 전처리 방법은 단점들 또한 존재합니다.

LabelEncoding은 만약 24번째 카테고리를 24로 표현한다면
선형적 연산이 일어나는 모델에는 좋지 않습니다.(값의 크기가 다르기 때문)

One-hot Encoding 또한 24번째 카테고리를 [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]로 표현한다면
용량도 많이 차고 차원도 길어져서 모델에 좋지 않습니다.

범주형 데이터의 전처리는 알아야 할 게 많군요.
특성에 맞게 잘 이용하시면 되겠습니다.

2. 수치형 데이터의 전처리

수치형 데이터들은 대부분 정규분포에 맞게 바꾸는 것이 중요합니다.
어느 한 피쳐의 값만 크다면 수렴에도 문제가 생길 수 있죠.
대부분의 AI 모델들은 파라미터 초기화부터 전부 정규분포에 맞는 형태의 데이터가 들어온다는 가정 하에 만들기 때문에, 이를 지키는 것이 성능을 사수하는데에 도움이 되겠습니다.

  1. 정규화
    목적은 최대값이 1, 최소값이 0(-1도 사용합니다)이 되도록 만드는 것입니다.
    식은 xmin(X)max(X)min(X)\frac{x - min(X)}{max(X)-min(X)}입니다.
  2. 표준화
    표준화는 데이터를 정규분포 형태로 바꾸는 것을 의미합니다.
    데이터의 평균을 뺀 뒤, 표준편차로 나누면 표준화를 할 수 있습니다.

3. 오른쪽 또는 왼쪽으로 기울어져 있는 데이터는?

위 사진과 같이 왼쪽, 오른쪽으로 치우친 데이터는 어떻게 해야 할까요
기울어진 정도를 skew라고 표현합니다.
왼쪽으로 기울어진 상태는 skewness가 양수
오른쪽으로 기울어진 상태는 skewness가 음수입니다.

이런 데이터들은 log나 지수를 씌움으로서 해결할 수 있습니다.
얼마나 기울어졌는지를 보고 알맞는 지수나 로그를 사용하면 되겠습니다.

제가 아는 대로 데이터에 대해 설명해봤습니다.
이 외에도 전처리는 데이터가 텍스트냐 이미지냐에 따라 다양한 방법이 존재합니다.
이후에도 추가적으로 써보도록 하겠습니다.
감사합니당

0개의 댓글