2021. 12. 23. 05:11ㆍ파이썬/데이터 분석
탐색적 데이터 분석
탐색적 데이터 분석은 모든 데이터 과학 프로젝트의 첫걸음이라고 할 수 있다.
고전적인 통계학에서는 적은 표본을 가지고 더 큰 모집단에 대한 결론을 도출하기 위한 복잡한 과정에 관해 다루었다.
이를 추론이라고 한다.
이를 공학과 컴퓨터 과학 분야에 접목해서 데이터 분석이라는 새로운 과학적 학문이 탄생했다.
존 투키는 요약통계량(평균, 중앙값, 분위수)과 데이터 집합을 그림(상자그림, 산점도)으로 표현하는데 도움이 되는 도표를 제시했다.
데이터 분석에 있어 기본이 되는 정형 데이터 (관계형 데이터베이스 등 흔히 볼 수 있는 일반적인 테이블 형태)의 종류를알아보자.
가장 기본이 되는 데이터의 종류는 수치형 데이터와 범주형 데이터로 이루어져 있다.
수치형 데이터: 숫자를 이용해 표현할 수 있는 데이터 (연산 가능)
범주형 데이터: 가능한 범주 안의 값만을 취하는 데이터
수치형 데이터와 범주형 데이터는 시각화, 기계 학습 등에서 다르게 처리해주는 부분이 있으니 기억하고 활용하자.
먼저 수치형 데이터를 살펴보자. 수치를 느끼는 데이터가 아니다. 수치형 데이터는 풍속이나 지속 시간(m, 초) 같은 연속형 데이터, 그리고 사건의 발생 빈도 (회, %)같은 이산 데이터가 있다.
이어서 범주형 데이터는 참/ 거짓 혹은 1과 0만을 갖는 이진 데이터와 값들 사이의 분명한 순위를 갖는 순서형 데이터가 있다.
데이터가 범주형이라는 정보는 소프트웨어가 차트 생성이나 모델 피팅 등 통계분석을 수행하는 방식을 결정하는 데 큰 도움을 준다. 파이썬에서는 사이킷런 패키지에서 sklearn.preprocessing.OrdinalEncoder로 순서형 데이터를 지원한다.
즉 데이터 종류를 정하는 것은 해당 데이터를 어떻게 처리할지를 정하는 것과 같다.
python의 라이브러리인 pandas를 참고하면 다양한 데이터 종류와 활용하는 방법이 잘 설명되어 있다.
테이블 형식이 아닌 데이터 구조도 있다.
시계열 데이터, 공간 데이터, 그래프 데이터 등이 있다. 이 데이터를 분석하거나 이용할 때 각자에 맞는 특화된 방법론이 있다. 위 분야는 필요하면 알아서 공부 하시길..
위치 추정 (대표값 구하기)
수치형 데이터를 살펴보는 가장 기초적인 단계는 각 피쳐(변수)의 '대푯값'을 구하는 것이다. 이는 대부분 값이 어디 쯤에 위치하는 지(중심경향성)를 나타내는 추정값이다.
위처럼 중심경향성을 살펴볼 때 평균을 구하기만 하면 되지 않을까? 하지만 가장 좋은 방법은 아니다.
몇 가지 이유로 평균을 대체할 만한 다른 값들을 개발해냈다.
info :
통계학에서는 데이터로부터 얻은 값(계산된 값)을 추정값으로 표현하고 데이터 과학에서는 측정 지표라고 표현한다.
이러한 차이는 통계학과 데이터 과학에서의 접근법의 차이를 반영한다. 통계학에서는 불확실성을 확실히 이해하고자 추정을 한다고 하는 반면, 데이터과학은 비지니스의 관점에서 측정을 한다고 표현을 하는 것이다.
평균, 절사평균, 가중 평균, 중간값, 가중 중간값 등등으로 대표값을 구할 수 있다. (인터넷 서치 ㄱㄱ)
특잇값
특잇값은 어떤 데이터 집합에서 다른 값들과 매우 멀리 떨어져 있는 값들을 말한다. 특잇값의 정확한 정의는 다소 주관적일 수 있다. 물론 어떤 경우든, 이러한 특잇값들을 확인하고 자세히 살펴볼 필요가 있다.
중간값은 결과를 왜곡할 수도 있는 특잇값들의 영향을 받지 않으므로 로버스트한 위치 추정 방법이라고 알려져 있다.
(로버스트함 : 극단값에 민감하지 않다.)
이를 이상 검출이라 한다. 전형적인 데이터 분석에서 특잇값은 유익한 정보를 제공하기도 하고, 골칫거리가 되기도 한다. 하지만 이와 반대로, 이상 검출에서는 대부분의 정상적인 데이터보다는 예외적으로 측정된 특잇값이 주된 관심의 대상이 된다. 중간값만이 로버스트한 위치를 추정하는 유일한 방법은 아니다.절사평균 역시 특잇값의 영향을 줄이기 위해 많이 사용됨.
변이 추정
앞서 살펴본 위치 추정은 데이터의 특징 중 하나인 위치를 요약하는 다양한 요소들 중 하나이다.
이제 살펴 볼 두 번째 요소인 변이는 데이터 값이 얼마나 밀집해 있는지 혹은 퍼져 있는지를 나타내는 산포도를 나타낸다. 변이를 측정하고, 이를 줄이고, 실제 변이와 랜덤을 구분하고, 실제 변이의 다양한 요인들을 알아보고, 변이가 있는 상황에서 결정을 내리는 등, 통계의 핵심에 이 변이가 있다.
편차
대표적으로 사용되는 변이 추정들은 관측 데이터와 위치 추정값(위에서 구한 것) 사이의 차이, 즉 편차를 기본으로 한다.
예를 들면 각 요소에 평균을 빼준다. ([1, 4, 4] 라는 숫자 데이터가 있을 경우, 평균은 3이다. 이때 각 편차는 -2, 1, 1.)
이러한 편차는 데이터가 중앙값을 주변으로 얼마나 퍼져 있는지 말해준다.
변이를 측정하는 한 가지 방법은 바로 이러한 편차들의 대푯값을 추정하는 것이다. 그렇다고 변이들의 평균을 구하면 0이 나오기 때문에 음의 편차와 양의 편차가 상쇄하기 때문에 바람직하지 않다. 변이를 측정하는 법은 아래와 같다.
평균절대편차, 분산, 표준편차, 중위절대편차 등
표준편차가 원래 데이터와 같은 스케일이 있기 때문에 분산보다 훨씬 해석하기가 쉽다.
또한 위 방법으로 구한 변이 측정값들은 특잇값과 극단값에 로버스트하지 않다. 분산과 표준편차는 제곱편차를 사용하기 때문에 특히 특잇값에 민감하다. 로버스트한 변이 추정값으로는 중간값의 중위절대편차가 있다
info:
위 데이터 모두 동일한 추정은 아니지만, 모두 데이터가 정규분포에서 왔다고 가정하고 있다.
백분위수에 기초한 추정
변이를 추정하는 또 다른 접근은 정렬된 데이터가 얼마나 퍼져 있는지를 보는 것이다. 정렬(순위) 데이터를 나타내는 통계량을 순서통계량이라고 부른다. 여기서 가장 기본이 되는 측도는 가장 큰 값과 작은 값의 차이를 나타내는 범위이다.
그렇지만 이 범위는 특잇값에 매우 민감하며 데이터의 변이를 측정하는 데 그렇게 유용하지는 않다.
특잇값에 민감한 것을 피하기 위해, 범위의 양 끝에서 값들을 지운 후, 범위를 다시 알아볼 수도 있다. 좀더 구체적으로 말하자면 백분위수 사이의 차이를 가지고 이런 식의 추정을 하는 방법들을 이야기 하는 것이다.
이 방법으로 가장 대표적인 방법은 사분위범위이다.
데이터 분포 탐색하기
위에서 알아본 추정들은 모두 데이터의 위치 혹은 변이를 나타내기 위한 하나의 수치로 데이터를 요약하고 있다.
이를 시각화하는 방법을 소개한다. (시각화 코드는 구글 검색 ㄱㄱ)
상자그림
데이터의 분포를 시각화하기 위한 간단한 방법.
상자그림은 백분위수를 이용해 데이터의 분산(변이 추정)을 손쉽게 시각화하는 방법이다.
도수분포표와 히스토그램
도수분포표는 어떤 구간에 해당하는 수치 데이터 값들의 빈도를 나타낸 기록이다.
보통 동일한 크기의 구간으로 나눈 다음, 각 구간마다 몇 개의 변숫값이 존재하는지를 보여주기 위해 사용을 한다.
히스토그램은 위 도수분포표를 시각화한 것이다. x축은 구간, y축은 빈도수를 나타낸다.
밀도 그림
밀도 그림은 히스토그램과 관련되어 있다. 데이터의 분포를 연속된 선으로 보여준다. 히스토그램과 가장 큰 차이는 y축을 개수가 아닌 비율로 표시한다.
이진 데이터와 범주 데이터 탐색하기
범주형 데이터에서는 간단한 비율이나 퍼센트를 이용해 데이터에 관해 이야기할 수 있다.
이진변수나 범주가 몇 개 안 되는 범주형 변수를 분석하는 것은 그렇게 어렵지 않다. 이진변수의 경우 1과 같이 중요한 범주의 비율이 어느 정도 되는지 알아보면 된다.
이를 위해 막대도표는 어떤 범주형 자료를 보여줄 때 주로 사용된다. (히스토그램과 헷갈리지 말자!!)
최빈값
최빈값이란 데이터에서 가장 자주 등장하는 값 혹은 값들을 의미한다. 최빈값은 범주형 데이터를 분석하는 데 간단히 사용된다.
또 기댓값 등을 알아보면 범주형 데이터를 분석하는 것.
상관관계
많은 경우 모델링 프로젝트에서 탐색적 데이터 분석이라고 하면 변수 간의, 혹은 변수와 예측하고자 하는 변수의 상관관계를 조사해보아야 한다. 이를 양의 상관관계 혹은 음의 상관관계를 갖고 있다고 말한다. 아니면 상관관계가 없을 수도 있다.
상관관계를 알아보는 것에 상관계수라는 표준화된 방식이 유용한데, 선형적인 관계에서 사용을 하는 방법이다. 이를 피어슨 상관계수라고도 한다. 위는 seaborn.heatmap 패키지로 시각화해서 볼 수 있다.
다른 형태의 상관계수 또한 존재하는 데, 로나 타우와 같은 것들이다. 이들은 데이터의 순위를 기초로 하는 상관계수이기 때문에 좀 더 로버스트하며 비선형 관계도 다룰 수 있다. 하지만 주로 데이터 과학자들은 피어슨 상관계수, 혹은 이것의 로버스트한 다른 버전들을 탐색 분석에 주로 사용한다. 순위 기반 추정법은 보통 데이터의 크기가 작고 어떤 특별한 가설검정이 필요할 때 주로 사용된다. 상관계수는 또한 특잇값에 민감하다.(대체할 수 있는 로버스트한 방법들을 제공하는 패키지들이 있다. 사이킷런의 sklearn.covariance)
산점도
두 변수 사이의 관계를 시각화하는 가장 기본적인 방법은 산점도를 그려보는 것이다. x축, y축은 각각의 변수들을 의미하고 그래프의 각 점은 하나의 레코드를 의미한다. pandas의 plot.scatter를 사용하면 된다.
두 개 이상의 변수 탐색하기
평균과 분산과 같이 익숙한 추정값들은 한 번에 하나의 변수를 다룬다. 이를 일변량분석이라고 한다.
위 산점도는 이변량분석이며, 셋 이상의 변수를 다루는 법은 다변량분석이라고 지칭한다.
이변량분석 혹은 다변량분석 형태는 데이터가 수치형인지, 범주형인지, 데이터의 특성에 따라 달라진다.
이변량 분석 도구
수치형 변수와 수치형 변수 : 육각형 구간, 등고선 등
범주형 변수와 범주형 변수 : 분할표
범주형 변수와 범주형 변수: 바이올린 도표 등
다변수 시각화
조건화라는 개념을 통해 위의 두 변수 비교용 도표를 더 여러 변수를 비교하는 용도로 확장하여 활용할 수 있다.
Seaborn, Bokeh를 통해 만들 수 있으며, Tableau나 Spotfire 같은 비지니스 지능형 플랫폼에도 없어서는 안 될 중요한 요소이다.
마치며
데이터를 다루는 모든 프로젝트에서 가장 우선적이며 가장 중요한 과정이 데이터를 들여다보는 것이다.
탐색적 분석은 모든 데이터 과학 프로젝트의 초석이 되어야 한다.
'파이썬 > 데이터 분석' 카테고리의 다른 글
| pandas melt 메서드 예시 (0) | 2022.07.20 |
|---|---|
| facebook prophet으로 비트코인 가격 예측해보기 (1) | 2021.12.06 |
| Pandas 시계열 데이터에 빠진 날짜 확인, 날짜 채우기 (0) | 2021.12.04 |
| 2. 데이터 탐색과 빈도 분석 (쭉 읽기 좋음.) (0) | 2021.09.09 |
| 1. 넘파이와 판다스 칸탄 정리 (간단 정리) (0) | 2021.09.08 |