반응형

원본 링크




Visualize your data with Facets

데이터는 지저분하다. 종종 불균형(unbalanced)하고 레이블이 없으며 형편없게 값이 뿌려져 분석과 머신러능 훈련을 방해한다.

정리된 데이터를 얻기 위한 첫번째 단계는 정리가 필요한 곳을 이해하는 것이다. 이 글에서는 이 작업을 위한 도구를 소개한다.




Visualize your Data

데이터를 이해하는 것은 머신러닝을 위해 정리된 데이터셋을 얻기 위한 첫번째 단계이다. 그러나 어떠한 일반화된 방법으로 수행하기에 힘들 수 있다.

Facets라는 Google Research 오픈소스 프로젝트는 데이터를 시각화하여 모든 방법으로 이를 쪼갤 수 있다. 이는 데이터셋이 어떻게 배치되었는지를 알 수 있게 한다.


데이터가 기대하는 방법으로 보이지 않는 곳을 찾을 수 있게하여 Facets는 작은 사고를 줄이는데 도움을 준다.

Facets가 무엇처럼 보이는지 보자. 여러분이 설치없이 크롬브라우져에서 Facets를 해 볼 수 있도록 demo page on the web가 있다. 게다가 Facets 시각화는 Typescript code로 Polymer Web Components backed를 사용하여 쉽게 Jupyter와 웹페이지에 임베딩 될 수 있다.



Facets Overview

Facets overview는 여러분의 데이터셋에 대한 overview를 제공한다.


데이터의 컬럼을 손실 비율, 최대/최소값, 평균, 중간값, 표준편차 같은 통계같은 핵심적인 정보를 보여주는 열로 분리한다. 또한 대부분의 값이 0인 경우를 알 수 있게 하는 0인 값의 비율 또한 보여준다.


또한 여러분의 훈련/테스트 셋에서 데이터의 분포도 볼 수 있다. 이는 테스트 데이터가 훈련데이터셋과 유사한 분포를 갖는지 이중 점검하기 위한 좋은 방법이다.



So what?

적어도 스스로 이 수준의 분석을 하는 것이 기술적으로 최고의 사례지만 데이터의 모든 컬럼의 이러한 모든 면을 점검하는 것은 힘들다. 이 도구는 이 중요한 단계를 잊지 않도록 하고 비정상을 강조해 준다.



Facets Dive

이제 Facets Dive를 살펴보자. 이는 데이터셋을 좀 더 명확하게 하고 데이터 가각의 조각을 보기 위해 확대할 수 있게 한다.

여러분은 데이터셋의 어떠한 특성에 대해서도 열(row)과 행(column)으로 데이터를 'facets'할 수 있다. 이는 여러분이 신발을 온라인 쇼핑하는 것과 비슷하다. 즉 크기, 브랜드, 생상 같은 다른 범주로 필터(filter)한다. 좀 더 확실하게 하기 위해 예제를 보자.


인터페이스는 4개의 주요 구역으로 나뉜다. 중앙의 주요 영역은 데이터를 확대/축소할 수 있다. 왼쪽 패널에서 faceting, 위치, 색상을 제어하기 위한 드롭다운으로 데이터의 정렬형태를 바꿀 수 있다. 바로 아래는 중앙 디스틀레이에 대한 범례(legend)가 있다. 오른쪽 패널은 데이터의 특정 열(row)에 대한 상세 뷰이다. 특정 데이터 포인트의 상세를 보기 위해 중앙 시각화영역에서 열을 선택할 수 있다.

이제 이 모두가 어떻게 결합하는지 보자.

이를 위해서 1994 US Census by Barry Becker에서 추출된 데이터셋인 “Census dataset”를 사용한다. 이 데이터셋은 가정의 연간 수입이 다양한 인구조사 통계를 기반으로 $50K이상인지 이하인지를 예측하는 것이 목표이다.



Facet by Row

우선, 목표값(target value)를 기반으로 데이터포인트를 연령범위, 색상으로 분할한다. 여기서 파란색은 50K보다 작고 빨간색은 50K보다 더 큰것을 나타낸다.


Facet by Column

이제 나이로 데이터의 또다른 특성을 나누어 볼 수 있다. 주당 시간의 차이는 나이 범위에 걸쳐 다른 결과를 만드는가? 주당 시간으로 컬럼을 faceting하여 알아보자.


주당 15시간에서 29시간 일하는 17세에서 26세 연령대에 더 큰 그룹이 있다는 것을 안다. 이는 아마도 여름 아르바이트를 하는 아이들의 결과일 것이다. 또한 더 나이가 들면서 29시간에서 43시간 일하는 사람이 더 줄어드는 경향을 볼 수 있다. 반면, 43시간에서 57시간 부분은 차트의 중심에 상대적으로 일정하게 유지된다.




Positioning

그러나 여전히 우리가 찾는 것을 많이 보여주지 않는다. 그래프의 위치(positioning)를 변경하고 좀 더 상세한 것을 얻어보자. 여기서는 위치를 '산점도(scatter)'로 바꾸고 나이에 대해서남 facet한다. 또한 수직 정렬 순서로 "주당 시간(Hours per Week)"를 선택하여 다른 나이 그룹에 대한 근무 시간을 더 쉽게 알 수 있게 만든다. 이제 차트 중간에서 증가하고 양쪽 끝에서 낮아지는 주당 시간을 볼 수 있다.


테이터 탐색을 계속하여 찾을 수 있는 경향과 관계가 무엇인지 알아야 한다. 예를 들면, 국적으로 facet하면 데이터가 많이 치우친(skewed)것을 알 수 있다. 이는 좀 더 균형잡힌 데이터셋을 갖기 위해 더 많은 데이터 포인트를 수집할 수 있음을 말한다.



Load up your data

Facets에 데이터셋을 로드하는 방법을 알아보자. 이는 2가지 옵션이 있다.

웹 인터페이스를 사용하여 데이터를 직접 업로드하고 브라우져에서 사용하는 것과 project’s GitHub page의 설치를 사용하여 Jupyter notebook 확장으로 라이브러리를 설치할 수 있다.


Facets는 여러분의 데이터셋을 자세히 들여다보고 다른 특성간 관계를 찾고 데이터셋에 손실 또는 기대하지 않은 값이 없도록 하기 위해 유용한 도구이다.

반응형

+ Recent posts