JANGUN


빅데이터의 이해


지음 : 이긍희



목차

제 1 장 빅데이터의 정의
제 2 장 빅데이터의 활용 사례
제 3 장 빅데이터 기술
제 4 장 빅데이터의 수집
제 5 장 빅데이터 시각화
제 6 장 벌점화 회귀분석
제 7 장 앙상블 방법
제 8 장 군집분석
제 9 장 추천 시스템
제 10 장 개인정보와 프라이버시 보호


제1장 빅데이터의 정의

- 빅데이터의 정의
① 규모(volume)
② 다양성(variety) - 비정형성
③ 속도(velocity)

YB(yottabyte) : 1024
ZB(zettabyte) : 1021
EB(exabyte) : 1018
PB(petabyte) : 1015

빅데이터
- 데이터라는 속성의 변화에 초점을 맞추느냐 아니면 새로운 데이터로 유발되는 데이터 이용 환경의 변화를 반영하느냐에 따라 광의와 협의로 구분됨
- 좁은 의미의 정의:데이터의 규모, 다양성, 속도 등 데이터의 세 차원을 종합하여 정의
- 거대한 크기를 가지고, 다양한 비정형 데이터를 포함, 생성 - 유통 - 소비가 빠르게 일어나 기존 방식으로는 관리·분석이 어려운 데이터 집합
- 넓은 의미의 정의:좁은 의미의 빅데이터와 빅데이터를 관리하고 분석하는 데 필요한 인력과 조직, 제반 기술과 인프라를 묶어서 정의
- 기존의 방식으로는 관리와 분석이 매우 어려운 데이터 집합과 이를 관리·분석하기 위해 필요한 인력과 조직 및 관련 기술까지 포함

데이터 과학(data science)
- 빅데이터를 효과적으로 수집·분석하여 가치 있는 통찰을 얻고 이를 최종 사용자에게 비기술적 언어로 표현하는 것과 관련된 학문

데이터 과학자(data scientist)
- 데이터 과학과 관련된 분야를 전공하고 관련된 업무에 종사하는 사람을 지칭
- 데이터 과학자는 일반적인 데이터 분석에 머물지 않고 다양한 원천 데이터를 결합·분석하여 새로운 가치를 창출하는 일을 수행
- 데이터 과학자는 비즈니스에 대해 우선 이해하고, 컴퓨터 프로그래밍, 통계학은 물론 결과를 설득할 수 있는 대화능력을 가져야 함 → 하드 스킬과 소프트 스킬로 구분
- 하드 스킬:빅데이터를 처리하고 분석하는 데 필요한 이론적·기술적 지식으로 데이터베이스, 프로그래밍, 통계학, 데이터마이닝, 텍스트마이닝 등
- 소프트 스킬:빅데이터에 있는 가치를 발견할 수 있는 통찰력, 전달능력(스토리텔링, 시각화 등), 다른 분야 전문가와 소통·협력할 수 있는 능력

요약
- 기존 기술로는 해결되지 않았던 비정형 데이터들이 신기술의 등장으로 수집, 저장·분류, 분석이 가능해지면서 새로운 인사이트를 만들어 내고 있다.
- 저장매체, CPU, 네트워크 등 데이터와 관련된 하드웨어의 성능은 향상되는 반면 가격은 크게 하락하여 데이터에 대한 접근성은 날로 좋아지고 있다.
- 스마트폰과 SNS의 확산, 그리고 사물인터넷(IoT)과 센서의 증가로 새로운 형태의 데이터 발생이 가속화되면서 빅데이터 세상이 심화되고 있다.
- 빅데이터란 기존의 방식으로는 관리와 분석이 매우 어려운 데이터 집합, 그리고 이를 관리·분석하기 위해 필요한 인력과 조직 및 관련 기술까지 포함하는 용어이다.
- 빅데이터는 데이터 규모(volume)의 증가, 데이터 유형의 다양화(variety), 그리고 데이터 수집·처리 속도(velocity)의 증가라는 3V로 정의된다.
- 데이터 과학자는 실용적인 비즈니스 문제를 데이터로 해결하는 사람이다.



제2장 빅데이터의 활용 사례

데이터 속에서 숨겨진 패턴을 찾아내는 데이터 분석 전문가의 노력 필요

기업이 빅데이터를 의사결정에 활용하는 수준은 네 가지 단계로 구분
① 정보의 관리 단계:‘어떤 일이 있었나?’
② 비즈니스 인텔리전스 단계:‘정확히 무엇이 문제인가?’
③ 통찰력의 창출 단계:‘앞으로 예상되는 일은?’
④ 애널리틱스 기반 의사결정 단계:‘무엇이 최선의 해결책인가?’

기업의 빅데이터 과제
1) 솔루션 미성숙
- 대규모 빅데이터 솔루션이 성공적으로 도입된 사례가 제한되어 있음
- 대부분의 빅데이터 도입이 파일럿 상태에 머무름
2) 조직적 한계
- 인재 : 데이터 유형 및 적절한 활용에 관한 기술력 있는 인력이 부족
- 조직문화 : 비즈니스 모델이나 인사이트, 그리고 IT 아키텍처 및 실행에 대한 빅데이터식 접근을 충분히 이해하지 못함
3) 개인정보  및 신뢰 문제
- 더 많은 데이터 활용이 가능해지면서 개인정보에 대한 고객들의 우려가 더욱 높아지고 있음
- 기업이 데이터를 관리할 수 있는 수준보다 더 빨리 데이터가 증가하고 있음
4) 신기술 부재
- 데이터의 속도, 규모, 다양성 문제는 줄어들지 않고 있는데 이를 해결할 신기술의 등장은 요원함

요약
- 데이터의 원래 의미는 ‘우리에게 주어진 것(things given)’이다.
- 빅데이터 시대의 데이터는 비즈니스의 부산물이 아닌 그 자체이다.
- 빅데이터 경영은 빅데이터를 활용해 비즈니스를 실현하는 것이다.
- 빅데이터를 의사결정에 활용하는 것은 단순히 의사결정 상황을 파악하는 단계에서부터 최적 대안을 자동으로 선택해 주는 단계까지 네 단계가 가능하다.
- 기업들이 기업 밖에 존재하는 SNS 데이터에 접근할 수 있게 되면서 고객들의 감성을 실시간으로 반영한 마케팅 사례들이 등장하고 있다.
- 맞춤 마케팅이란 고객을 개별적으로 대하는 마케팅으로, 이전부터 시도되던 것이 빅데이터로 인해 실현가능성과 효과가 높아지고 있다.



제3장 빅데이터 기술

빅데이터 기술의 개요
- 관계형 데이터베이스 관리 시스템(RDBMS):대량의 데이터를 처리하기 위한 대표적인 기존 기술로, 데이터가 행과 열로 이루어진 테이블 간의 관계로 저장
- 데이터의 크기가 방대하여 기존의 시스템으로는 획득, 저장, 관리, 혹은 분석이 불가능한 데이터를 빅데이터라고 부름
- 빅데이터(데이터가 하나의 서버에서 처리할 수 없을 정도로 큰 경우)의 처리  ·  분석은 분산처리 방식이 보편적
- 분산 시스템:여러 대의 서버가 네트워크를 통해 통신하며 공통의 계산문제를 푸는 시스템
- 문제를 여러 개의 작업(task)으로 나누어 하나의 작업을 한 대 이상의 서버에 할당하여, 이들 컴퓨터로 하여금 각각의 작업을 동시에 병렬로 해결
- 저성능 서버를 여러 대 연결하여 만든 클러스터가 비슷한 성능의 고성능 서버 한 대보다 저렴
- 신뢰성:분산 시스템에서는 연결된 컴퓨터들 중 한두 대가 고장을 일으킨다고 해도 전체 시스템이 고장 나는 것은 아니므로 높은 신뢰성을 확보
- 확장성:네트워크에 컴퓨터 한 대를 추가 연결하는 것으로 전체 분산 시스템의 성능을 간단히 향상
- 클라우드 컴퓨팅:고속 인터넷 등의 발달로 인해 분산 시스템으로 구성되어 높은 확장성을 갖는 컴퓨팅 자원을 인터넷을 통하여 제공하는 서비스
- 클라우드 컴퓨팅 서비스의 사용자는 원격지에 존재하는 거대한 분산 시스템의 일부 자원을 임대하여 자신만의 가상 서버 네트워크 구성

아파치 재단의 하둡(Apache Hadoop; 이하 하둡)
- 빅데이터를 분산 시스템, 특히 클라우드 컴퓨팅을 활용, 처리하기 위한 플랫폼
- 분산 시스템의 확장성 구현:하둡에서는 데이터의 위치를 추적하는 방식으로 분산 파일 시스템을 구현
- 분산 시스템의 신뢰성 계승:일부 서버가 고장 나도 중단 없이 작동이 가능
- 오픈소스로 제작되어 시스템 구축에 큰 비용이 들지 않음
- 빅데이터 애널리틱스(analytics):빅데이터로부터 통찰을 얻기 위해서는 빅데이터를 분석, 표현할 수 있는 기술이 필요
- 빅데이터 분석기술:데이터마이닝, 기계학습, 텍스트마이닝, 오피니언마이닝, 소셜네트워크 분석 등
- 빅데이터 표현기술:동적 데이터 시각화
- 관련 소프트웨어:SAS, SAP, 오라클, HP, IBM 등 주요 소프트웨어 기업은 하둡을 기반으로 데이터를 분석할 수 있는 도구 제공
- R은 데이터 분석과 시각화 기능이 훌륭한 오픈소스 소프트웨어
- R 프로그램:최신의 분석 알고리즘을 유지, 인메모리(In-memory) 계산으로 데이터를 빠르게 처리할 수 있음
- 하둡 환경의 맵리듀스 기능을 R 프로그램 코드로 구현 : R을 이용하여 하둡 기반의 분석을 할 수 있음

비분산 빅데이터 처리: 빅메모리와 빅애널리틱스
- R은 인메모리 계산을 하기 때문에 큰 용량의 데이터를 처리하는 데 제약
→ 빅메모리(bigmemory) 패키지와 빅애널리틱스(biganalytics) 패키지를 이용하여 해결
- 두 패키지 모두 데이터의 구조만 물리적 메모리에 저장하여 마치 데이터가 물리적 메모리에 로드되어 있는 것처럼 처리

하둡 (Doug Cutting과 Mike Cafarella, 오픈 소스로 2006)

- 구성:하둡 공통(Hadoop Common), 하둡 분산 파일 시스템(Hadoop Distributed File System:HDFS), 하둡 맵리듀스(Hadoop MapReduce)의 세 가지 모듈로 구성
- 하둡 공통:다른 모듈들을 지원하는 공통 유틸리티 모음으로 하둡을 기동하는 스크립트와 분산 파일 시스템에 대한 접근을 돕는 유틸리티 등이 포함
- 하둡 분산 파일 시스템:하둡 공통을 이용하여 대용량 데이터를 다수의 컴퓨터에 분산시켜 빠르게 처리할 수 있는 분산 파일 시스템
- 하둡 맵리듀스:분산 파일 시스템에 저장된 대용량 데이터를 병렬처리하기 위한 소프트웨어 프레임워크
- 일반적으로 프로그래머가 분산 시스템을 프로그래밍할 때 데이터를 분할하거나 어느 서버에서 어떤 작업을 실행해야 할지에 대해서 계획하고 일일이 프로그램으로 작업을 지정해야 함
- 그러나 하둡 플랫폼상에서 빅데이터를 분석할 때 프로그래머는 하둡의 세 가지 구성으로 인해 분산처리를 위한 작업 분할에 대하여 많은 고민 없이 데이터 자체와 그 데이터를 가지고 무엇을 할 것인가에 대해서만 집중

하둡 분산 파일 시스템

- 하둡 분산 파일 시스템(HDFS)은 일반적인 분산 파일 시스템의 설계를 따라 관리 역할을 하는 마스터 노드(master node)와 실제 데이터를 저장하는 일을 하는 슬레이브 노드(slave node)로 구성
- HDFS의 마스터 노드는 네임노드(namenode)라 불리며, 데이터노드(datanode)로 불리는 슬레이브 노드의 동작 상태를 실시간으로 관리하고 최대 수천 대의 데이터노드에 분산 저장되어 있는 메타데이터(metadata)를 관리함
- 메타데이터는 ‘데이터에 대한 데이터’로 데이터의 생성수단, 목적, 생성 날짜 및 시각, 만든 사람 등 데이터 파일의 내용과 맥락을 알려 주는 데이터
- 데이터는 여러 개의 블록으로 쪼개져 몇 대의 데이터노드가 한 블록을 복제해서 보관하는 방식으로 분산 저장
- 네임노드가 관리하는 메타데이터는 해당 블록이 어느 데이터노드에 저장되어 있는지의 여부 등을 파악
- HDFS는 수십 페타바이트(PB)에 이르는 대용량 데이터를 수천 대의 서버를 이용하여 빠르게 처리할 수 있도록 설계:비용문제로 저가의 서버를 이용하는 것을 전제로 함
- 디스크나 서버의 고장이 자주 발생:고장감내성이 중요하게 고려됨 → 데이터노드 한두 대가 고장 나더라도 데이터를 잃지 않기 때문에 신뢰성 확보
- 저장용량이 부족해지면 저가의 데이터노드를 추가하여 네임노드에 등록하여 시스템 중단 없이 용량을 확장 → 하둡의 확장성
- HDFS는 메타데이터에 접근하거나 데이터를 변경하는 작업의 대기시간을 희생하는 대신 데이터를 읽어 오는 작업의 처리량을 높여 큰 데이터를 한번에 빠르게 가져올 수 있도록 설계
- HDFS에서 한 블록의 크기는 64메가바이트(MB)로 설정. 이는 일반적인 파일 시스템의 블록 사이즈인 수십 킬로바이트(KB)와 큰 차이
- 이 설계는 하둡이 웹페이지 색인 관리를 목적으로 시작되었기 때문에 데이터의 실시간 처리가 아닌 기존에 수집된 데이터의 일괄(batch) 처리에 최적화된 플랫폼이라는 데에 기인
- 데이터의 일괄 처리를 위해서는 기존에 수집된 데이터를 수정할 필요가 없으므로 HDFS에서는 한 번 쓰기가 완료된 데이터의 수정이 불가능하고 오직 덮어쓰기만 가능
- 데이터 저장방식이 단순해지면 전체 시스템의 관리가 간편해져 수천 대의 서버로 구성된 클러스터도 무리 없이 운영될 수 있으며 맵리듀스의 구현도 간단

맵리듀스

- 하둡 맵리듀스(MapReduce)는 HDFS상에서 동작하는 데이터 분석 프레임워크
- 맵리듀스는 데이터 중심 프로그래밍 모형을 제공
- 맵리듀스에서는 복잡한 문제들이 플랫폼 차원에서 단순화되어 프로그래머는 데이터의 배치처리를 위한 맵(mapper)과 리듀스(reducer) 함수만 작성하면 되도록 구현
- 맵리듀스 프레임워크에서 사용하는 프로그래밍 모형은 함수들로 구성되어 있고, 각 함수의 입력과 출력 모두 키(key)와 값(value)의 쌍으로 구성
- 함수 하나는 <키, 값> 쌍의 집합을 또 다른 <키, 값> 쌍의 집합으로 변환하는 일을 수행
- 맵 함수는 HDFS에서 불러온 데이터를 가공하여 새로운 <키, 값> 집합을 출력
- 맵리듀스 시스템에서는 같은 키를 갖는 값들을 묶어 <키, (값1, 값2, …)> 형식의 새로운 <키, 값> 쌍의 집합을 만듦
- 리듀스 함수는 집계 연산을 수행하여 또 다른 <키, 값> 쌍의 집합을 생성하고 이를 HDFS에 저장
- 프로그래머는 중간의 섞기 및 정렬, 분배과정에 신경 쓸 필요 없이 맵 함수와 리듀스 함수만 작성
- 맵리듀스는 노드 간에 데이터를 보내는 대신 계산 코드를 데이터가 있는 곳으로 보내는 방법을 채택
- 데이터 연산은 실제 데이터가 위치한 컴퓨터에서 이루어지며, 새로운 연산의 경우 해당 코드를 다시 노드에 보내 처리하는 방식 사용 → 노드 간 데이터 전송 최소화
- 노드 간 데이터 전송을 최소화하기 위한 또 다른 방법은 맵 함수와 리듀스 함수에 이은 제3의 함수인 컴바인 함수(combiner) 사용
- 맵 작업에서 생성된 결과물이 리듀스 작업의 입력으로 들어가기 때문에 많은 <키, 값> 쌍이 한 노드로 전달 → 데이터 전송 오버헤드가 커짐
- 이를 감소시키기 위해 맵 함수가 특정한 컴바인 함수를 갖도록 프로그래머가 정해 줄 수 있음:컴바인 작업은 맵 작업과 동일한 노드에서 실행
- 맵 작업의 출력에 같은 키를 가진 <키, 값> 쌍이 여러 개 있다면, 컴바인 함수는 이들을 리듀스 함수에 보내기 전에 묶어 버림
- 교환법칙과 결합법칙이 성립하는 연산의 경우 리듀스 함수와 동일한 컴바인 함수를 사용하여 분산처리의 오버헤드를 줄일 수 있음
- 소프트웨어 구조상으로는 맵리듀스 프레임워크 역시 HDFS와 마찬가지로 마스터-슬레이브 구조로 구성
- 맵리듀스의 마스터 노드는 잡 트래커(job tracker)라고 불리며, 앞에 언급한 맵 작업과 리듀스 작업, 컴바인 작업 등 작업들의 스케줄링을 담당
- 슬레이브 노드는 태스크 트래커(task tracker)라고 불리며, 데이터노드에 위치하여 이곳에서 실행되는 작업들의 실행과 관리를 담당

완전 분산 모드와 의사 분산 모드, 독자 모드
- 하둡은 여러 대의 서버로 구성되어 있는 완전 분산 모드에서 작동하는 것을 기본으로 설계
- 맵리듀스 프로그램 개발 및 테스트, 버그 수정 등의 용이성을 위해 하둡에 관련된 모든 프로세스가 한 대의 서버에서 동작하는 의사 분산 모드로 동작하도록 설치
- 구축된 하둡 시스템은 네임노드와 데이터노드, 잡 트래커와 태스크 트래커가 모두 하나의 컴퓨터에서 동작:맵리듀스의 개념을 파악하고 맵리듀스 프로그램을 돌려보는 것을 연습하기를 원하는 사람은 의사 분산 모드로 하둡을 설치하는 것이 유용
- 독자 모드(standalone mode)도 있는데, 이는 의사 분산 모드에서 HDFS를 이용하는 대신 컴퓨터의 로컬 파일 시스템을 그대로 이용하는 방식임

RHadoop을 이용한 통계 계산 알고리즘의 맵리듀스 구현
- R은 모든 데이터를 메모리에 올려서 처리하기 때문에 큰 용량의 데이터를 처리하는 데에는 한계가 있음
- 메모리를 절약할 수 있는 bigmemory, biganalytics와 같은 R 패키지를 활용하여 프로그램을 작성 : 빅데이터의 문제를 근본적으로 해결할 수 없음
- R을 사용하여 이 문제를 근본적으로 해결할 수 있는 방법 중 하나는 하둡의 HDFS를 이용하여 데이터를 저장하고, RHadoop을 이용하여 R 문장으로 하둡의 맵리듀스 기반 알고리즘을 작성 및 분석하는 것
- RHadoop을 실행하기 위해서는 RHadoop을 구성하는 하둡과 R 패키지를 내려받아서 설치
- 하둡이 기본적으로 Java를 기반으로 하기 때문에 Java도 같이 설치
- RHadoop은 하둡에서 데이터를 관리하거나 분석할 수 있는 4개의 R 패키지로 구성
① rmr:R에서 Hadoop MapReduce를 구현할 함수를 제공
② rhdfs:R에서 HDFS 형식의 파일을 관리할 수 있는 함수를 제공
③ rhbase:R에서 분산 데이터베이스 HBase를 관리할 수 있는 함수를 제공
④ plyrmr:rmr 패키지에서 생성된 정형 데이터를 plyr 패키지 형태로 처리
- RHadoop에서는 투명한 방법으로 R과 하둡 간 연동
- HDFS에서 R의 메모리 공간으로 <키, 값> 쌍을 가져오기 위해서는 함수 from.dfs를 사용하며, 그 반대의 경우는 to.dfs( )를 사용

빅데이터 기술의 정리
- 빅데이터와 관련해서 새롭게 등장한 기술
- 이미 설명한 하둡 분산 파일 시스템(HDFS), 맵리듀스와 같은 데이터 분산 저장·분석 기술 이외에도 하둡 기반 분산데이터베이스인 HBase, 인메모리 기술, 데이터마이닝 기술, 비정형 데이터를 처리하는 NoSQL 기술 등이 새롭게 등장
- 기존의 통계학, 컴퓨터 과학 등에서 사용되고 있는 기술들이 새롭게 주목 받음
- 빅데이터 기술은 수집, 공유, 저장, 처리, 분석, 시각화 기술

수집 ETL, 크롤링 엔진, 로그수집기, 센싱, RSS, 공개 API 등
공유 멀티 테넌트 데이터 공유, 협업 필터링 등
저장 병렬 DBMS, 하둡(Hadoop), NoSQL 등
처리 실시간 처리, 분산 병렬처리, 인메모리 처리, 인데이터베이스 처리
분석 통계분석, 데이터마이닝, 텍스트마이닝, 예측분석, 최적화, 평판분석, 소셜네트워크 분석 등
시각화 시간 시각화, 분포 시각화, 관계 시각화, 비교 시각화, 공간 시각화

요약
- 빅데이터 처리를 위한 기술로 아파치 재단의 오픈소스 분산처리 환경인 하둡이 주목받고 있다.
- 하둡은 하둡 공통, 하둡 분산 파일 시스템 및 하둡 맵리듀스로 구성되어 있다.
- 하둡 맵리듀스는 데이터 중심의 단순화된 분산 프로그래밍 모형을 제공한다.
- 맵리듀스 프로그래밍 모형에서는 키와 값의 쌍을 다루는 맵과 리듀스 함수를 작성하여 빅데이터를 처리한다.
- R에서의 빅데이터 처리를 위해 bigmemory, biganalytics, RHadoop 등을 사용할 수 있다. 이들은 일반 R 패키지와 같은 방법으로 설치할 수 있다.
- 선형회귀분석은 R에서 함수 lm으로 수행할 수 있으나 RHadoop에서는 각 표본의 설명변수값들의 외적을 분산해서 계산하도록 맵리듀스 함수를 구현한다.
- 로지스틱 회귀분석은 R에서 함수 glm으로 수행할 수 있으나 빅데이터의 로지스틱 회귀분석을 위해서 RHadoop에서는 경사하강법을 맵리듀스로 구현한다.
- k-평균 군집분석 알고리즘은 R에서 함수 kmeans로 수행할 수 있으나, 빅데이터의 군집분석을 위해서 RHadoop에서는 각 자료점이 속하는 군집번호를 계산하는 맵 함수와, 군집번호가 같은 자료점들의 중심을 구하는 리듀스 함수를 작성하여 k-평균 알고리즘을 구현한다.



제4장 빅데이터의 수집

1. 빅데이터의 수집기술
- 빅데이터 분석을 위해서 내부 또는 외부의 다양한 원천으로부터 자동 또는 수동으로 데이터를 수집:빅데이터는 내부 데이터와 외부 데이터로 구분
- 내부 데이터:정부 및 기업의 업무과정에서 생성된 후 데이터베이스에 저장되어 업무에 활용되고 있는 데이터. 일반적으로 비공개
- 외부 데이터:인터넷에 접속하여 구할 수 있는 데이터, 웹페이지, 정부 및 공공기관의 공개 데이터, 웹포털 데이터, 소셜네트워크 데이터 등으로 대부분 반정형 또는 비정형 데이터
- 외부 데이터는 정부 또는 데이터 기업에 의해 공개됨
- 정부:통계청의 KOSIS 등과 같이 통계 데이터베이스 형태로 공개되거나 공공 데이터라는 이름으로 공개 API 또는 파일로 공개
- 광의적 정의:데이터 수집은 앞의 정의에 반정형 또는 비정형 데이터를 분석할 수 있는 정형 데이터로 변환하는 데이터의 통합과 정리도 더하여 정의
- 데이터의 수집은 검색, 수집, 변환의 연속과정으로 구성 : 수집된 데이터는 저장되어 분석
- 내부 데이터 중 웹서버에 있는 로그 데이터는 오픈소스인 스크라이브(Scribe), 척와(chukwa), 플룸(flume) 등 로그 수집기에 의해 수집
- 외부 데이터는 외부 데이터베이스 또는 포털에서의 검색, 공개 API (application programming interface)를 이용한 검색, 인터넷에 공개되어 있는 웹페이지의 HTML을 긁어오기(web scrapping) 등을 통해 수집
- 인터넷 검색:사용자가 검색 포털에 검색어를 입력하여 주요 정보를 찾음
- 포털에서 검색엔진을 이용:검색엔진은 수집, 색인, 검색의 과정을 거쳐 검색
- 수집:웹크롤러 등을 이용하여 웹사이트의 모든 링크를 따라다니면서 문서를 수집
- 색인:문서 제목, 페이지 내용, 목차 등으로 영역을 나누어 추출하고 분석
- 검색:엔진은 색인을 조사, 평가해서 가장 잘 맞는 문서를 보여 줌
- 검색 질의어를 정리해서 모으면 사용자들의 관심을 정리 : 검색 데이터
- 검색 데이터는 네이버 트렌드, 구글 트렌드 등을 통해 요약
- 네이버 트렌드를 이용하여 맛집·식당 키워드 검색결과를 시간대별로 정리하여 사람들의 패턴 파악
- 구글 독감 트렌드:집계된 구글 검색 데이터를 사용하여 전 세계 독감 유행 수준을 실시간으로 예측한 결과를 보여 줌
- 구글 검색통계를 이용하여 자동차 수요를 예측하는 모형 작성
- 구글 Ngram:구글 북스를 검색할 수 있는 프로그램
- 구글 북스에서는 1450년 이래 출판된 책 중 약 12%인 1,500만 권의 책을 디지털화
- 구글 Ngram을 통해 과학자들의 활동시점과 영향력 파악

웹크롤링(web crawling)
- 웹로봇을 이용하여 조직 외부에 존재하는 데이터 중 인터넷에 공개되어 있는 HTML에서 데이터를 수집하는 도구
- 웹페이지를 읽고, 필요한 부분을 긁어온 후 HTML에서 필요한 데이터를 구분·저장하여 분석
- 공개 API를 이용한 외부 데이터 수집 과정은 웹페이지 긁어오기와 동일한 방식의 수집
- API는 데이터를 공개하고자 하는 쪽에서 JSON이나 XML 같은 특정한 데이터 형식에 맞게 데이터를 가공해서 구성한 후 공개
- API를 제공하는 쪽에서 정한 방법에 따라 API 접근 권한을 획득하고, API가 어떤 형식으로 데이터를 제공하는지 확인하는 과정이 필요

웹페이지의 구조 분석
(1) HTML 템플릿 분석
- 웹사이트에서 데이터를 긁어오기(크롤링) 위해서는 웹사이트의 구조를 파악할 필요가 있음
- 사용자가 브라우저에 URL(uniform resource locator)을 입력하거나 링크를 누를 때, 웹애플리케이션은 데이터베이스로부터 요청받은 자료를 찾아 웹페이지에 해당 자료를 삽입해 넣어 주는 방식으로 웹페이지 작성
- 웹페이지에서 데이터를 긁어오기 위해서는 템플릿의 어떤 부분에 삽입된 데이터를 추출할 것인지 파악하는 것이 필요
(2) URL 패턴 분석
- 웹페이지를 자동으로 긁어오기 위해서는 웹페이지의 URL 생성 패턴 파악 필요
- URL은 보통 웹애플리케이션에 전달할 파라미터를 포함

HTML 파싱
- 인터넷에서 URL 주소를 통하여 접근할 수 있는 웹페이지는 HTML 언어로 작성
- HTML 문법을 알고 있으면 웹페이지를 이루는 HTML 코드에서 원하는 데이터를 수집
- HTML 파싱(parsing):HTML이나 XML 같은 특정한 규칙에 근거하여 만들어진 데이터를 분해하고, 사용자가 정한 저장 규칙에 따라 분해한 데이터를 저장하는 과정

웹페이지 데이터 수집 분석 사례
- 구글 물가지수:구글의 쇼핑 관련 방대한 데이터베이스를 이용해 매일 자동화된 방법으로 작성하여 소비자물가지수의 제약을 극복하려 하고 있으나 지표는 공개하지 않고 있음
- MIT Billion Price Project라는 이름으로 실시간 데이터를 이용하여 18개국의 물가지수 작성
- 2005년 해리스와 캄바르(J. Harris & S. Kamvar)는 전 세계인의 블로그로부터 사람들의 감정 데이터를 수집해서 정리할 수 있는 사이트(www.wefeelfine.org)를 만듦

공공 데이터의 수집
- 정부와 공공기관이 통계작성, 행정처리 등을 목적으로 수집한 공공 데이터를 공개하여 관련 산업을 육성하고 정책을 투명화하려고 함

요약
- 빅데이터는 내부 데이터와 외부 데이터로 구성되어 있다.
- 데이터의 수집이란 기업 및 정부의 내부 데이터와 외부의 다양한 데이터를 검색하여 수집하고 이를 변환, 통합하는 것을 의미한다.
- 웹에 있는 다양한 데이터들은 웹스크래핑 또는 API를 통해 관련된 데이터에 접근할 수 있도록 하였다.
- 트렌드 사이트가 보여 주는 자료들은 사람들의 행동 패턴을 이해할 수 있게 해 준다.
- 트위터, 페이스북 등 소셜네트워크 데이터는 API를 인증받은 후 이용할 수 있다.
- 공공 데이터는 정부와 공공기관이 통계작성, 행정처리 등을 목적으로 수집한 데이터이며 API를 인증받은 후 이용할 수 있다.



제5장 빅데이터 시각화

빅 데이터 시각화란?
- 빅데이터 분석연구에서 데이터 정보를 시각화하여 정보가 가진 의미를 빨리 그리고 정확하게 파악하는 것이 필요
- 데이터 시각화(data visualization):컴퓨터를 사용하여 인지를 넓힐 수 있도록 데이터를 상호작용이 가능한 시각적 형태로 만드는 것
- 시각화는 단순히 이미지를 만드는 과정이 아니라, 이미지를 통해 인지과정을 도와주는 과정 자체
- 시각화의 목적:데이터의 숨은 의미를 발견하고, 설명하고, 그것을 통해 의사결정을 내리는 통찰력에 있음
- 빅데이터 분석에서도 데이터 시각화는 데이터를 보다 잘 이해하고 의미 있는 판단을 내릴 수 있는 좋은 도구
- 데이터 시각화는 다른 사람들과의 소통을 보다 효율적으로 이끌어 냄

데이터 시각화 원칙
- 데이터 시각화는 정직해야 함:데이터를 의도적으로 왜곡해서는 안 됨
- 디자인은 항상 간결하고 정확해야 함
- 데이터 시각화의 전문가 터프트(Tufte)의 여덟 가지 원칙 제시
① 데이터 그 자체를 보여 주는 것이 중요
② 보는 사람이 화려한 그래픽이나 시각화 방법에 너무 집중하지 않게 함
③ 데이터 자체가 말하고자 하는 바를 왜곡하지 말 것
④ 너무 많은 숫자나 문자를 작은 화면에 보여 주려고 하지 말 것
⑤ 많은 양의 데이터가 일관성을 가져야 함
⑥ 서로 다른 데이터를 손쉽게 비교할 수 있게 함
⑦ 데이터는 몇 가지 단계로 깊이 들어가 자세히 살펴볼 수 있어야 함
⑧ 통계결과나 시각화의 설명을 데이터와 함께 보여 주어야 함

데이터 시각화의 도구
- R : ggplot2 라이브러리
- 프로세싱(processing)과 자바스크립트(Javascript):인터랙티브한 데이터 시각화를 만들 수 있어 많이 사용
- 타블로 데스크톱:스탠퍼드 대학의 정보 시각화 그룹에서 개발. 관계형 데이터베이스를 위한 쿼리, 분석 툴 : 다양한 시각화 방법을 구현
- 매니아이즈(Many Eyes):IBM 정보 시각화 그룹이 개발한 웹 데이터 시각화 도구

시간 시각화
- 데이터가 시간에 따라 변화:시계열 데이터
- 시계열 데이터 시각화의 목적:경향성 파악
- 시계열 데이터를 표현하는 시간 시각화 방법:선 그래프, 점 그래프(산점도, scatter plot), 막대 그래프, 누적 그래프, 버블 그래프, 컬러 스케일 그래프 등

텍스트 시각화 (Text Visualization) - 태그 클라우드와 워드 트리

- 텍스트는 숫자와 더불어 가장 대표적인 정보의 저장단위
- 수년간 급속도로 성장한 소셜네트워크서비스 영향으로 빅데이터 연구에서 텍스트 분석의 중요성은 점차 커지고 있음
- 텍스트 데이터는 명목 데이터(nominal data) : 그래프로 표현하기 어려움
- 텍스트 데이터 시각화:많은 양의 문서를 분류해서 비교하고 분석할 수 있게 도와주고, 텍스트에 나타나는 패턴이 다른 데이터와 어떻게 연관되어 있는지 파악 : 문서의 핵심 파악
- 단어의 빈도수를 계산하거나, 문장 내에서 단어들 사이의 관계나 구조를 표현하는 방법
- 태그 클라우드(tag cloud):문서에 등장한 단어의 빈도수를 분석하여 어떠한 단어를 많이 사용했는지를 시각화. 워드 클라우드(word cloud)라고 부르기도 함
- 태그 클라우드는 정보를 분류할 때 사용하는 태그(tag)의 빈도수를 측정하여 가장 많이 사용한 태그의 글자 크기를 키워서 강조하는 방법
- 디자인 기법을 통해 특정 정보를 과장하여 강조하기도 해서 정보의 시각화가 중요하게 생각하는 정보전달의 정직함이라는 원칙에는 위배될 소지가 있음
- 태그 클라우드를 만들어 주는 소프트웨어로는 워들(wordle) 등이 있음
- 헬스케어 법안과 관련한 오바마 대통령의 연설문을 분석
- 워드 트리(word tree):특정한 단어가 다른 단어들과 어떠한 구조로 연결되어 있는지를 시각화함


텍스트 프로세싱
- 텍스트는 기본적으로는 명목 데이터지만 의미나 관계에 따라서 요일, 단어의 빈도, 동의어·반대어 등은 비명목 데이터로 취급할 수 있음
- 텍스트 내에서 주요한 단어를 찾아내는 텍스트 프로세싱(text processing) 필요
- 텍스트 프로세싱은 먼저 텍스트 데이터의 토큰화로부터 시작
- 토큰화(tokenizing):텍스트 데이터를 작은 단위로 잘게 분리하는데, 스페이스를 중심으로 잘라 내며 잘라 낸 텍스트 데이터 중 불필요한 요소는 삭제(예:영어의 관사 등은 불필요한 빈도수를 만들어 낼 수 있으므로 토큰화 단계에서 삭제 처리)
- 스테밍 기법:영어 단어를 처리할 때 단어의 기본형을 추출하는 과정 (예:goes, went, gone - go)
- 형태소 분석:하나의 어절에서 의미를 갖는 최소단위인 각 형태소를 분석해 내는 기법
- 한국어의 경우 어미 변화가 심해 스테밍 알고리즘으로 기본형 처리 불가능
- 형태소 분석기는 문장을 명사 위주의 자립형태소, 조사인 의존형태소, 동사를 포함한 실질형태소 등으로 분리해 냄:주로 동사와 명사를 추출
- 형태소 분석기는 단어의 등장 빈도수, 문서 내에서의 등장 위치 등을 분석해 주는데 이를 텍스트 시각화에 이용
- 한글의 텍스트 분석을 위해서는 형태소 분석기로 텍스트를 잘게 잘라 내야 함

소셜네트워크 시각화
- 소셜네트워크에서 개인이 생산하는 데이터의 양이 현저하게 증가 : SNS상에서 이루어지는 사회현상을 탐색적으로 분석


요약
- 데이터 시각화는 컴퓨터를 사용하여 인지를 넓힐 수 있도록 데이터를 상호작용이 가능한 시각적 형태로 만드는 것이다. 시각화의 목적은 데이터의 숨은 의미를 발견하고, 설명하고, 그것을 통해 의사결정을 내리는 통찰력에 있다.
- 시간 시각화는 시계열 데이터의 시각화를 의미하며 이를 통해 경향성을 파악할 수 있다.
- 텍스트 시각화는 문서들을 시각화하는 것으로 태그 클라우드와 워드 트리가 있다.
- 태그 클라우드는 문서에 등장한 단어의 빈도수를 분석하여 어떠한 단어를 많이 사용했는지를 시각화해 준다.
- 워드 트리는 특정한 단어가 다른 단어들과 어떠한 구조로 연결되어 있는지를 시각화해 준다.
- 소셜네트워크의 시각화에서 행위자들은 버티스 혹은 노드로 표현되고, 노드와 노드 사이에 연결이 이루어질 때 두 노드를 연결하는 선을 에지라고 부른다. 노드와 에지의 관계를 그림으로 표현한 것을 소셜네트워크 그래프라고 한다.



제6장 벌점화 회귀분석

고차원 회귀모형
- 선형회귀모형:회귀함수 f가 선형함수라는 가정하에서 회귀함수를 추정
- 고차원 선형회귀모형:선형회귀모형에서 설명변수의 수가 데이터의 수보다 큰 경우를 지칭
- 고차원 선형회귀모형 문제 해결:소수의 변수만 뽑아서 모형을 구축하는 변수선택방법 적용
- 설명변수의 수가 매우 많은 경우 변수선택방법의 문제점:추정결과가 불안정하고, 회귀모형의 예측력이 저하
- 벌점화 방법:벌점함수에 대해서 다음의 벌점화 잔차제곱합을 최소로 하는 회귀계수 추정방법 : 벌점화 최소제곱 추정량
- 모수에 대해서 추정량의 성능 평가:평균제곱오차=분산+편의의 제곱
- 분산은 모수의 차원에 비례 : 고차원 모형에서 최소제곱 추정량의 분산은 매우 커짐
- 벌점화 최소제곱 추정량은 약간의 편의가 생기지만 분산을 크게 줄일 수 있으므로 평균제곱오차를 줄일 수 있음
- 벌점화 방법은 축소 추정량(shrinkage estimator)을 구하는 하나의 방법

고차원 선형회귀모형의 예
(1) 마이크로어레이 데이터
(2) 이미지 분석
(3) 브레인 네트워크 분석

능형회귀
- 능형(ridge) 추정량:벌점함수를 사용하여 구한 벌점화 최소제곱 추정량
- 수정된 최소제곱 추정량:능형 추정량
- 능형회귀 추정량을 구하기 위해서는 조율모수를 선택
- 교차 확인 방법은 여러 개의 에 대하여 교차확인오차를 구한 후, 교차확인오차가 가장 작은 조율모수를 선택

라쏘회귀
- 능형 추정량은 고차원 모형에서 최소제곱 추정량보다 좋은 예측력을 가짐
- 라쏘(lasso) 벌점함수:축소 추정을 통한 예측력의 향상과 더불어 불필요한 변수를 제거함으로써 모형의 해석력을 높이는 벌점화 방법

로지스틱 회귀모형
- 로지스틱 회귀모형:반응변수가 0과 1을 갖는 경우에 사용하는 회귀모형 중 하나
- 반응변수 자체를 추정하기보다는 반응변수가 특정한 값을 가질 확률을 추정
- 회귀계수의 추정은 로그가능도(log likelihood) 함수를 최대로 하는 최대가능도 추정량을 사용

벌점화 로지스틱 모형
- 로지스틱 회귀모형에서도 공변량이 차원이 큰 경우 일반적인 최대가능도 추정량은 그 예측력이 현저히 저하
- 벌점화 최대가능도 추정량을 사용:벌점함수에 대하여 벌점화 로그가능도 함수를 최대로 하는 값으로 정의
- 벌점함수로는 능형 벌점함수 또는 라쏘 벌점함수 사용

요약
- 고차원 선형회귀모형은 선형회귀모형에서 예측변수의 수 p가 데이터의 수 n보다 큰 경우를 지칭하며, 변수선택방법은 결과의 불안정성, 예측력 저하 등의 문제를 가진다.
- 변수선택방법의 문제점을 해결하기 위한 방안으로 벌점화 방법이 개발되었으며, 이는 변수선택에서 불안정성을 제거하고 예측력(MSE)을 크게 향상시킨다.
- 능형회귀는 회귀모수에 대한 제곱 벌점을 부여하는 것으로서 변수선택은 하지 못하지만 변수의 개수가 데이터의 개수보다 많을 경우 이용되는 회귀분석방법이다.
- 능형회귀는 고차원 데이터에 대해 통상적 휘귀모형보다 좋은 예측력을 가지지만 모든 변수를 사용하기 때문에 해석이 어렵다.
- 라쏘 벌점함수는 회귀모수에 대해 절댓값 벌점을 부여함으로써 예측력이 좋아질 뿐만 아니라 성긴 성질을 가지고 있기 때문에 변수 선택에서도 탁월한 성능을 보인다.
- 고차원 데이터에 대해 로지스틱 회귀모형을 적용할 때 벌점화 방법을 적용한다.



제7장 앙상블 방법

의사결정나무
- 각 노드에서 분기를 할 때 최적인 하나의 변수로만 하고, 일단 분기가 되면 2개의 자식노드에 속하는 데이터는 그 이후로는 동시에 사용되지 않음
- 첫 번째 노드에서 분리변수를 찾을 때 비슷한 예측력을 갖는 변수가 다수 존재 : 데이터의 작은 변화에도 첫 번째 노드의 분리변수가 바뀔 수 있음
- 첫 번째 분리변수가 바뀌면 자식노드에 포함되는 데이터가 바뀌게 됨 : 최종 의사결정나무가 완전히 달라짐
- 학습방법의 불안정성은 예측력의 저하를 가져옴과 동시에 예측모형의 해석을 어렵게 만듦

앙상블
- 여러 학습기를 결합시켜 예측력이 좋은 하나의 학습기를 만드는 방법

배깅 알고리즘 (bagging, Bootstrap Aggreaing의 준말)
- 주어진 데이터에 대하여 여러 개의 붓스트랩(bootstrap) 데이터를 생성
- 각 붓스트랩 데이터에 예측모형을 만든 후 결합하여 최종 예측모형을 작성
- 붓스트랩 데이터:주어진 데이터로부터 동일한 크기의 표본을 랜덤 복원추출로 뽑은 데이터
- 배깅 알고리즘은 단순하지만 불안정한 학습방법의 예측력을 획기적으로 향상
- 모든 데이터에서 배깅이 최적 의사결정나무의 예측력을 크게 향상시킴
- 배깅은 하나의 최적 의사결정나무를 구축하는 것보다도 간단
- 최적의 의사결정나무 구축 시 가장 어려운 부분이 가지치기(pruning)
- 배깅의 경우 각각의 의사결정나무를 구축할 때 가지치기를 하지 않아도 됨
- 배깅에서는 가지치기를 하지 않은 최대로 성장한 의사결정나무를 사용함으로써 계산량을 대폭 감소

랜덤포레스트(random forest)
- 랜덤포레스트:배깅보다 더 많은 무작위성을 주어 예측모형들을 생성한 후 이를 선형결합하여 최종 학습기를 만듦
- 랜덤포레스트에 대한 이론적 설명이나 최종 결과에 대한 해석이 어렵다는 단점이 있지만 예측력은 높음
- 입력변수의 개수가 많을 때 더 좋은 예측력을 보이는 경우가 많음
- 랜덤포레스트는 무작위성을 최대로 주기 위해 붓스트랩과 더불어 입력변수들에 대한 무작위 추출을 결합
- 서로 연관성이 약한 예측모형을 여러 개 만들어 내는 기법
- 랜덤포레스트 알고리즘에서 결정할 일:붓스트랩 표본의 개수, k값, 선형결합의 형식
- 붓스트랩 표본의 개수는 지나치게 적어서는 곤란
- 선형결합의 형식:회귀분석에서는 평균을, 분류문제에서는 다수결원칙을 적용하는 방식을 많이 사용

의사결정나무, 배깅, 랜덤포레스트의 비교
- 랜덤포레스트가 배깅과 의사결정나무에 비하여 예측오차가 작은 경향
- 배깅이 붓스트랩 표본을 만들어 예측모형의 평균예측모형을 구하여 이를 통해 편의를 줄임
- 랜덤포레스트는 붓스트랩 표본을 만든 후 임의로 변수를 선택하여 이의 평균예측모형을 구축하여 편의를 줄인 것

배깅 및 랜덤포레스트 : 병렬처리 알고리즘
- 빅데이터 분석에서 랜덤포레스트의 큰 장점 중 하나는 간단하게 병렬처리가 가능하다는 것

모형의 해석
- 변수의 개수가 많고 배깅, 랜덤포레스트와 같이 예측방법이 단순하지 않을 경우 각 변수들의 영향력을 시각화하기가 쉽지 않음
- 부분 의존성 도표(partial dependence plot) : 학습기에 사용되는 입력변수들 중 일부를 골라내어 그것의 영향력을 시각화
- 특정 변수에 대한 중요도 지수는 그 변수를 포함하지 않는 경우에 대하여 그 변수를 포함할 때에 어느 정도 예측오차가 줄어드는지를 보여 줌

요약
- 선형회귀모형의 최적 부분집합 선택과 의사결정나무는 학습 데이터에 변화가 있을 때 예측모형이 변하는 불안정성을 가지고 있으며 예측모형 구축 시 불연속적인 의사결정을 한다.
- 학습방법의 불안정성은 예측력의 저하를 가져옴과 동시에 해석을 어렵게 만든다. 따라서 학습방법을 안정적으로 만들기 위해 배깅이 개발되었다.
- 배깅은 학습 데이터를 모집단으로 가정하고 주어진 예측모형의 평균예측모형을 구하는 것이고 이를 통하여 분산을 줄여 줌으로써 예측력을 향상시킨다.
- 랜덤포레스트는 의사결정나무의 분산이 크다는 점을 고려한 것으로 데이터의 붓스트랩뿐만 아니라 변수의 개수까지 고려하여 무작위성을 더 크게 부여한 방법으로 이론적 설명이나 최종 결과에 대한 해석이 어렵지만 예측력은 높은 방법이다.
- 배깅과 랜덤포레스트는 여러 개의 붓스트랩 데이터를 생성한 후 각 붓스트랩 데이터에서 모형을 구축하고 모형의 평균을 구하기 때문에 병렬처리가 가능하다.
- 앙상블 기법의 부분 의존성 도표는 학습기에 사용되는 변수의 영향력을 시각화하기 위해 고안된 도표이다.



제8장 군집분석

군집분석
- 모집단 또는 범주의 사전정보가 없는 경우 사용하는 비지도학습법
- 군집 내의 개체들을 다른 군집에 속하는 개체들보다 서로 더 유사하도록 여러 군집으로 나눈 후 각 군집별 특성을 파악하고 전체 데이터 구조에 대한 이해를 돕는 것
- 군집분석에서는 반응변수가 없음
- 분석자의 주관에 따라 결과나 해석이 달라짐
- 군집분석과 유사한 분석으로 분류분석이 있음
- 분류분석은 범주에 대한 사전정보가 있는 경우에 분류를 잘할 수 있는 분류기를 구축하는 것이 목적
- 분류분석에서 분석 데이터는 회귀분석과 마찬가지로 반응변수를 가지고 있는데 반응변수의 속성이 수치형이 아니고 범주형
- 군집분석은 확률모형에 기초한 방법(model-based clustering)과 확률모형을 가정하지 않은 방법(model-free clustering)으로 구분
- 확률모형을 가정하지 않은 방법:대표적인 방법은 k-평균 군집법과 계층적 군집법
- 군집분석은 데이터를 정해진 그룹에 할당한다는 본래의 목적 이외에 이상점 개체의 발견이나 결측값 보정 등에도 활용
- 군집분석의 활용 예 : 고객세분화 (고객을 인구통계, 구매패턴, 생활패턴 등과 관련된 변수들을 이용하여 여러 집단으로 나누는 것)

유사성 척도
- 확률모형에 기초하지 않은 군집방법:관측값들의 유사성 측도가 필요
- 군집화는 거리(비유사성)를 이용 :
- 유클리디언 거리 (직선거리), cosine 유사성

계층적 군집분석
- 계층적 군집분석:병합방법과 분할방법이 있으며 병합방법이 주로 이용됨
- 병합(agglomeration)방법:순차적으로 가까운 관측값들끼리 묶어 주는 방법
- 분할(division)방법:먼 관측값들을 나누어 가는 방법
- 군집결과를 나무구조의 덴드로그램(dendrogram)을 통해 간단하게 표현

병합방법
- n개의 데이터 각각을 하나의 군집으로 취급하고, 이 중 가장 거리가 가까운 두 군집을 병합하여 n-1개의 군집을 형성
- 주어진 군집들 중 거리가 가장 가까운 두 군집을 병합하고 군집의 개수를 하나씩 줄이는 과정을 반복하여 모든 데이터가 하나의 군집에 속할 때까지 계속함
- 병합방법은 군집들 간의 거리를 측정하는 방법에 따라 다양한 종류가 있음
- 최단연결법은 두 군집 사이의 거리를 각 군집에서 하나씩 관측값을 뽑았을 때 나타날 수 있는 모든 조합의 거리의 최솟값으로 측정하는 방법
- 고립된 군집을 찾는 데 중점을 둔 방법으로서 군집이 고리형태로 연결되어 있는 경우에는 부적절한 결과를 줄 수도 있음
- 최장연결법:두 군집 사이의 거리를 각 군집에서 하나씩 관측값을 뽑았을 때 나타날 수 있는 거리의 최댓값으로 측정하여 군집화
- 군집들의 내부 응집성에 중점을 둔 방법

분할방법
- 먼 개체들을 나누어 가는 것으로, 먼저 n개의 개체를 2개의 군집으로 나누는 것으로 시작되어 병합적인 방법의 역순으로 진행

k-평균 군집분석
- 사전에 결정된 군집 수 k가 주어지면 유클리드 거리를 이용하여 전체 데이터를 상대적으로 유사한 k개의 군집으로 나누는 방법
- 계층적 군집분석에 비하여 계산량이 적고 대용량 데이터를 빠르게 처리
- 모든 변수가 연속형 변수여야 한다는 제약
- k-평균 군집분석의 최적화:주어진 관측치와 군집 수 k에 대해서 가능한 모든 군집에 대해서 거리제곱합을 계산 : 가장 작은 값을 가지는 최적분리를 찾음
- 관측치가 많거나 k가 큰 경우:경우의 수가 너무 많아서 계산이 불가능
- R에서 제공하고 있는 알고리즘은 모든 가능한 경우에 대해서 계산하지 않고 다음과 같은 방법으로 k개의 군집을 찾음
- 군집 수 k가 주어지면 랜덤하게 초기 k개 군집의 중심(평균벡터)을 선택
- 각 관측값을 그 중심과 가장 가까운 거리에 있는 군집에 할당한 후 군집 중심을 새로 계산
- 이 과정을 기존의 중심과 새로 계산된 중심 간에 차이가 없을 때까지 반복
- 알고리즘은 초기치에 따라서 다른 결과를 가져옴 : 여러 개의 초기치를 사용하여 구한 결과 중에서 거리제곱합이 가장 작은 결과를 선택하는 것이 일반적임
- 대부분의 군집방법은 군집 수를 미리 정해야만 결과를 계산
- 대부분의 경우 군집 수를 변경해 가면서 결과를 보고 최적 군집 수 결정
- k-평균 군집법의 경우:k값이 증가함에 따라 거리제곱합은 감소
- gap 통계량:k-1 때의 값보다 감소량이 줄어드는 k값을 선택하는 방법
- 계층적 군집방법론은 군집 수를 미리 정하지 않아도 되지만 최종적으로 군집을 나눌 때에는 군집 수를 선택
- 데이터의 시각화를 통한 최적 군집 수를 찾는 방법 : 주성분분석이 널리 사용
- 시각화가 어려우면 여러 가지 통계량을 사용하는데, 가령 각 그룹의 산포행렬의 행렬식을 최소로 하는 군집 수를 찾을 수도 있음
- k-평균 군집분석의 장점은 계층적 군집분석방법에 비해 계산이 쉽다는 것
- k-평균 군집분석 병렬처리

요약
- 군집분석은 각 군집 내의 개체들을 다른 군집에 속하는 개체들보다 서로 더 유사하도록 여러 군집으로 나눈 후 각 군집별 특성을 파악함으로써 전체 데이터 구조에 대한 이해를 돕는 비지도학습법이다.
- 군집분석에는 확률모형에 기초한 방법과 확률모형을 가정하지 않은 방법이 있다. 확률모형을 가정하지 않은 방법에는 k-평균 군집분석과 계층적 군집분석 등이 있다.
- 군집분석의 유사성의 측도로 연속형 변수의 경우 유클리디언 거리, cosine 유사성이 이용되고, 범주형 변수에 대한 Jaccard 계수가 이용되고 있다.
- 계층적 군집분석방법으로는 병합방법과 분할방법이 있으며 일반적으로는 병합방법이 사용된다. 군집 간의 거리측정법으로는 최단연결법, 최장연결법, 평균연결법이 있다.
- k-평균 군집분석은 군집 수 k에 대하여 군집 내 거리제곱합이 최소가 되는 군집을 찾는 방법으로 계층적 군집법에 비하여 계산량이 적고 대용량 데이터를 빠르게 처리할 수 있으나 모든 변수가 연속적이어야 한다는 제약이 있다.



제9장 추천 시스템

추천 시스템
- 쇼핑고객이 원하는 최적의 상품을 추천해 주는 방법을 지칭
- 시스템이 자동으로 고객이 흥미를 가질 만한 상품에 대한 정보를 미리 제공
- 아마존의 도서 추천 시스템, 넷플릭스의 영화 추천 시스템

연관성 분석
- 연관규칙분석:데이터에 존재하는 항목(item)들 간 if-then 형식의 연관규칙을 찾는 방법
- 기업의 데이터베이스에서 상품의 구매, 서비스 등 일련의 거래 또는 사건들 간의 연관성에 대한 규칙을 발견하기 위해 적용
- 마케팅에서는 손님의 장바구니에 들어 있는 품목 간의 관계를 알아본다는 의미에서 장바구니분석(market basket analysis)이라고도 부름
- 고객들이 구매한 상품에 대한 데이터에 대해 연관분석
- 두 품목 X와 Y를 동시에 구매한 경우의 수가 일정 수준 이상이며 품목 X를 포함하는 거래 중 품목 Y를 구입하는 경우의 수도 일정 수준 이상이어야 함

연관규칙 X ⇒ Y (즉 “if X, then Y”)의 신뢰도, 지지도, 향상도
- 지지도:전체 거래들 중 품목 X와 품목 Y를 동시에 포함하는 거래의 비율
P(X∩Y) = X와 Y가 동시에 포함된 거래 수 / 전체 거래 수
- 신뢰도:품목 X를 포함하는 거래들 중 품목 Y를 포함하는 거래의 비율
P(Y|X) = P(X∩Y)/P(X) = 지지도/P(X)
= X와 Y가 동시에 포함된 거래 수 / X가 포함된 거래 수
- 지지도와 신뢰도만으로는 유용한 규칙인지 판단하기 어려움 : 향상도를 고려
- 향상도 : 품목 X가 주어지지 않았을 때 품목 Y의 확률 대비 품목 X가 주어졌을 때의 품목 Y의 확률의 증가 비율
P(X∩Y)/P(X)P(Y) = P(Y|X)/P(X) = 신뢰도/P(Y)
= X와 Y가 동시에 포함된 거래 수 / (X가 포함된 거래 수xY가 포함된 거래 수)
- 이 값이 클수록 품목 X의 구매 여부가 품목 Y의 구매 여부에 큰 영향을 미침
- 향상도=1: 품목 X와 품목 Y의 구매가 상호 관련이 없는 경우
- P(Y|X)=P(Y) : 두 품목이 서로 독립적인 관계
- 향상도 >1:결과를 예측하는 데 규칙은 우연적 기회보다 우수(양의 상관관계)
- 향상도<1:규칙은 우연적 기회보다 나쁘다는 의미(음의 상관관계)

선험적 알고리즘
- k개의 품목이 있는 경우에 2k개의 가능한 품목 집합, k가 큰 경우에 모든 집합 중에 지지도가 높은 집합을 찾는 것은 현실적으로 불가능
- 최소지지도를 갖는 연관규칙을 찾는 대표적인 방법:선험적(apriori) 알고리즘
- 최소지지도보다 큰 집합(빈발품목집합)만 대상으로 높은 지지도를 갖는 품목집합을 찾는 것
- 선험적 알고리즘의 2단계
① 최소지지도를 넘는 모든 빈발품목집합을 생성함
② 빈발품목집합에서 최소신뢰도를 넘는 모든 규칙을 생성함
- 연관규칙분석에서 어려운 점:최소지지도 이상의 빈발품목집합을 생성함
- 빈발품목집합에 대하여 연관규칙을 생성하기 위해 공집합을 제외한 빈발품목집합의 모든 부분집합을 고려함
- 모든 부분집합에 대하여 연관규칙을 생성하고 신뢰도를 계산하여 주어진 최소신뢰도를 넘는 연관규칙을 찾음

협력적 정화방법
- 내용기반 추천방법의 문제점:이종의 상품추천이 불가능 (품목을 뛰어넘는 추천이 불가능)
- 협력적 정화방법(collaborative filtering):주어진 고객과 상품들에 대한 선호도가 비슷한 고객을 조사하고, 선호도가 비슷한 고객들이 좋아하는 상품 중 주어진 고객이 모르고 있는 상품을 추천하는 것
- 로맨스 영화를 좋아하는 고객 중 다수가 특정 브랜드 자동차를 소유 → 로맨스 영화를 좋아하지만 자동차가 없는 고객에게 특정 브랜드의 자동차를 추천
- 협력적 정화방법은 고객 중심의 협력적 정화방법과 상품 중심의 협력적 정화방법으로 구성

고객 중심 협력적 정화방법
- 관측되지 않은 선호도를 고객기반 협력적 정화방법으로 추정하는 방법
- 협력적 정화를 설명하기 위해서는 먼저 고객들 사이의 선호도 패턴의 유사성을 측정하는 것이 선행
- 유사성 척도가 정해지면, 고객에게서 관측되지 않은 상품의 선호도를 추정

품목 중심 협력적 정화방법
- 상품들 사이의 유사성 척도를 구한 후, 관측되지 않은 유사한 상품들의 고객의 선호도를 이용하여 추정
- 고객기반 협력적 정화방법과 비슷하게 유사성 척도로 cosine 유사도나 상관관계를 이용할 수 있음
- 유사성 척도가 정해지면, 고객에게서 관측되지 않은 상품의 선호도를 추정

고객 중심 방법과 상품 중심 방법의 비교
- 고객기반 협력적 정화방법과 상품기반 협력적 정화방법 사이의 선택 : 정확도, 계산의 효율성, 안정성, 해석력과 놀라움 등 다섯 가지 고려
- 정확도:추천 시스템의 예측력은 고객의 수와 상품의 수에 의해서 결정됨
- 고객의 수가 상품의 수보다 큰 경우 상품기반 협력적 정화방법이 우수한 예측력을 보임
- 고객의 수보다 상품의 수가 많은 경우 고객기반 협력적 정화방법의 예측력이 좋음
- 계산의 효율성:협력적 정화의 계산 효율성도 고객의 수와 상품의 수에 따라 결정
- 고객의 수가 상품의 수보다 큰 경우 상품기반 협력적 정화방법이 계산의 효율성이 좋음
- 고객의 수가 상품의 수보다 작은 경우 고객기반 협력적 정화방법의 계산의 효율성이 높음
- 안정성:추천 시스템은 시간이 지나면서 고객과 상품추천이 변하는 것을 고려하여 방법 선택
- 고객이 상품보다 빨리 변하는 경우 상품기반 협력적 정화방법이 안정성에서 우수
- 상품이 고객보다 빨리 변하는 경우 고객기반 협력적 정화 방법이 더욱 안정적
- 온라인 쇼핑의 경우 고객이 상품보다 빨리 변하고
- 전문가를 위한 논문추천에서는 상품이 고객보다 빨리 변함
- 해석력:상품기반 추천은 고객들에게 추천된 상품과 유사한 상품을 알려 줌으로써 추천결과에 대한 설명을 고객에게 효율적으로 전달
- 고객기반 추천방법은 나와 유사한 고객을 알려 주어도 누군지 모르기 때문에 크게 유용하지 않음
- 놀라움:상품기반 추천은 고객이 선호하는 상품과 유사한 상품을 추천하기 때문에 비슷한 종류의 상품이 추천됨. 추천은 안정적이기는 하지만 새로운 상품 추천에는 그리 효율적이지 않음
- 고객기반 추천은 고객들 사이의 관계를 이용하기 때문에, 상품의 유사성을 뛰어넘어서 추천 가능

행렬분해를 이용한 협력적 정화방법
- 최근린방법을 이용한 협력적 정화방법은 이해하기 쉬움 : 고객의 수와 상품의 수가 증가할 때 계산량이 빠르게 증가하는 것이 단점
- 많은 경우 관측된 선호도의 수가 매우 작으며, 이 경우 최근린방법의 예측력이 떨어짐
- 최근린방법을 이용한 협력적 정화방법의 문제를 해결하기 위하여 개발 : 행렬분해방법
- 선호도행렬의 매우 작은 부분만 관측된 상태에서 행렬분해를 이용한 협력적 정화방법은 선호도행렬의 관측되지 않은 원소들을 추정해서 선호도 행렬을 완비
- 행렬분해방법의 기본 아이디어는 선호도행렬을 2개의 행렬의 곱으로 분해 : R = A x B
- 행렬분해를 이용한 협력적 정화방법을 이용한 선호도행렬의 추정방법은 먼저 A와 B를 추정하고 이를 이용하여 R을 추정함

요약
- 추천 시스템은 쇼핑고객이 원하는 최적의 상품을 추천해 주는 방법을 지칭하는데, 연관성 분석을 통한 추천 시스템과 협력적 정화방법을 통한 추천 시스템이 있다.
- 연관성 분석은 데이터에 존재하는 항목(item)들 간의 if-then 형식의 연관규칙을 찾는 방법으로서 일종의 비지도학습법이다.
- 연관성 분석은 선험적(a priori) 알고리즘을 통해서 연관규칙을 찾을 수 있으며, 유용한 연관규칙을 찾기 위한 측도로 지지도, 신뢰도, 향상도를 사용한다.
- 협력적 정화방법은 주어진 고객과 상품들에 대한 선호도 비슷한 고객을 조사하고, 선호도가 비슷한 고객들이 좋아하는 상품 중 주어진 고객이 모르고 있는 상품을 추천하는 개인화된 통계적 추천방법이다.
- 협력적 정화방법으로는 고객 중심, 품목 중심, 행렬분해를 이용한 방법이 있다.



제10장 개인정보와 프라이버시 보호

개인정보
- 개인정보:살아 있는 개인에 관한 정보로서 성명, 주민등록번호 및 영상 등을 통해 개인을 알아볼 수 있는 정보(해당 정보만으로는 특정 개인을 알아볼 수 없더라도 다른 정보와 쉽게 결합하여 알아볼 수 있는 것을 포함) ← 개인정보보호법 제2조 제1호
- 식별정보:행정정보와 생체정보로 다시 구분
- 행정정보:성명, 주민등록번호, 여권번호, 운전면허증번호 등
- 생체정보:지문, 성문, 홍채, 사진, 유전자정보 등
- 2차 식별정보:식별정보를 바탕으로 만들어지는 정보로 신용카드번호, 은행계좌번호, 휴대전화번호, 회사사원번호, 이메일, IP주소 등
- 속성정보:개인의 성장 및 경제활동에 따라 발생되는 정보
- 성장 관련 정보:학력정보(학교교육 시 생성되는 정보)와 건강정보(병원 출입 시 생성되는 질병 또는 건강검진자료)
- 경제활동 관련 정보:직장에 입사해서 생성되는 각종 활동정보와 개인이 경제활동을 하면서 생성되는 채권·채무 정보, 신용정보, 상거래정보 등
- 기타 정보:자신이 가입한 단체, 인터넷 카페에서 활동한 흔적, 사회관계로부터 생성되는 관계 정보, 종교·취미·사상·신조·가치관·정치적 성향 등의 내면정보, 통신내역, 위치정보, 음주량·흡연량 등의 정보, 전과기록 및 법률위반기록 등의 정보
- 속성정보 중 일부는 개인 식별성을 제거한 채 조사되거나 집계되어 공개되기도 함

프라이버시
- 프라이버시(privacy):개인의 사생활이나 사적인 일, 또는 남에게 간섭받지 않을 권리로, 크레이그와 루드로프는 신체 프라이버시, 정보 프라이버시, 조직 프라이버시로 구분
- 신체 프라이버시:신체적으로 불법조사를 받지 않고 집이 감시받지 않고 소유물을 압수당하지 않을 자유
- 정보 프라이버시:본인의 디지털 정보가 본래 목적과 다르게 수집, 저장, 공유되지 않을 권리 + 개인의 대화, 행동, 위치정보 등에서 익명성을 유지할 권리
- 조직 프라이버시:정부기관, 기업 등이 거래비밀 등 자신의 활동을 타인에게 공개하지 않는 것
- 유엔 세계인권선언 제12조
“어느 누구도 자신의 프라이버시, 가족, 가정, 통신에 대해 자의적인 간섭을 받거나 자신의 명예와 명성에 대한 비난을 받아서는 안 된다. 모든 사람에게는 그러한 간섭이나 비난에 대해 법의 보호를 받을 권리가 있다.”
- 개인정보는 프라이버시와 밀접한 관계를 가지고 있으나 개인정보 전체와 일치하지는 않음
- 빅데이터 시대의 프라이버시:자신의 정보가 타인에게 동의 없이 공개되거나 침해되지 않는 권리 : 자신의 정보를 통제할 수 있는 권리, 즉 잊혀질 권리로 확대

개인정보 활용의 동의 방식
- 정보통신망 이용촉진 및 정보보호 등에 관한 법률에 따른 개인정보 활용의 동의 방식
“정보통신서비스제공자는 이용자의 개인정보를 이용하려고 수집하는 경우에는 개인정보의 수집·이용 목적, 수집하는 개인정보의 항목, 개인정보의 보유·이용 기간을 이용자에게 알리고 동의를 받아야 한다.”
- 옵트인 방식:개인에게 개인정보 수집에 대해 사전에 동의를 받는 방식, 회원가입 시 문자메시지 또는 이메일 발송을 허용한 자에게만 보내는 방식
- 옵트아웃 방식:거부의사를 표시하지 않는 한 동의한 것으로 간주, 문자메시지, 이메일 등을 우선 보내고 당사자가 거부의사를 밝히지 않으면 계속 문자메시지, 이메일을 보내는 방식

개인정보의 보호제도
- 2011년 9월 30일을 기준으로 ‘개인정보보호법’이 시행 : 개인정보의 수집·유출·오용·남용으로부터 사생활의 비밀 등을 보호함으로써 국민의 권리와 이익을 증진하고, 개인의 존엄과 가치를 구현하기 위하여 개인정보 처리에 관한 사항의 규정을 목적으로 제정
- 빅데이터 시대의 익명화는 개인정보 보호에 무엇보다 중요

개인정보의 기술적 보호
- 개인정보와 프라이버시는 제도만으로 보호되기 어려우며 개인정보 및 프라이버시 정보 보호기술이 필요함
- 개인정보 보호기술은 수집, 저장ㆍ관리, 이용ㆍ제공, 분석 그리고 파기 등 개인정보 수명주기에 따라 구분
- 수집단계 기술:익명화 기술이 중요함. 익명화 기술은 이용자가 서비스를 익명으로 이용할 수 있도록 개인정보를 숨기는 기술

요약
- 개인정보는 살아 있는 개인에 관한 정보로서 성명, 주민등록번호 및 영상 등을 통해 개인을 알아볼 수 있는 정보(해당 정보만으로는 특정 개인을 알아볼 수 없더라도 다른 정보와 쉽게 결합하여 알아볼 수 있는 것을 포함한다)를 말한다.
- 프라이버시는 개인의 사생활이나 사적인 일, 또는 그것을 간섭받지 않을 권리로 정의된다.
- 빅데이터 시대에는 다양한 원천의 개인 데이터가 수집되고 데이터마이닝 기술로 이들을 결합·분석하기 때문에 지금까지 소홀히 여겨 왔던 비개인정보로 취급되었던 내용들로도 개인을 식별할 수 있게 되었다.
- 개인정보보호법은 개인정보의 수집·유출·오용·남용으로부터 사생활의 비밀 등을 보호함으로써 국민의 권리와 이익을 증진하고, 나아가 개인의 존엄과 가치를 구현하기 위하여 개인정보 처리에 관한 사항의 규정을 목적으로 제정되었다.
- 개인정보 보호기술은 수집, 저장·관리, 이용·제공, 분석 그리고 파기 등 개인정보 수명주기에 따라 구분할 수 있다.