JANGUN


데이터 시각화


지음 :이태림, 이긍희 외



목차

요약
제 1 장 데이터 시각화란 무엇인가?
제 2 장 탐색적 자료분석
제 3 장 이변량 데이터의 시각화
제 4 장 시계열의 시각화
제 5 장 지리적 데이터의 시각화
제 6 장 텍스트 데이터의 시각화 - 워드 클라우드
제 7 장 다변량 데이터의 시각화
제 8 장 웹을 이용한 동적 · 대화형 데이터 시각화


요약

정보로 우거진 밀림을 헤매다가
아름다운 도표와 사랑스런 데이터를 만나면
마음이 편해집니다.
우거진 밀림에서 쉼터를 만난 느낌!



제 1 장 데이터 시각화란 무엇인가?

데이터는 다수 개체들에 대해 한 묶음의 특성이 담긴 원재료이다.
통계적 정보는 데이터의 전체 모습이라 하겠는데 특히 큰 규모의 데이터는 그것을 좀처럼 드러내지 않는다.
데이터 시각화의 목표는 데이터의 통계적 정보를 그림의 형태로 드러내는 데 있다.
- 데이터 : 가공되지 않은 원재료 같은것
- 정보 : 데이터로부터 추출되는 가치 있는 것
- 시각화 : 정보의 인지

데이터 시각화의 과정
① 데이터의 이해 : 개체의 수집 범위와 방법, 그리고 개체 수의 파악, 변수의 측정(기록), 그리고 수준(명목형, 순서형, 수치형)
② 목표 설정 : 무엇을 알고 싶은가? 이 데이터가 답해 줄 수 있는가? 배경지식의 습득
③ 그래프 선정 : 어떤 그래프가 좋은가?
④ 그래프 구현 : 소프트웨어의 활용 (오픈 소스의 데이터 분석 도구, 시각화에 장점)
⑤ 스토리텔링 : 핵심적 의미를 일반인에 전달

R은 오픈소스의 통계계산 언어이자 소프트웨어이다. 시각화에 강점이 있다.
R의 컬러는 (R,G,B) 코드 조합으로 구성되는데 R,G,B (red, green, blue)는 각각 256개 수준을 갖는다. 따라서 표현 가능한 컬러의 총 수는 약1,600만개이다.
컬러 함수에는 rainbow, heat.colors, terrain.colors, topo.colors, cm.colors 등이 있다. R의 컬러 팩키지로는 RColorBrewer 등이 있다.
R 그래프의 기본 요소는 점, 선, 사각형, 다각형 등으로 points, segments, rect, polygon 등의 함수로 표현된다.



제 2 장 탐색적 자료분석

EDA(Exploratory Data Analysis)의 목적은 자료의 구조 및 특징을 파악하기 위하여 효과적이고 신뢰성있는 자료의 요약과 그래프 기법의 활용에 있다.


자료를 면밀히 검토해 보고자 하는 EDA입장에서의 데이터 시각화의 기본철학과 분석모형을 설명하고 탐색적 자료분석의 성공 사례를 들어 EDA의 의의를 현실에서 확인해본다.
- EDA : 데이터의 특징과 내재하는 구조적인 관계를 알아내기 위한 분석기법
- CDA : 관측된 자료의 형태로 효과의 재현성을 평가하고 추정하는 전통적인 분석과정, 신뢰구간의 추정이나 유의성 검정에 의한 분석

저항성(resistance) : 자료의 일부가 기존과 현격히 다른 값으로 대체되었을 때, 즉 자료의 일부가 파손되었을 때 영향을 적게 받는 성질이다. 즉 저항성 있는 통계 또는 통계적 방법은 데이터의 부분적 변동에 민감하게 반응하지 않는다.
잔차의 해석(residual) : 잔차란 관찰값들이 주경향으로부터 얼마나 벗어났는지를 말해준다. 즉 잔차를 구해봄으로써 데이터의 보통과 다른 특징을 찾아내야 한다.
자료의 재표현(re-expression) : 자료의 재표현은 데이터분석과 해석을 단순화할 수 있도록 원래 변수를 적당한 척도(로그변환, 제곱근변환, 역수변환)로 바꾸는 것을 말한다. 이와 같은 변환을 통하여 분포의 대칭성, 분포의 선형성, 분산의 안정성, 관련변수의 가법성 등 데이터 구조파악과 해석에 도움을 얻는 경우가 많다.
현시성(graphic representation) : 현시성은 자료의 그래프에 의한 표현 즉 자료 안에 숨어있는 정보를 시각적으로 나타내줌으로써 자료의 구조를 효율적으로 잘 파악하게 된다는 것이다. 이런 의미에서 EDA에서는 다양한 그래프의 작성법들이 이용되고 있다.

원그래프(Pie graph) : 항목별 구성을 잘 나타내는 그래프. 선거 후보별 특표수, 정당별 선호도, 재학생의 연령별 구성
- 시각화의 목표 : 데이터의 통계적 정보를 그림의 형태로 나타내어 분포의 구성을 상대적으로 비교하는 데 유용
- slices=c("red","blue","yellow","green")
- pie(정렬.혈액형,col=slices,radius=1,main=“원그래프")

막대그래프(bar Chart) : 항목별 발생 도수를 막대의 상대적인 길이로 나타내는 그래프.
- 시각화의 목표 : 젂체의 구성비 보다는 어느 항목의 막대가 제일 긴지 보여준다.
- 예 : 선거에서 정당별 의원수, 매체별 선호도, 방송대 재학생의 연령별 분포
slices=c("red","blue","yellow","green")
barplot(정렬.혈액형,col=slices,main="막대그래프") # 막대그래프 그리기

히스토그램 : 연속형 관찰값의 구갂별 도수를 상대적인 막대의 길이로 나타낸 그래프.
- 분포의 개형(자료의 중심위치와 산포, 봉우리 개수, 이상치 점검)을 파악하는 데 도움
- hist(과포화비율,breaks=class1,right=F,main=NULL)

상자그림 : 사분위수와 중앙값으로 상자를 만들고 최대 최소에 선을 연결핚 자료의 퍼짐 정도를 파악하여 분포의 개형을 파악 하는데 도움을 주는 그래프
즉 다섯수치요약을 그래프화한 것이다.
- boxplot(과포화비율, col="yellow", horizontal=T, main=NULL)
- 바이올린 그림 : vioplot(male$과포화비율, female$과포화비율)

줄기-잎 그림: 수치로 된 자료를 줄기와 잎으로 분류하여 자료의 분포개형을 파악하는 그림
- stem(score)

히스토그램과 줄기그림의 공통점과 차이점 공통점 외양적인 테두리가 동일하다
자료의 분포개형을 파악하는데 중요한 정보를 제공한다.
각 구간에 속하는 자료점의 도수에 비례하는 막대기둥을 갖고 있다.
차이점
① 줄기그림은 구간내의 자료들의 도수가 아닌 숫자로 구별되어 있으므로 도수로 나타낸 히스토그램이 정보의 손실을 가져온다.
② 히스토그램은 구간의 폭을 정수배로 늘리려면 원자료에 의존하지 않으면 안 되는데 줄기그림에서는 작성된 원 줄기그림을 이용하여 좀 더 효율적으로 쉽게 줄기수를 조절할 수 있다.
③ 줄기그림은 구간폭이 정수이어야 하기 때문에 히스토그램처럼 구간폭을 임으로 정할 수 없다.

줄기그림에서 관찰할 수 있는 자료의 특징
① 자료가 몇 개의 그룹으로 나누어지는가?
② 분포의 중앙이 어디인가? 즉 자료가 어느 줄기에 집중적으로 몰려있는가로 집중도가 높은 구간을 알 수 있다.
③ 좌우대칭을 평가하여 자료가 어느 한쪽으로 몰려 있는가를 파악한다.
④ 자료의 퍼짐정도를 등을 비교한다.
⑤ 특이점의 존재여부를 파악한다.



제 3 장 이변량 데이터의 시각화

산점도(scatterplot)는 연속형 이변량 자료를 시각화하는 기본 그래프로서 관측개체의 이변량 좌표에 점을 찍어 얻는다.
- 일반적 상황에서는 ‘aspect’, 즉 가로 대 세로의 비를 1로 한다.
- 회귀적 관계 ( 𝑋→𝑌 ) : 𝑋 를 수평 축에, 𝑌 를 수직 축에 넣음
- 수평 축과 수직 축에 이름이 붙어야 하고 좌우상하에 10% 정도의 여백이 있어야 보기가 좋다.

이변량 커널 밀도추정(kernel density estimation)은 커널 함수를 써서 모분포의 확률밀도함수를 추정하는 방법이다.
- 이 때, 띠 너비를 크게 하면 밀도추정 함수가 밋밋해지고 띠 너비를 작게 하면 밀도추정 함수가 울퉁불퉁해진다.
- 개체 수가 10,000 이상인 큰 자료에 대하여는 단순한 산점도는 적절하지 않다.
- 육각형 칸에 넣기(hexagonal binning)와 같은 특별한 기법이 적용되어야 한다.
- X와 Y의 산점도에서 X=x에서 Y의 평균 반응이 회귀함수 y=f(x)이다.
- 직선 형태의 회귀함수 또는 곡선 형태의 회귀함수를 산점도에 넣어 시각화 효과를 높일 수 있다.
- contour(density$x1, density$x2, density$fhat, xlim=c(-5,40),ylim=c(-5,40), col=heat.colors(7)[7:1], nlevels=7, lwd=2)


큰(n>10,000) 자료의 산점도
- 큰 자료의 그래프 영역이 자료 점들로 포화(먹칠)된다.
- 육각형 칸에 넣기 : 그래프 영역을 육각형의 벌집으로 나누어 개체들을 해당하는 칸에 넣고 칸의 돗수를 색의 불투명도로 표현

모자이크 플롯은 교차표를 시각화한다.
- 범주형 변수들의 결합 칸을 빈도에 비례하는 크기의 모자이크 타일로 표현한다.
- mosaicplot(~ Class+Survived,data=Titanic, color=c("grey","red"))
- mosaicplot(~ Sex+Survived,data=Titanic, color=c("grey","red"))


나무 지도(tree map)는 타일을 계층적으로 배열하여 붙인 그림이다.
- 타일의 크기는 개체의 규모를, 컬러는 밀도적 속성을 나타낸다.
- 대표적인 적용 예는 금융 포트폴리오 자료인데 나무 그림에서 영역별항목별 투자 규모와 투자 수익률을 한 눈에 파악할 수 있다.
- treemap(GNI.2010, index=c("sector", "item"), vSize="principal", vColor="yield", type="value", bg.labels="yellow", title="Portpolio Evaluation GNI.2010 [1:104]")



제 4 장 시계열의 시각화

시계열은 시간에 따라 측정되는 데이터이며 시계열의 경향성을 보기 위해서는 시각화가 필요하다.
- 선 그래프는 시계열을 시간에 따라 선으로 연결하여 그린 그래프로 시계열의 경향성을 살펴보는데 유용한 그래프이다.
- 시계열의 불규칙변동 등을 제거하고 기조적 변동을 살펴보기 위해서는 이동평균선을 작성하여 그린다.
- R 패키지 : stats 패키지(ts 함수), zoo 패키지, xts 패키지, ggplot2 패키지 (그래프 문법을 바탕으로 개발됨)

시계열의 막대 그래프는 시간에 따라 명확하게 구분되는 시계열을 막대로 표현한 그래프로 주로 양적 크기를 비교할 때 이용하는 그래프이다.

시계열의 누적 그래프는 전체값이 시계열의 구성으로 이루어질 때 전체와 같이 보여주는 그래프로 선그래프와 막대그래프에 면을 분할하여 다른 색으로 표현하는 그래프이다.

경로 그래프는 좌표평면에서 점들이 시간에 따라 움직이는 모습을 표현하는 그래프이다.

채색달력 그래프는 시계열값이 시각적인 색으로 차이가 나게 하여 달력에 표현하는 그래프이다.



제 5 장 지리적 데이터의 시각화

지리적 데이터: 지리적 위치와 관련 있는 데이터
지리적 데이터의 시각화 : 지리적 데이터를 지도와 함께 색으로 표시
지리적 데이터 시각화의 특징
① 지역 전체 상황 또는 지역 사이의 연관성 파악
② 지역별 특징적인 사실 부각
③ 시간에 따른 변화 흐름 파악


컴퓨터 화면에 지도를 그리는 방법 : 폴리곤을 이용한다.
R을 이용하여 지도를 그리는 방법
① 세계 각국의 행정지도는 www.gadm.org 에서 다운받아 사용할 수 있다.
② R의 sp 패키지를 이용하여 plot() 명령어로 지도를 그릴 수 있다.
③ R의 maps 패키지를 이용하여 map() 명령어로 지도를 그릴 수 있다.
④ R의 ggplot2 패키지를 이용하여 qplot() 명령어로 지도를 그릴 수 있다.
⑤ R의 dismo와 rgdal 패키지를 이용하여 구글맵 지도를 그릴 수 있다.

작성된 지도의 저장 : gmap 명령어를 이용하여 저장 및 확대를 할 수 있다.
# 구글맵을 홗용한 우리나라 지도 # dismo와 rgdal 패키지 설치
- install.packages("dismo")
- install.packages("rgdal")
- library(dismo)
- library(rgdal) # 우리나라 선택하여 지도 그리기
- mymap = gmap("South Korea") # 나라선택
- plot(mymap)
# 길이 표시되는 지도 선택
# type의 종류에는 roadmap, satellite, hybrid, terrain 등
- mymap = gmap("South Korea", type = "roadmap") plot(mymap)
- mymap = gmap("South Korea", type = "satellite") plot(mymap) # 위성지도


지리적 데이터 시각화의 목적
① 지역 전체 상황, 특징을 파악한다.
② 지역별 연관성을 알아본다.
③ 시간의 흐름에 따른 변화를 살펴본다.

지리적 데이터의 시각화 방법
① 한 지역의 특성 데이터를 지도위에 표시한다.
② 지리적 데이터를 색으로 구별하여 지도위에 표시한다.
③ 시간에 따른 지리적 데이터를 같은 색으로 구별하여 여러 개 그린다.

지리적 데이터의 구간을 나누는 R 명령어는 interval(), cut()
지리적 데이터의 구간을 설정하는 R 명령어는 as.factor()
구간이 설정된 데이터에 색을 설정하고 그리는 명령어는 rainbow(), spplot()



제 6 장 텍스트 데이터의 시각화 - 워드 클라우드

텍스트 데이터는 형태나 크기가 일정치 않은 비정형 데이터이다.
- 컴퓨터, 정보통신 기술의 발전으로 축적된 문자 정보

텍스트 마이닝 (text mining)
- 비정형 데이터의 모임인 텍스트 데이터베이스에서 유용한 정보를 탐색
- 텍스트 데이터베이스 : 문자 정보 데이터 집합
- 정보의 단위 : 문서
- 문서들의 집합 : 코퍼스 (corpus)
- 데이터베이스에서 유용한 정보 탐색 : 텍스트 마이닝

워드 클라우드(word cloud) : 텍스트 데이터베이스에 나타나는 단어의 출현 빈도를 이용하여 텍스트 데이터베이스 내의 중요 단어를 구름처럼 시각화
- 텍스트 데이터베이스에 크기가 서로 다른 문서들이 있을 때 이 문서들의 집합인 코퍼스(corpus)를 생성하고 전치사나 관사, 접속사, 그리고 관심의 대상이 되지 않는 단어들, 즉 불용어(stop word)를 제거한다. 여기서 어미 등을 제거한 단어줄기(stem)를 추출한다.
- 정제된 코퍼스 안에 있는 모든 단어들의 출현 빈도를 조사하여 중요 단어를 추출한다. 텍스트마이닝은 각 문서가 어떠한 중요 단어를 보유하고 있는지 조사하여 이를 이용한 분류분석, 군집분석 등 다양한 모형을 적용하여 분석하는 것이다.
- 워드 클라우드(word cloud)는 중요 단어의 출현 빈도를 이용하여 가장 많이 나타난 단어일수록 더 큰 글자나 색 또는 회전으로 구분하여 단어 구름을 만들어 시각화하는 것이다.
- 워드 클라우드는 텍스트 데이터베이스 전체의 주요 내용이 어떠한 것인지 살펴볼 수 있어서 최고 경영자의 의사결정에 도움을 줄 수 있다.

텍스트 데이터 분석
1) 텍스트 데이터베이스에서 문서들의 집합인 코퍼스 생성 :
2) 코퍼스의 단어줄기 추출 (word stemming) :
3) 언어의 특성에 따른 추가 정제 작업 : 대소문자 통일 등
4) 불용어(stop word) 제거 : 전치사, 관사 등
5) 단어의 출현빈도 조사 : 중요 단어를 구름처럼 배치, 데이터 베이스 특징을 의사 결정에 이용
6) 데이터베이스 특징을 의사 결정에 이용

워드 클라우드 알고리즘
1) 단어들이 그려질 영역을 설정한다. 랜덤하게 할 수도 있고 지정할 수도 있다.
2) 각 영역에서 다음을 반복한다.
3) 각 영역에 그릴 단어의 폰트 크기와 색을 출현 빈도를 이용하여 결정한다.
4) 단어 회전 여부를 결정한다.
5) 다른 인접 영역의 단어와 겹치지 않는지 확인하고 단어를 그린다.

- R 패키지 : tm, wordcloud, RColorBrewer, SnowballC

한글 문서의 워드클라우드는 영어 문서의 경우와 유사하나 한글 텍스트 파일을 R의 KoNLP 패키지를 이용하여야 한다.
한글 문서를 R에서 처리하기 위해서는 저장 인코딩(encoding) 방식을 "UTF-8" 로 지정하여야 한다.
트위터 문서의 워드클라우드 작성은 한글과 유사하나 자신의 트위터 계정을 이용하여야 한다.
- install.packages(c("tm", "wordcloud", "KoNLP", "RColorBrewer"))
- library(tm) / library(wordcloud) / library(KoNLP) / library(RColorBrewer)



제 7 장 다변량 데이터의 시각화

다변량 자료의 시각화는 현실적으로 그래프로 작성하는데 3차원을 넘는 시각화 정보는 처리하기가 어렵다.
- 변수가 3개 이상인 다변량 자료 : 평면상에서의 삼차원 공간표현을 위한 조처가 필요
- 다변량 자료는 다차원의 자료

별그림(star plot)은 다변량 자료를 표현하는 단순한 방법으로 세 변수의 축으로 변수값의 크기를 나타내어 삼각별의 형태로 상대적인 비교가 가능하다.

파이조각그림(pie segments plot)으로 각 변수는 파이조각의 면적으로 나타내진다.
- 단순핚 그림은 다변수 특성을 갖는 개체들의 특성을 표현해낼 수 있지만 깊이 있는 분석을 하기는 어렵다.

산점도 행렬(scatterplot matrix)이란 2개의 변수 쌍으로 작성된 산점도를 변수의 개수만큼 P×P행렬에 체계적으로 배열해놓은 그래프이다.
- 다변량 자료의 변수간 관련성을 눈으로 확인할 수 있는 그림으로 표현하는 것이 가능
- 자료의 구조 및 특징을 파악을 위하여 효과적이고 신뢰성 있는 자료의 요약과 그래프 기법의 활용

조건부 플롯(conditioning plot)이란 3개 변수 X, Y와 Z의 관계를 탐색하는 과정에서 변수 X와 Y의 관계를 Z에 조건화하여 검토하는 그래프이다.
- 3개 변수 X, Y와 Z의 관계를 탐색하는 과정에서 변수 X와 Y의 관계를 Z에 조건화하여 볼 수 있다.

평행좌표 플롯(parallel coordinate plot)은 변수들을 각각의 평행선상에 타점한 점들을 연결하여 그린 그래프이다.

차원축소에 의한 시각화 (주성분분석)
- 성분분석(principal component analysis)은 자료 개체들을 저차원 공간에 사영하여 얻어진다. 같은 공간에 변수들을 표현해 넣을 수 있다.
- 주성분 분석 : 다변량 자료 분석의 근본 문제는 차원 수가 크다는 데서 비롯되므로 차원 수를 줄이기 위한 방법
- 사영 (projection) : p-차원 공간에 놓이는 표준화 변환 관측개체들을 1차원 공간으로 축소시키는 방법
- 차원 축소 : 제곱크기(squared norm)의 보정 평균을 최대화함으로써 사영으로 인한 손실을 최소화
- R 함수 : princomp (x, cor=T)

위치점을 나타내는 공간자료로 등고선도, 전망도, 이미지그래프 등을 작성할 수 있다.



제 8 장 웹을 이용한 동적 · 대화형 데이터 시각화

동적, 대화형 시각화
- 정적 그래프로 데이터의 수많은 특성을 표현하는데 제약 → 동적, 대화형 시각화가 필요
- 동적 시각화 : 시간, 연속변수 변화 등에 따른 변화 파악
- 대화형 시각화 : 데이터의 보다 많은 특성을 파악
- 동적‧대화형 시각화는 무선인터넷, 스마트 폰 또는 패드 등의 기기 확산, 다양한 웹 기술의 개발 등으로 보다 활성화되고 있다.
- 도구 : 자바스크립트와 CSS, 구글차트도구(D3), R (ggvis, shiny, googleVis, rCharts 패키지)

ggvis 패키지는 ggplot2 패키지와 비슷한 아이디어로 만들어진 R패키지로 대화형, 동적 데이터 시각화가 가능하다.
- Vega 시각화 문법 이용하여 웹에 표현

shiny 패키지는 대화형 웹 애플리케이션을 만들 수 있는 R 패키지이다.

구글 차트도구는 웹 페이지에 구글에서 제공하는 자바스크립트 파일인 구글 차트 라이브러리를 불러와서 데이터 시각화를 구현하는 시각화 도구이다.



googleVis패키지는 html, javascript를 모르더라도 R의 데이터를 바탕으로 구글 차트도구에서 구현할 수 있는 R의 패키지이다.
- R 데이터 프레임을 JSON 객체로 전환

D3는 마이크 보스톡(Mike Bostock)이 HTML, CSS와 SVG(Scable Vector Graphics)와 같은 웹페이지 요소를 이용하여 만든 자바스크립트 기반의 데이터 시각화 라이브러리이다.

rCharts 패키지는 D3와 NDV3, polychart 등 자바스크립트 라이브러리를 활용할 수 있는 R패키지이다.