JANGUN


데이터 마이닝


지음 : 장영재, 김현중, 조형준



목차

개요
제1장 데이터과학과 데이터마이닝
제2장 회귀모형
제3장 나무모형
제4장 앙상블모형
제5장 신경망모형
제6장 모형비교평가
제7장 군집분석
제8장 연관성분석


개요

데이터과학의 개념:
빅데이터 시대 이후의 데이터 과학은 데이터 분석에 국한하지 않고 IT기술의 접목을 통해 데이터의 크기나 형태에 상관없이 데이터의 가치를 찾는 능력을 의미, 통계학적 사고와 이해는 데이터과학의 발전에 필수적인 요소로 작용
→ 진정한 데이터 과학자가 되기 위해서는 데이터마이닝과 같은 통계학이나 전산지식의 기술적인 측면뿐만 아니라 다양한 경험과 함께 스토리텔링 능력, 문제 해결의 의지, 시각적 전달에 필요한 디자인 감각 등 종합적인 능력이 요구

데이터마이닝이란 대용량의 데이터로부터 이들 데이터 내에 존재하는 관계, 패턴, 규칙 등을 탐색하고 모형화함으로써 유용한 지식을 추출하는 일련의 과정
: 데이터마이닝을 이해하기 위해 모수적 모형과 알고리즘 접근 방법을 비교해 볼 필요
: 수행단계 * 목적결정 → 데이터 수집 → 데이터 탐색 및 정제 → 데이터마이닝 방법 결정 → 모형선택 → 성능평가 → 적용


1. 선형회귀모형(lm)과 로지스틱 회귀모형(glm)
+ lm, glm, step, predict, prediction, performance

2. 나무모형 : 나무모형은 분석과정을 나무구조로 도형화하여 분류분석 혹은 회귀분석을 수행하는 데이터마이닝의 대표적 분석기법
: 목표변수가 범주형인 경우에는 분류나무, 목표변수가 숫자형인 경우에는 회귀나무 모형을 이용 (나무구조에 의해 표현된 분류 및 회귀분석)
: 상호작용을 쉽게 포착한다. (상호작용을 로지스틱 회귀분석으로 확인(상호작용 변수 추가))
: 가지치기
+ rpart, rpart.control, printcp, prune, plot, text, predict

3. 앙상블모형 - 주어진 데이터를 이용하여 여러 개의 서로 다른 예측모형들을 생성한 후, 이러한 예측모형들의 예측결과들을 종합하여 하나의 최종 예측결과를 도출해 내는 방법 (다수결 방법)
: 앙상블모형은 목표변수의 형태에 따라 분류분석에도 사용가능하고, 회귀분석의 경우에도 사용가능 (대부분 분류 모형에서 사용되고 있음)
: 앙상블모형의 성공요인 : 데이터의 다양성, 나무모형 생성의 다양성
: 배깅, 부스팅, 랜덤포레스트
+ bagging, predict.bagging, errorevol, plot.errorevol, boosting, predict.boosting, randomForest, importance, predict, plot

4. 신경망 모형 - 뇌의 기본 구조 조직인 뉴런(neuron)과 뉴런이 연결되어 일을 처리하게 되는데, 이와 유사하게 수학적 모형으로서의 뉴런이 서로 연결되어 네트워크를 형성하도록 구성된 것, 신경망은 각 독립적인 과업을 수행하는 뉴런이 연결되어 있고 정보가 많은 연결망을 통해 분산되어 있으므로 일부 뉴런의 문제가 발행하여도 신경망 전체에 큰 영향을 주게 될 가능성이 낮다는 특징 (뛰어난 병렬성과 결함 허용 능력)
: Hopfield – 역전파 알고리즘 (가중치 조절)
+ neuralnet, plot, summary, print, compute

5. 모형평가 – 예측력, 해석력, 효율성, 안정성 (예측력이 가장 중요)
: 연속형 목표변수 (PMSE), 이항형 목표변수 (민감도, 특이도, 예측정확도, 오분류율)
: 교차 타당도 - 훈련데이터와 검증데이터로 분할하여 모형을 구축하고 평가하는 방법은 손쉽고 계산이 간단
+ prediction, performance

6. 군집분석 (cluster analysis)이란 관측값 또는 개체를 의미 있는 몇 개의 부분집단으로 나누는 과정을 의미, 군집분석은대표적인 자율학습 방법으로 특성이 유사한 개별 개체들끼리 스스로 묶이도록 군집을 형성하게 되며, 이렇게 형성된 군집의 특징을 사후적으로 분석
: 비유사성 측도 – 거리 (유클리디안, 맨해튼, 민코브스키)
: 계층적 군집분석(응집분석) : 거리 계산법 (단일연결법(최단거리), 완전연결법(최장거리), 평균연결법, 중심연결법
: 분할분석 - 개체의 수가 많을 경우 계산시간이 오래 걸린다는 응집분석의 단점을 보완하기 위하여 Macnaughton-smith(1964)가 분할분석을 제안
: 비계층적 군집분석 - 계층적 군집분석은 관찰치의 수가 적은 경우에 적당하지만 대용량의 데이터를 가지고 군집분석을 실시할 때에는 비계층적 군집분석 방법인 K-평균 군집분석을 사용
+ dist, hclust, diana, kmeans, plot, cutree, table, tapply

7. 연관성 분석 - 연관성분석(Association Analysis)은 연관성 규칙을 통해 하나의 거래나 사건에 포함되어 있는 둘 이상의 품목 간 상호 연관성을 발견해 내는 것
연관규칙이란 어떤 사건이 얼마나 자주 동시에 발생하는 가를 표현하는 규칙 또는 조건 (장바구니 분석), 연관규칙은 사건과 사건간의 관계에 관심
: 지지율(support) - P(A ∩B), 신뢰도(confidence) – P(A|B), 향상도(lift) – P(A∩𝐵)/𝑃(𝐴)∙𝑃(𝐵)
: 시차연관성분석은 일반적인 연관성분석과 유사하나 연관규칙을 고려할 때 순서를 고려하다는 점에서 차이가 있음
: 연관규칙에서는 품목의 개수가 많아질수록 고려해야 할 규칙수가 크게 증가하므로 품목수가 너무 많지 않도록 고려
+ str, read.transactions, apriori, inspect, plot



제1장 데이터과학과 데이터마이닝

1.1 데이터과학
개념 : 데이터를 수집하여 그 의미를 찾아내는 다양한 시도에 의해 형성되어 왔다
- 빅 데이터 시대 이후의 데이터 과학은 데이터 분석에 국한하지 않고 IT기술의 접목을 통해 데이터의 크기나 형태에 상관없이 데이터의 가치를 찾는 능력을 의미
- 통계학적 사고와 이해는 데이터과학의 발전에 필수적인 요소로 작용

발전과정
- 데이터 수집 및 분석의 역사 : 현재적 의미의 데이터분석(영국의 로널드 피셔), 조지 갤럽은 사람들의 생각을 질문이나 문항을 통해 데이터로 수집, 윌리엄 페어와 얼 아이작은 고객 행동을 예측하여 의사결정과 연계한 개념을 소개
- 데이터과학의 발전 배경 : 데이터 분석을 기업에 본격적으로 도입하게 된 계기는 데이터웨어하우스(data warehouse)의 보급과 도입
- 데이터과학과 데이터 과학자 :
코펜하겐 대학의 전산학 교수인 피터 나우어 교수는 전산과학(computer science)을 대신하여 데이터 과학이란 용어를 사용(1974년)
통계학자인 제프 우 교수(Jeff Wu)의 “통계=데이터 과학?“이라는 제목의 강연(1997년)
퍼듀대학교 윌리엄 클리브랜드 교수는 데이터 과학은 더 향상된 데이터 분석을 위해 통계학이 전산학과 융합하며 학습의 영역을 확장해 나가는 과정이라고 소개
- 진정한 데이터 과학자가 되기 위해서는 데이터마이닝과 같은 통계학이나 전산지식의 기술적인 측면뿐만 아니라 다양한 경험과 함께 스토리텔링 능력, 문제 해결의 의지, 시각적 전달에 필요한 디자인 감각 등 종합적인 능력이 요구

1.2 데이터마이닝
개념 : 데이터마이닝이란 대용량의 데이터로부터 이들 데이터 내에 존재하는 관계, 패턴, 규칙 등을 탐색하고 모형화함으로써 유용한 지식을 추출하는 일련의 과정
- 간단히 이야기하면 데이터 분석이라고 할 수 있다.
- 복잡성이 높은 데이터 분석에 인공지능이나 패턴인식 등에서 연구되어 온 기계학습 이론이 적용
- 데이터마이닝을 이해하기 위해 모수적 모형과 알고리즘 접근 방법을 비교해 볼 필요

특징 :
① 대용량의 관측 가능한 자료를 다룸
② 컴퓨터 중심의 기법으로서 경험적 방법이 중시
③ 통계학과 인공지능을 위주로 한 컴퓨터공학 분야에서 방법론을 개발하고 이를 경영, 경제, 정보기술(IT) 등 다양한 분야의 업무에 활용하여 의사결정을 도움

관련분야
① KDD (Knowledge Discovery in Database) 데이터베이스 안에서의 지식발견 과정 : 데이터 웨어하우징 (data warehousing), OLAP (On-Line Analytical Process-ing) 등도 넓은 의미에서 KDD의 한 과정 이라고 할 수 있음
② 기계학습 (Machine Learning) 인공지능 (Articial intelligence)의 한 분야로서 입력되는 자료를 바탕으로 기계(컴퓨터)가 판단을 할 수 있는 방법에 대한 연구가 진행
③ 패턴인식 (Pattern Recognition) 거대한 자료로부터 일정한 패턴을 찾아가는 과정으로 이미지 분류와 깊은 관련이 있다. 통계학의 판별 및 분류 분석과 유사
④ 통계학 데이터마이닝을 한마디로 데이터 분석 및 예측모형 적합이라고 할 수 있으므로 기존의 통계학 틀에서 크게 벗어난 것이 없다고 할 수 있으며 데이터마이닝에서 활용되는 모형은 이미 통계학의 유연한 함수추정 분야에서 다루고 있는 내용

데이터마이닝 기법의 구분 : 지도학습과 자율학습으로 나눌 수 있음


데이터마이닝 수행 단계

- 목적 결정 : 프로젝트의 목적을 계획하고 설정
- 데이터 수집 : 무작위로 추출하거나 전부 추출
- 데이터 탐색 및 정제 : 데이터를 표준화 및 점검하는 단계
- 데이터마이닝 방법 결정 : 데이터마이닝 문제 및 기법을 선택
- 모형선택 : 데이터마이닝 프로세스의 여러 단계를 반복적으로 수행하여 가장 좋은 모형을 찾는 단계, 검증 데이터를 이용하여 가장 좋은 성능을 내는 모델 파라미터를 결정
- 성능평가 : 검증 데이터를 이용하여 구축된 모형의 성능을 평가하여 가장 효율적인 모형을 찾는다.
- 적용 : 구축된 모형을 운영 시스템에 탑재하여 실제 의사결정에 적용하는 단계

데이터마이닝 활용 분야
① 고객관계관리 (CRM) : 목표마케팅, 고객세분화, 고객성향 변동분석, 교차판매, 장바구니분석 등
② 신용평가 : 불량채권과 대손 추정하여 이를 최소화
③ 품질개선 : 불량품을 찾고, 그 원인을 밝혀서 이를 궁극적으로 예방
④ 부정행위 적발 : 고도의 사기행위를 발견할 수 있는 패턴을 알아내는 것
⑤ 이미지분석 : 디지털화된 사진으로부터 패턴을 추출하는 기법
⑥ 생명정보학 : 유전자서열 데이터를 분석해 유전체 각 부분의 기능을 판단하고 예측
⑦ 인터넷 비즈니스 : 링크트인, 아마존

요약
+ 빅데이터 시대에 접어들면서 데이터 분석을 담당하는 사람들에게 주어진 업무의 범주가 훨씬 확대되었으며 더욱 과학적이고 합리적인 방법과 분별능력이 요구되고 있다. 데이터 과학은 데이터를 수집하여 그 의미를 찾아내기 위한 다양한 시도에 의해 형성되어 왔다.
+ 데이터마이닝은 데이터베이스 또는 데이터웨어하우스에 분산 저장된 방대한 양의 데이터로부터 흥미로운 패턴을 발견하고 미래에 대한 예측 모형을 구축하는 작업이다.
+ 데이터마이닝은 인공지능, 패턴인식 등 기계학습 이론에서 비롯되었으며, 통계학, 컴퓨터과학, 경영정보학 등 여러 학문 분야에서 연구되고 있다. 비즈니스, 경제학, 생명정보학 등 많은 응용분야가 있다.
+ 데이터마이닝의 기법들은 크게 감독학습과 자율학습으로 나뉘며, 감독학습에는 분류분석 및 예측분석을 포함하고 자율학습은 군집분석 및 연관분석을 포괄한다. 텍스트마이닝, 사회연결망분석 등의 비정형 자료 분석은 데이터마이닝 분석의 복잡도를 더하고 있다.



제2장 회귀모형

2.1 선형회귀모형
회귀모형 : 목표변수와 p개의 입력변수들을 사이의 관계는 다음과 같은 회귀모형으로 근사

- ϵ : 확률오차

선형회귀모형의 정의 :
- β : 회귀모수 또는 회귀계수
- ϵi : Yi의 근사 오차, 서로 독립이고 평균 0, 일정한 분산을 가진 정규분포를 따른다고 가정

회귀모수의 추정
- 최소제곱추정법 : 회귀직선까지의 수직거리 제곱의 합을 최소화하는 회귀모수
- 회귀계수 βj는 다른 입력변수들이 일정할 때 j번째 입력변수가 한 단위 변동할 때 대응하는 Y의 변동의 양으로 해석한다.
- βj는 다른 입력변수를 보정한 후에 Y에 대한 Xj의 기여도


입력변수의 중요도 : t 값
- SE는 j번째 회귀계수의 추정치의 표준오차
- 표준오차 : S/n^0.5
- t값의 절대값이 클수록 영향력이 크다


모형의 적합도

- F값 = 회귀직선에 의해 평균적으로 설명할 수 있는 부분(MSR) / 설명할 수 없는 부분(MSE)
- SSR : 회귀직선으로 설명할 수 있는 부분의 총합
- SSE : 설명할 수 없는 부분의 총합(오차제곱합)
- F값이 크면 p개의 입력변수 중에 최소한 하나는 유의하다 (대립가설)
- F-값이 작아서 P-값이 크면(보통 0.05보다 크면), 모든 입력변수가 유의하지 않다(회귀계수가 0이다, 회귀직선이 쓸모가 없다)
- 결정계수 (R2) : 설명할 수 있는 부분의 총합을 변동의 총합으로 나눈 값으로 0과 1 사이의 값. 총변동 중에 회귀직선으로 설명할 수 있는 변동 부분
- 입력변수가 늘어나면 결정계수는 증가한다. 그러나 변수가 많으면 과다적합될 가능성이 높다.
- 수정된 결정계수 (adjusted R2) : 자유도를 고려한 결정계수
- AIC : 입력변수의 수가 다른 모형들을 비교 평가하는 기준으로 여러 후보 모형들 중에서 가장 작은 AIC를 가지는 모형을 선택한다.
- 입력변수의 수가 증가할 수록 SSE는 감소하지만 벌점 2p를 더한 값을 의미

모형을 이용한 예측


예측력 (MSE) : 예측 오차들의 합


2.2 로지스틱 회귀모형
- 목표변수가 두 개의 범주를 가진 이항형인 경우 범주 분류, ex) 신용 좋다/나쁘다.
- 목표변수가 0과 1 을 가지고, 중간 값을 가질 수 없으므로, 선형적으로 예측할 수 없다.
- 목표변수의 값이 1인 확률의 로짓변환과 입력변수의 선형함수 관계로 나타내는 모형


모형의 정의 ~ 목표변수를 확장하는 단계를 이해할 필요가 있다.
- 회귀모형에 확률의 개념을 도입 (1이될 확률 ~ π)
- π값은 0 ~ 1 사이의 값
- π/(1- π) 값은 0 ~ ∞. (오즈비)
- log(π/(1- π)) : - ∞ ~ ∞ 값을 가짐
- Yi = log(π/(1- π)) = β0+ β1X1+…+ βpXp
- 성공 확률(π) 과 입력변수와 관계는 종종 로지스틱 반응함수로 표현


회귀모수의 추정
- 최대우도추정법 : 우도함수가 최대가 될 때 모수의 추정치
- 우도함수 L(β) : 데이터의 확률함수를 모수의 함수로 취급한 것
- 회귀계수 β는 로그오즈에 미치는 X의 효과이다.


변수의 중요도


모형의 적합도 : 이탈도, AIC값
- 이탈도가 낮을수록 좋은 모형이다.
- AIC값도 낮을수록 좋다.


모형을 이용한 예측 : 분류의 문제


예측력

- 민감도 : 양성일 때 양성으로 예측할 확률
- 특이도 : 음성일 때 음성으로 예측할 확률
- 정확도 : 양성과 음성을 맞게 예측할 확률
- 오분류율 : 양성일 때 음성으로 음성일 때 양성으로 잘못 예측할 확률
- 민감도와 특이도는 임계치에 따라 달라지고, 임계치는 상황에 따라 다르게 결정할 수 있다.
- ROC 곡선 : 가로축(1-특이도), 세로축(민감도)로 그린 그래프로 좌상단에 가까울수록 좋다. 즉, 하단 면적이 넓을수록 좋다.

2.3 범주형 입력변수 처리
- R에서는 factor 명령을 사용하여 가변수로 변환할 수 있다.


2.4 모형구축을 위한 변수 선택
모형은 데이터를 잘 설명할 수 있을 만큼 충분히 복잡해야 하고, 과적합하지 않고 해석하기 좋게 단순해야 함.
- 입력변수가 너무 많으면 유지하기 비효율적이고, 예측오차가 큼
- 중요한 변수를 제거하면 중요한 정보를 잃어버리고 편향이 발생한다.
- 입력변수들의 모든 가능한 조합을 평가하여 유의한 입력변수만을 포함한 가장 적절한 모형을 선택하는 방법을 활요
① 후진소거법(backward elimination) : 모든 변수를 포함시킨 모형부터 시작하여 가장 유의하지 않은 변수를 하나씩 제거하여 유의한 변수만 남을 때까지 진행
② 전진선택법(forward selection) : 상수항만 가진 모형부터 시작하여 가장 유의한 변수를 하나 씩 포함시켜 포함되지 않고 남은 변수들이 모두 유의하지 않을 때까지 진행
③ 단계적선택법(stepwise selection) : 전진선택법처럼 상수항부터 시작하여 가장 유의한 변수를 하나씩 모형에 포함시키지만, 어떤 변수가 포함된 이후에 기존에 포함된 변수 중에 유의하지 않은 변수를 제거하는 과정이 포함

2.5 R을 이용한 실습
선형회귀모형
lm(formula, data, na.action) : 선형모형을 적합하기 위해 사용
- formula : 목표변수~입력변수의 선형 결합
- data : 사용할 데이터 프레임

로지스틱 회귀모형
glm(formula, family, data, na.action) : 일반화 선형모형을 적합하기 위해 사용
- family : 분포와 연결함수 설정 (family=gaussian, binomial0

모형선택함수
step(object, direction=c(“both”, “backward”, “forward”) : AIC를 이용한 모형 선택
- object : 함수 lm, glm 등에서 생성한 object
- direction : 변수 선택방법(both~단계적 선택법, backward~후진소거법, forward~전진선택법)

예측함수
predict(object, newdata, type) : 다양한 모형 적합 결과로부터 예측치를 계산
- newdata : 예측할 변수들로 구성된 데이터 프레임
- type : 예측형태를 입력하는 것으로, 목표값을 예측할 때 type=“response”를 사용

ROCR의 예측함수
prediction(predictions, labels) : 패키지 ROCR에서 제공하는 함수로 예측치를 계산
- predictions : 예측치를 담고 있는 벡터, 행렬 또는 데이터 프레임
- labels : 실제 분류수준값을 담고 있는 벡터, 행렬 또는 데이터 프레임

ROCR의 예측측도 함수
performace(prediction.obj, measure) : 예측력을 계산할 때 사용
- prediction.obj : prediction에서 발생하는 object
- measure : 모형평가에 사용할 측도를 지정, tpr(true positive rate) 민감도, fpr(false positive rate) 1-특이도, acc 예측정확도, err 오분류율

요약
+ 회귀분석은 변수들 사이에 함수적 관계를 조사하는 통계적 방법이다. 그 관계는 목표변수와 입력변수들을 연결하는 방정식 또는 모형의 형태로 표현된다.
+ 연속형인 목표변수와 연속형 또는 범주형 입력변수들 사이에 관계를 나타내는 선형함수식을 선형회귀모형이라고 한다.
+ 목표변수의 값이 두 개일때 그 중에 하나를 취할 확률의 로짓변환과 입력변수들의 선형 함수 관계로 나타내는 식을 로지스틱 회귀모형이라고 한다.
+ 주어진 데이터에 기반하여 얻은 회귀식에 새로 수집한 데이터의 입력변수 값을 대입하여 목표변수의 값을 예측할 수 있다.
+ 선형회귀모형을 이용한 모형의 예측력은 MSE로 평가할 수 있다.
+ 로지스틱회귀를 이용한 모형의 예측력은 민감도, 특이도, 예측정확도, 오분류율, ROC곡선, AUC 등으로 평가할 수 있다.



제3장 나무모형

3.1 나무모형이란?
나무모형은 분석과정을 나무구조로 도형화하여 분류분석 혹은 회귀분석을 수행하는 데이터마이닝의 대표적 분석기법
- 목표변수가 범주형인 경우에는 분류나무 모형 (분류 분석)
- 목표변수가 숫자형인 경우에는 회귀나무 모형 (회귀 분석)
- 나무모형에 의한 의사결정 규칙은 데이터를 바탕으로 이루어짐


나무모형의 목적
- 분류 : 신용카드 신청자에 대한 승인/거절 의사 결정
- 예측 : 신용카드 발급 후 월간 평균 사용액 예측
- 등급화 : 고객의 신용도 등급
- 세분화 : 신규 고객에 대한 군집분석으로 고객 세분화
- 변수선택 : 변수 중 뿌리노드 및 중간노드의 분할에 사용되는 변수의 유용성 판단
- 상호작용탐색 : 입력변수 중 일부 변수의 특별한 조합이 가지는 특별한 효과를 찾아내는 것

상호작용의 발견
- 입력변수의 개수가 많은 경우 고려해야 하는 상호작용의 개수가 매우 많아져서 많은 시간과 노력이 소요됨
- 좌석등급에 따른 생존율은 연령과 성별에 의해 영향 (연령과 좌석등급과 성별과의 3차 상호작용)
- 현실적으로 로지스틱 회귀분석에서 3차 상호작용이 있다 하더라도 그 구체적 내용을 파악하는 것은 쉽지 않은 작업

나무모형의 역사
- 나무모형은 최초에 상호작용을 탐색하는 방법으로 개발 : AID (automatic interaction detection) 라는 방법을 개발한 선퀴스트와 모건 (Sonquist and Morgan, 1964)이 효시
- AID를 개량한 THAID (Morgan and Messenger, 1973) 라는 알고리즘이 개발되었으며, 카스 (Kass, 1980)에 의해서 CHAID (chi-squared automatic interaction detection) 라는 알고리즘이 완성
- 브라이먼, 프리드먼, 올센과 스톤 (Breiman, Friedman, Olshen, and Stone, 1984)은 CART (classification and regression trees) 라는 나무모형 알고리즘을 완성
- 비슷한 시기 저명한 컴퓨터과학자인 퀸란 (Quinlan, 1983)에 의해 C4.5 라는 나무모형이 개발 : CART와 C4.5는 비모수적 방법
- FACT (Loh and Vanichsetakul, 1988)라는 나무모형은 모수적 접근방법을 채택한 최초의 나무모형이지만, 나무모형의 가지치기를 허용하지 않은 단점이 있어서, 후에 퀘스트(Quest)(Loh and Shih, 1997)의 개발이 뒤따름 :
퀘스트 방법은 FACT와는 달리 이진분할 (binary split)을 실시하는 방법이었고, 나무모형의 가지치기를 채택
2001년에는 크루즈(Cruise)(Kim and Loh, 2001)라는 다중 분할 나무모형이 개발(상호작용을 미리 탐색하여 명확화 가능)

장점
① 입력변수의 형태에 관계없이 적용 가능
② 이해 및 해석이 용이
③ 상호작용을 쉽게 포착
④ 결측치의 처리가 용이 - 분할변수에 결측치가 있는 경우에는 서로게이트 (surrogate) 라는 대리변수를 사용하는 처리방법이 있다.
⑤ 나무모형이 구축되고 나면 외부데이터에 대한 분류 및 예측이 쉽고 빠르게 이루어짐

단점
① 나무구조의 단순성과 분리점의 경직성 때문에 분류 성과 및 예측성과가 다른 모형보다 떨어질 수도 있음
- 연속형 변수인 경우 분리점 경계에 있는 값은 잘못 예측될 가능성 커짐
② 나무구조는 불안정적일 수 있음
- 관찰치의 수가 적은 경우에 데이터에 약간의 변화가 가해지면 나무구조는 변형이 될 수 있음 (∵나무모형의 분할방법이 데이터에 크게 의존)

3.2 분류나무모형의 분할방법
CART 방법에서는 순수도를 높게 하는 것과 동등하게 불순도(impurity)를 낮게 하는 방법으로 진행
- 지니지수는 불순도(impurity)를 측정하는 하나의 함수
- CART (Classification And Regression Trees)는 좌우 2개 가지로만 분할하는 이진분할 방법
- CART는 모든 가능한 분할규칙중 분할개선도 (Goodness of split)를 최대화 시키는 분할규칙을 선택
- CART 나무모형에서는 지니지수를 불순도 함수로 사용하고 있지만, 불순도 함수로는 다양한 종류가 존재


불순도 함수의 종류


C4.5 나무모형 : 엔트로피를 불순도 함수로 사용
- 연속형 입력변수의 경우에는 CART와 동일한 방법으로 분할후보점을 탐색하되, 엔트로피 불순도 함수를 사용한다는 점만 차이
- 범주형 입력변수의 경우에는 각 범주가 하나의 가지를 차지하도록 분할
(3개의 범주가 있는 범주형 입력변수라면 해당 노드는 3개의 자식노드로 분할)
- C4.5에서는 불순도의 감소량을 정보이익 (information gain)이라고 칭하며 다음과 같이 정의
- 정보이익은 분할 가지의 수가 많을수록 증가하는 경향이 있음.
- 따라서 범주의 개수가 많은 범주형 입력변수일수록 정보이익이 커지게 되므로, 그 변수가 분할 변수로 선택되게 되는 불합리한 측면
- 이 문제를 극복하기 위해 C4.5에서는 정보이익비율 (gain ratio)을 가지 분할의 기준으로 삼음
정보이익비율 = 정보이익 / 내재정보


CHAID (Chi-squared Automatic Interaction Detection) 방법 :
- 분할표 검정에서 사용되는 카이제곱 검정방법을 사용하여 분할점 혹은 분할집합을 결정하는 방법
- 연속형 입력변수에 대하여는 범주화를 수행하고 CHAID 방법의 분할규칙을 따름
(1) 입력변수의 범주값 중에서 목표변수와의 카이제곱 검정의 결과가 유의하게 다르지 않은 범주들은 서로 통합
(2) 통합된 입력변수의 범주값과 목표변수의 소속집단 정보를 이용하여 분할표를 생성.
분할표에 대한 카이제곱 검정의 결과가 유의하다면 이 변수는 그룹을 나누는데 유의한 변수
(3) 모든 입력변수에 (2)의 과정을 반복하여 가장 유의한 입력변수를 선택.
선택된 변수는 (1)에서 결정된 범주별로 노드가 분리. 경우에 따라서 2개 가지로 분리될 수도 있지만 3개 이상의 가지로 분리될 수도 있음

QUEST 방법
- 분할후보점이 많은 변수를 더 선호하는 CART의 특성(변수선택 편향)을 수정하기 위해 QUEST (Quick Unbiased Efficient Statistical Tree) 방법이 제안
- CART의 편향 현상에 대한 이유가 변수선택과 분할점 선택이 동시에 이루어지기 때문
- 이를 분리하여 먼저 변수를 선택하고, 그리고 선택된 변수에 대해서 분할점을 선택하는 방법입력변수의 범주값 중에서 목표변수와의 카이제곱 검정의 결과가 유의하게 다르지 않은 범주들은 서로 통합
(1) 변수선택 : 일요인 분산분석 (Oneway ANOVA) 카이제곱 검정 이용
(2) 분할점 선택 : 선택된 분할변수에 한하여 CART의 분할점 선택 방법, 2차판별분석 (Quadratic discriminant analysis), 범주형인 경우 Crimcoord 방법과 2차판별분석 방법을 혼용하여 분할점을 선택
(3) 장점 : QUEST 방법은 연산속도가 매우 빠르며, CART의 약점을 보완한 방법으로 예측정확도도 우수한 방법

CRUISE 방법
- CRUISE는 QUEST 방법의 단점인 변수선택 부분을 개선하고, 변수간 상호작용을 좀 더 적극적으로 반영하고자 하는 방법
(1) 변수선택 : 카이제곱 분할표 검정을 사용 (입력변수간 상호작용 존재여부에 대한 통계검정이 포함)
(2) 분할점 선택 : 선택된 분할변수에 한하여 CART의 분할점 선택 방법, 1차판별분석 (Linear discriminant analysis) 방법, 범주형인 경우 Crimcoord 라는 방법과 1차판별분석 방법을 혼용하여 분할점을 선택
(선택된 변수에 대해 1차 판별분석을 수행하기 전에, 박스-콕스 변환 (Box-Cox transformation)을 우선 수행)
(3) 장점 : 결측치를 처리하는 다양한 방법을 제시하며 다중분할 및 선형결합분할도 가능

3.3 분류나무모형의 크기 선택
- 단계마다 분할이 꼭 필요한 것인지 통계적 유의성을 이용하여 평가
- 빠른 시간에 나무모형을 완성할 수 있다는 장점이 있지만, 다음절에 설명하는 가지치기 방법보다는 예측 정확도가 떨어지는 단점

가지치기 방법
- 계속적으로 분할해 나가도록 허용한 뒤 적절하지 않은 마디를 제거하여 적당한 크기의 나무구조를 가지는 나무모형을 최종적인 예측모형으로 선택
- 최대나무(maximal tree) : 분할이 가능할 때까지 계속적으로 분할해 나가다 보면, 결과적으로 구해진 나무구조의 규모가 매우 클 것이다.
- 큰 규모의 나무구조를 만든 후 불필요한 가지를 제거하는 방법 (CART, C4.5, QUEST, CRUISE 방법이 채택)
- CART 나무모형에서는 가지치기를 위해 비용복잡함수 (cost-complexity function)를 사용


3.5 회귀나무모형의 분할방법
CART의 회귀나무는 분할을 위해 사용했던 불순도 함수 대신에 분산 함수를 사용하는 것이 차이점


GUIDE (Generalized Unbiased Interaction Detection and Estimation) 방법
- CART의 변수선택에 대한 편향 현상을 수정하기 위해 개발된 방법
- 가장 발전된 형태의 방법 (2002년)
(1)변수선택 : 먼저 목표변수와 입력변수들을 이용하여 다중선형회귀분석을 수행하고 잔차의 분할표를 구성하여 카이제곱검정을 실시
(2) 분할점 : CART의 분할점 선택 방법, 연속형인 입력변수인 경우 중위수 등
(3) 장점 : GUIDE 방법은 분할변수 선택에 있어서 CART의 약점을 보완한 방법으로, 매우 다양한 회귀나무를 생성할 수 있으며, 예측정확도도 우수한 방법

3.6 나무모형 R 명령어 요약
의사결정나무 생성
rpart(formula, data, weights, subset, na.action = na.rpart, method, parms, control, cost, ...)
- formula : R에서 사용하는 모형 관련 공식. 옵션 data의 data frame에 존재하는 변수이름만 사용가능함
- data : 훈련데이터에 해당하는 data frame 이름
- weights : 훈련데이터의 관측값에 대한 가중치 벡터. 디폴트는 균등가중치
- subset : 조건에 맞는 훈련데이터의 일부분만 사용하고자 할 때. 디폴트는 전체 사용
- method : 나무모형의 종류를 지정함. "anova", "poisson", "class", "exp" 중에서 선택해야 함. “anova” 선택시 회귀나무, “poisson” 선택시 포아송 회귀나무, "class" 선택시 분류나무, "exp" 선택시 생존나무가 생성됨. 디폴트는 “class”
- parms : 분할을 위한 옵션. 회귀나무에는 해당사항 없음. 분류나무에는 사전확률을 주거나, 불순도 함수를 지정할 때 사용. 예를 들어 parms = list(prior = c(0.65,0.35), split = "information")인 경우, 집단1과 집단2의 사전확률은 65:35임. 불순도 함수는 엔트로피 함수 사용을 의미. 디폴트는 집단간 데이터비율 (proportional) 사전확률과 지니지수
- control : rpart.control 과 같은 역할. rpart.control에서 설명
- cost : 오분류 비용을 지정할 때 사용함. 디폴트는 균등비용

분할규칙 설정
rpart.control(minsplit = 20, minbucket = round(minsplit/3), cp = 0.01, maxcompete = 4, maxsurrogate = 5, xval = 10, maxdepth = 30, ...)
- minsplit : 한 노드를 분할하기 위해 필요한 데이터의 개수. 이 값보다 적은 수의 관찰치가 있는 노드는 분할하지 않음. 디폴트는 20개
- minbucket : 최종노드에 포함되어야 하는 최소 데이터의 개수. minsplit이 지정되면, 자동으로 minsplit/3으로 지정됨. minbucket 보다 적은 수의 관찰치가 있는 노드는 존재하지 않게 됨
- cp : 비용복잡함수의 벌점모수. 노드를 분할할 때 분할 전과 비교하여 오분류율이 cp 값 이상으로 향상되지 않으면 더 이상 분할하지 않고 나무구조 생성을 멈춤. 디폴트는 0.01
- maxcompete : CART 분할방법에서 우수했던 분할후보점들을 maxcompete 개수만큼 출력함. 디폴트는 4개
- maxsurrogate : 결과물에 출력할 서로게이트 분할점의 개수 지정. 디폴트는 5개. 서로게이트란 결측치를 처리하기 위한 대체 분할법의 일종임
- xval : 교차타당성의 fold 개수. 디폴트는 10
- maxdepth : 나무구조의 깊이 설정. 뿌리노드는 0. maxdepth=5 이면 나무구조는 뿌리노드로부터 5단계 아래로 내려감. 디폴트는 30

나무구조 순서 출력 : R의 rpart 오브젝트를 대상으로 cp 값에 대한 나무구조 순서를 출력
printcp(x, digits = getOption("digits") - 2)
- x : rpart 오브젝트 이름
- digits : 출력할 숫자의 소수점 이하 자리수

나무모형의 가지치기를 실시
prune(tree, cp, ...)
- tree : rpart 오브젝트 이름
- cp : 가지치기 할 비용복잡함수의 벌점모수값

생성된 나무모형을 나무 그림으로 표현
plot(x, uniform = FALSE, branch = 1, compress = FALSE, nspace, margin = 0, ...)
- x : rpart 오브젝트 이름
- uniform : 부모노드와 자식노드의 간격 크기. 만약 FALSE 이면 분할개선도에 비례하여 간격이 커지거나 작아짐. TRUE이면 균등한 간격을 유지. 디폴트는 FALSE
- branch : 중간노드를 잇는 가지의 형태. 만약 1이면 직교형이고 0이면 v자 형태. 0과 1사이 값이면 직교와 v자의 혼합형. 디폴트는 1
- compress : 출력시 노드의 배치에 관한 사항. 만약 TRUE이면 더 압축된 나무모형 그림을 출력해줌. 디폴트는 FALSE
- nspace : 중간노드와 최종노드 사이의 공간 여백값. 디폴트는 branch의 값과 동일
- margin : 나무 출력시 주변 여백값. 너무 적은 값을 사용하면 분할규칙이 잘리는 경우가 있음. 디폴트는 0

plot에 의해 그려진 나무구조에 텍스트를 삽입
text(x, splits = TRUE, all = FALSE, digits = getOption("digits") - 3, use.n = FALSE, fancy = FALSE, fwidth = 0.8, fheight = 0.8, bg = par("bg"), col, ...)
- x : rpart 오브젝트 이름
- splits : 나무 출력시 분할규칙도 함께 출력하는지 여부. 디폴트는 TRUE.
- all : 최종노드만 분류집단명을 출력할지 여부. TRUE이면 중간노드에도 분류집단을 출력하게 됨. 디폴트는 FALSE
- digits : 분할규칙에 사용할 소수점 이하 자리 수
- use.n : 최종노드에 대한 정보 출력. TRUE 이면 정보를 출력하게 됨. 분류나무이면 각 집단별 관찰치 개수를 출력. 회귀나무이면 최종노드의 관찰치 개수를 출력함. 디폴트는 FALSE
- fancy : TRUE이면 중간노드는 타원으로, 최종노드는 직사각형으로 출력함. 디폴트는 FALSE
- fwidth : fancy 옵션이 TRUE일 때 사용하는 것으로, 타원과 직사각형의 넓이를 조절함. 디폴트는 0.8
- fheight : fancy 옵션이 TRUE일 때 사용하는 것으로, 타원과 직사각형의 높이를 조절함. 디폴트는 0.8
- bg : fancy 옵션이 TRUE일 때 사용하는 것으로, 나무의 배경색상
- col : 나무의 문자 색상

생성된 나무모형 오브젝트에 새로운 데이터 newdata를 적용하여 예측
predict(object, newdata, type = c("vector", "prob", "class", "matrix"), na.action = na.pass, ...)
- object : rpart 오브젝트 이름
- newdata : 예측의 대상인 data frame
- type : 분류나무인 경우 “vector”이면 예측된 집단이 숫자로 출력되고, “prob”이면 집단별 예측 확률이 출력되며. “class”이면 예측된 집단이 factor 형태로 출력되고, “matrix”이면 위의 모든 것이 출력됨. 회귀나무인 경우, “vector” 혹은 “matrix”이면 예측값이 출력되고, 다른 옵션은 회귀나무와 관계없음
- na.action : newdata의 결측치에 대한 처리방법. na.omit은 결측치를 제외하는 방법이고 na.pass는 서로게이트 분할을 이용하는 방법임. 디폴트는 na.pass. 서로게이트란 결측치를 처리하기 위한 대체 분할법의 일종임

요약
+ 나무모형은 흔히 의사결정나무로 불리우며, 분석의 목적과 목표변수의 형태에 따라서 분류나무 혹은 회귀나무로 구분할 수 있다.
+ 나무모형은 데이터를 분할하는 분할규칙과 불필요한 가지를 제거하는 가지치기 (pruning)으로 구성된다.
+ 나무모형의 분할 방법에 따라서 CART, C4.5, CHAID, CRUISE, GUIDE, QUEST 등의 방법들이 사용가능하다.
+ 가지치기는 교차타당성 (cross-validation)방법을 통해 최적크기의 나무모형을 선택하는 기법이다.
+ 나무모형은 분석결과를 이해하기 쉽고 대용량 데이터에 대한 분류 및 예측이 용이하여 많은 분야에서 사용되고 있다. 또한, 입력변수의 형태에 관계없이 적용할 수 있고, 결측치의 처리가 용이하다.
+ 나무모형은 분류 성과 및 예측성과가 다른 모형보다 떨어질 수도 있다. 또한 데이터의 변형에 따라 나무모형이 쉽게 변경될 수 있다.



제4장 앙상블모형

4.1 앙상블 모형이란
앙상블 (ensemble) 모형이란 주어진 데이터를 이용하여 여러 개의 서로 다른 예측모형들을 생성한 후, 이러한 예측모형들의 예측결과들을 종합하여 하나의 최종 예측결과를 도출해 내는 방법
- 앙상블모형은 목표변수의 형태에 따라 분류분석에도 사용가능하고, 회귀분석의 경우에도 사용가능
- 현실적으로, 앙상블모형은 대부분 분류모형에서 사용되고 있는 실정
- 앙상블모형은 훈련데이터에서 B개 (B는 50, 100, 200 등의 값을 사용함)의 서로 다른 분류기의 예측을 종합하는 방법으로 주로 다수결 방법이 사용
- 다수결 방식에는 단순 다수결방식과 가중 다수결 방식
- 대표적 분류앙상블 방법중에 배깅과 랜덤포레스트 방법은 단순 다수결방안을 사용하고, 부스팅 방법은 가중 다수결 방안을 사용

성공요인
- 앙상블 방법이 성공하기 위해서는 앙상블 집합내에 구축되는 분류기(classifier)가 서로 유사하지 않고, 매우 다양
- 앙상블모형에 사용되는 각각의 분류기는 같은 분류모형에 의해서 생성될 필요는 없음
- 만약 나무모형 한 종류의 모형을 이용하여 B개의 분류기를 생성해 낸다면 다음과 같은 방법들을 활용해서 다양성을 확보
(1) 데이터의 다양성 :
- 부트스트랩 방법은 반복이 있는 확률임의추출 방법을 의미하는데, 훈련데이터를 L이라고 한다면 부트스트랩 방법은 L1, L2, …, LB개의 데이터를 생성.
- 부트스트랩 방법은 배깅과 랜덤포레스트 앙상블 방법에서 사용
(2) 나무모형 생성의 다양성
- 나무모형을 적합시킬 때, 분할방법에 변화를 주어 나무모형이 다양해지도록 만드는 방법
- 훈련데이터 은 변동없이 그대로 있을지라도, 나무모형의 분할방법에 임의성을 가미
- 중간마디에서 분할후보점을 선발할 때에 전체 변수가 아닌, 임의의 변수의 부분집합중에서 선발하고, 그중에서 분할개선도를 최대화 시키는 분할점을 탐색
(랜덤포레스트 방법에서 이 방법을 활용)

4.2 앙상블 모형의 종류
배깅(Bagging) 방법 (Breiman, 1996) : 분류 앙상블 방법
- 배깅은 bootstrap aggregating 의 약어로서, 훈련데이터로부터 붓스트랩 데이터를 B번 생성하여 각 붓스트랩 데이터 마다 분류기를 생성한 후 그 예측 결과를 앙상블하는 방법
- B는 앙상블의 크기라고 정의하며, 일반적으로 50을 많이 사용
- 배깅 방법은 불안정한 분류방법의 예측력을 획기적으로 향상시킨다고 알려져 있음
(데이터의 미세한 변동에도 적합된 모형의 결과가 많은 변화가 생기는 분류모형)
- 분류나무 중에서도 가지치기를 사용하지 않은 최대나무를 사용하는 것이 더 예측정확도가 좋다고 알려져 있음
- 가지치기를 사용하지 않은 경우에 더 불안정한 분류방법이 되기 때문


부스팅 방법
- 부스팅 (boosting) 방법은 프로인드와 샤파이어 (Freund and Schapire, 1997)에 의해 개발된 분류앙상블 방법
- 배깅과 마찬가지로 B개의 분류기를 생성하여 종합하는 방법인데, 분류기를 생성하는 방식과 종합하는 방식이 약간 상이
- 부스팅에 사용되는 분류기는 오분류율이 랜덤하게 예측하는 것보다 약간이라도 좋은 예측모형이기만 하면 효과가 있다고 알려져 있음
- 예측력이 약한 분류모형들을 결합하여 강한 예측모형을 만드는 과정
- 부스팅 방법을 실행하는 알고리즘 중에서 가장 많이 사용되는 아다부스트(AdaBoost : adaptive boosting) 방법
- 배깅과 차이점 : 가중치 반영된 분류기 생성 방식
- 부스팅에서는 오분류가 발생한 데이터의 가중치를 높게 설정
- 분류기가 생성될때 가중치가 높은 관찰값에 대한 오분류를 줄이는 방향으로 적합되어 궁극적으로는 오분류율을 줄일 수 있기 때문
(현 분류기의 가중치는 직전 단계의 분류기에 의해 결정)
- 따라서 앙상블이 진행됨에 따라 지속적으로 오분류되는 관찰치는 더 높은 관심을 받게 되는 결과

가중치 조정방식의 아다부스트 (AdaBoost : adaptive boosting)


표본추출에 의한 분류기 생성 방식
- 배깅에서는 균등확률 붓스트랩을 사용했다면, 부스팅에서는 가중확률 붓스트랩을 사용한다는 차이점
- 표본추출 방식의 아다부스트 (AdaBoost : adaptive boosting) 방법


랜덤포레스트 (Random Forest) 방법
- 랜덤포레스트 방법은 배깅과 부스팅보다 더 정확한 예측력을 가지고 있다고 알려져 있음 (오분류율을 감소시킨다)
- 특히 입력변수의 개수가 많을 때에는 그 효과가 극대화
- 랜덤포레스트에서 각 나무모형들을 생성할때는, 랜덤의 속성을 최대화 하기 위해 붓스트랩과 더불어 입력변수들에 대한 무작위 추출을 결합하는 방법을 취함
- 단, 입력변수들의 무작위추출은 나무모형의 각 중간노드를 분할할 때마다 별도로 시행된다는 사실에 주의
(즉, 한 나무모형에서도 입력변수의 무작위 추출은 중간노드마다 일어난다)
- 임의성(Randomness) + 나무모형의 집합 = 예측력 향상


- 알고리즘


- M값을 사전에 결정해야 한다.
- 분류나무모형을 분류기로 사용하기 때문에 분류나무의 크기를 사전에 정해주어야 한다.

4.3 R 실습
bagging 함수 : 훈련데이터를 이용하여 배깅 앙상블을 수행한다. R의 bagging 오브젝트를 생성. rpart 패키지를 필요로 함
bagging(formula, data, mfinal = 100, control,...)
- formula : R에서 사용하는 모형 관련 공식. 옵션 data의 data frame에 존재하는 변수이름만 사용가능함
- data : 훈련데이터에 해당하는 data frame 이름
- mfinal : 배깅앙상블의 분류기 개수. 디폴트는 100개
- control : rpart.control 과 같은 역할. rpart.control에서 설명

predict.bagging(object, newdata, newmfinal=length(object$trees), ...)
- 생성된 배깅 앙상블모형 오브젝트에 새로운 데이터 newdata를 적용하여 예측
- object : 배깅 오브젝트 이름
- newdata : 예측의 대상인 data frame
- newmfinal : 예측에 사용할 배깅 오브젝트내 분류기의 개수. 디폴트는 배깅 오브벡트의 분류기 개수

errorevol(object, newdata)
- R의 배깅 오브젝트를 대상으로 분류기 개수의 증가에 따라 오분류율의 변화를 출력

plot.errorevol(x, y = NULL, ...)
- errorevol 오브젝트의 오분류율을 그림으로 출력
- x : errorevol 오브젝트 이름
- y : 비교를 위한 또 다른 errorevol 오브젝트 이름. 드폴트는 없음

boosting 함수
boosting(formula, data, boos = TRUE, mfinal = 100, coeflearn = 'Breiman', control,...)
- 훈련데이터를 이용하여 부스팅 앙상블을 수행한다. R의 boosting 오브젝트를 생성. rpart 패키지를 필요로 함
- boos : 부스팅의 방식 선택. TRUE이면 표본추출에 의한 분류기 생성 방식을 사용, FALSE이면 가중치 반영된 분류기 생성 방식을 사용. 디폴트는 TRUE
- mfinal : 부스팅 앙상블의 분류기 개수. 디폴트는 100개

predict.boosting(object, newdata, newmfinal=length(object$trees), ...)
- 생성된 부스팅 앙상블모형 오브젝트에 새로운 데이터 newdata를 적용하여 예측
- newmfinal : 예측에 사용할 부스팅 오브젝트내 분류기의 개수.
디폴트는 부스팅 오브벡트의 분류기 개수

요약
+ 앙상블 (ensemble) 모형은 주어진 데이터를 이용하여 여러 개의 서로 다른 예측모형들을 생성한 후, 이러한 예측모형들의 예측결과들을 종합하여 하나의 최종 예측결과를 도출해 내는 방법이다.
+ 앙상블모형은 목표변수의 형태에 따라 분류분석과 회귀분석에 모두 사용할 수 있다. 분류분석의 경우 분류나무를, 회귀분석의 경우 회귀나무를 사용하는 것이 일반적이다.
+ 앙상블모형에는 분류기를 생성하는 방법에 따라 배깅, 부스팅, 랜덤포레스트 등의 방법들이 사용 가능하다.
+ 배깅 방법은 붓스트랩을 이용하여 분류기를 다양하게 생성하고, 그 결과를 단순 투표방식으로 도출한다.
+ 부스팅 방법은 각 관찰치별 가중치에 변화를 줌으로써 분류기를 다양하게 생성하고, 그 결과를 가중 투표방식으로 도출한다.
+ 랜덤포레스트 방법은 붓스트랩과 나무모형의 생성과정에 변화를 줌으로써 분류기를 다양하게 생성하고, 그 결과를 단순 투표방식으로 도출한다.
+ 앙상블모형은 분류 성과 및 예측성과가 매우 우수한 방법이다.



제5장 신경망모형

5.1 신경망 모형이란?
신경망모형은 데이터마이닝의 분류 및 예측분야에서 주로 활용되는 계량적 학습방법
- 인간이 뇌를 통해 문제를 처리하는 방법과 유사
- 뇌의 기본 구조 조직인 뉴런(neuron)과 뉴런이 연결되어 일을 처리하게 되는데, 이와 유사하게 수학적 모형으로서의 뉴런이 서로 연결되어 네트워크를 형성하도록 구성된 것
- 신경망은 각 독립적인 과업을 수행하는 뉴런이 연결되어 있고 정보가 많은 연결망을 통해 분산되어 있으므로 일부 뉴런의 문제가 발행하여도 신경망 전체에 큰 영향을 주게 될 가능성이 낮다는 특징
- 뛰어난 병렬성(parallelism)과 결함 허용(fault tolerance) 능력


신경망 : 인간의 두뇌는 약 (1천억) 개의 뉴런(neuron)이라고 불리는 신경세포로 이루어져 있음
- 수상돌기(dendrite)는 수많은 가지로 이루어져 있으며 신경세포가 신호를 받아들이는 부분
- 축색 또는 축삭(axon)은 세포체(cell body)로부터 길게 뻗어나가 있는 가지와 같은 모습이며 수상돌기와 세포체를 통해 전달된 정보를 다른 신경세포나 세포에 전달하는 부분
- 신경세포들 사이의 신호전달을 위해 맞닿아 있는 부위를 시냅스(synapse, 연접(連接))라고 하며 한 신경세포가 만들어내는 시냅스는 약 1,000여개 이상으로 알려져 있음

시냅스에서는 각 수상돌기의 정보를 그대로 통합하는 것이 아니라 종류에 따라 그 가중치를 달리하여 합해서 전달
- 종합된 정보의 값이 일정 수준보다 작으면 다른 축색으로 전달되지 않으나 그보다 크면 다음 단계로 전달


인간의 신경전달체계는 크게 세 단계로 구성
(1) 두뇌(신경망)에 이르기 전까지의 단계가 수용체에서의 정보변환 단계
- 외부의 자극(아날로그 정보)이 있을 때, 수용체(receptor)에서 이 자극을 전기적 신호(디지털 정보)로 변환하여 두뇌로 전달하게 되는 과정
(2) ‘두뇌(신경망)’이라고 표시된 것이 뉴런들의 복잡하고 유기적인 결합체
(3) 효용체(effector)에서의 신호 전달 단계는 두뇌에서 결정한 전기적 신호를 다시 아날로그 신호로 바꾸는 과정

5.2 신경망의 등장배경
신경망은 정보처리 이론이 가지고 있던 한계를 극복하고자 하는 노력에서 비롯
- 정보처리 이론은 인간의 지능을 구성하는 중요한 요소인 상식의 추론과 패턴인식 기능을 설명하는데 한계
- 정보처리 이론은 인간이 정보를 기호에 의해 처리하는 것으로 전제하고 있지만, 인간은 기호처리 이외에 다른 형태로도 정보를 처리하고 있기 때문
- 신경망에서는 병렬처리 방식을 기본으로 하고 있으며 불완전한 자료를 가지고도 상황에 따라 최적의 의사결정을 하게 됨

참조) 정보처리이론
- 컴퓨터의 하드웨어, 소프트웨어의 용어를 사용해서 인간의 인지과정과 컴퓨터의 정보처리 과정을 비교하고 있으며, 뇌와 신경계를 하드웨어로, 문제해결을 위한 계획이나 책략 등을 소프트웨어로 볼 수 있다
1. 부호화(encoding) : 정보를 나중에 필요할 때에 잘 기억해낼 수 있는 형태로 기록하는 과정
2. 저장(storage) : 정보를 기억 속에 쌓아두는 과정
- 감각기억 : 우리가 보고, 듣고, 냄새맡고, 맛보고, 만지는 것 등의 감각을 통해 들어오는 모든 것을 기억하는 것
- 단기기억 : 정보를 조직하는 일시적 단계로서 이때의 정보가 반드시 뇌의 저장영역에 전달되는 것은 아님
- 장기기억 : 정보를 저장하는 큰 용량을 가짐, 오랜 시간 동안 정보를 보유할 수 있음
3. 인출(retrieval) : 저장된 정보를 필요한 때에 꺼내는 과정
기억의 발달 :
기억용량의 증가 : 정보를 저장할 수 있는 공간이 증가한다는 것
기억전략의 발달 : 기억전략은 정보를 장기기억 속에 저장하고 그 정보가 필요할 때 인출이 용이하도록 해주는 의도적인 활동, 아동기가 되면 크게 발달
상위기억의 발달 : 상위기억은 기억과 기억과정에 대한 지식을 말함
지식기반의 확대

발전과정 : 신경망에 대한 연구는 1940년대부터 이루어져 최근 급속도로 발전


5.3 신경망의 구성요소
신경망은 크게 입력층과 출력층으로만 구성된 단층신경망(single-layer perceptron, SLP),
입력층, 은닉층, 출력층으로 구성된 다층신경망(multi-layer perceptron, MLP)으로 나눌 수 있음
- 입력층(input layer)은 각 입력변수에 대응되는 노드로 구성
- 은닉층(hidden layer)은 입력층으로부터 전달되는 변수값들의 선형결합을 비선형함수로 처리,
출력층 또는 다른 은닉층에 전달하는 기능을 수행하고 상황에 따라 최적의 의사결정을 하게 됨
- 출력층(output layer)은 목표변수에 대응되는 노드로서 우리가 예측 또는 분류하고자 하는 결과

단층신경망


활성함수의 종류
- 활성함수(또는 전이함수(transfer function))는 일반적으로 시그모이드(sigmoid)함수가 많이 사용됨
- 시그모이드 함수 : S자 형태의 비선형함수로서 출력값은 0과 1 사이 값을 지니게 되는 미분 가능한 함수이기 때문에
역전파 학습 알고리즘의 특성에 잘 맞으며 복잡한 유형의 의사결정 문제에도 효과적으로 적용.
큰 입력값에 대해서도 출력값이 급격히 변화하지 않으며 작은 입력값도 놓치지 않는다는 장점



다층신경망


5.4 신경망모형을 구축하는 과정
- 입력변수 또는 노드의 개수, 은닉층의 수와 노드의 개수, 활성함수의 종류 등을 결정하는 단계
- 가중치를 추정하는 단계로 구분
- 신경망 학습(learning) 또는 훈련(training)으로 통계학의 관점에서 보면 모수추정(parameter estimation)
※ 신경망의 학습은 지도학습과 자율학습 두 가지 경우 모두에 해당

신경망의 학습과정
1. 연결강도에 대한 초기값을 설정 → 출력정보를 계산
2. 학습을 통해 구한 출력값의 추정치와 학습자료에서 기준이 되는 출력값과 비교
3. 이 과정을 출력값과 학습값의 차이가 일정수준이 될 때까지 반복

신경망의 목적함수
- 연결강도인 가중치를 적절히 추정하기 위해서는 목적함수(objective function)을 적절하게 정의해야 함
- 일반적으로 많이 쓰이는 목적함수로는 선형모형에서 사용되는 오차제곱합

- 분류 문제에 관해서는 통상 로그우도함수(log likelihood function)을 사용


역전파 알고리즘(Back propagation)
- 신경망의 목적함수는 연결강도에 대하여 비선형 함수이기 때문에 이를 최적화하는 가중치를 찾는다는 것은 어려움
→ 수치해석 방법을 이용하여 가중치를 산출


홉필드(Hopfield)가 제안한 역전파(back propagation)알고리즘
1. 첫 단계에서 초기 가중치와 목표함수를 최적화하는 기준을 정하고 초기 가중치를 바탕으로 예측치를 계산한다.
2. 두 번째 단계에서는 실제 출력값과 예측치 사이의 오차를 계산한다.
3. 마지막단계에서는 두 번째 단계에서 구한 오차를 은닉층과 입력층으로 역전파시켜서 가중치(연결강도)를 새로 조절한다.
위의 3단계를 반복 적용하여 가중치 값이 거의 변하지 않거나 일정해지면 반복을 멈추고 그 값으로 가중치의 값을 정한다.

초기 가중치 및 학습률 결정
- 가중치의 초기값을 정하는 방법으로는 각 모수에 난수를 이용하여 임의로 값을 지정하고 목적함수 관점에서 성능이 가장 좋은 초기값을 선택
(일정영역의 균일분포(Uniform Distribution)로부터 산출된 난수를 이용)
- 역전파 알고리즘 3단계에서 연결가중치의 조절 정도를 학습률(Learning Rate)이라고 한다. 학습률이 높으면 가중치 값이 빠르게 변화

학습률이 α이라고 하고 추정할 가중치의 개수가 N일 경우 학습패턴의 p 는, p = N / (1- α)
- 처음에는 크게, 그리고 반복수가 증가 하면서 점점 작아지도록 설정

신경망모형의 작성 6단계 : Berry and Linoff(1997)의 신경망모형의 작성 6단계
1) 입력 및 출력변수의 식별
- 범주형 입력변수의 경우에는 모든 범주에서 일정 빈도 이상의 값을 가져야 함
- 연속형 입력변수인 경우 입력값들의 범위가 변수 간에 많은 차이가 없어야 함
- 연속형 자료일 경우 일반적으로 변수의 표준화 과정을 거침
(최대값은 예상보다 조금 크게, 최소값은 예상보다 조금 작게 설정)


2) 입력, 출력변수값을 적절한 범위의 값으로 변환
- 필요할 경우 연속형 변수를 범주형자료로 전환
- 순서가 있는 자료의 경우에는 연속형 자료처럼 표준화하여 0과 1사이의 값으로 표현
- 순서가 의미 없는 성별과 같은 범주형 자료의 경우 범주별로 다른 입력변수로 지정
- 범주형 자료의 경우에는 모든 범주에 일정 빈도이상의 값을 가지도록 해야 하기 때문에, 지나치게 많은 범주로 나누지 말고 범주가 지나치게 많은 경우 범주를 적절하게 병합하여 사용

3) 신경망의 구조를 설정
- 입력정보와 출력정보가 정해져 있는 상태에서 은닉층의 마디수, 합성함수, 활성함수 등을 변화시키면서 모형을 탐색
- 통상 신경망이 범용근사자(universal approximator)로서 역할을 하기 위해서는 은닉층을 1개 정도만 설정하나 1개의 은닉층의 마디수가 지나치게 많아지면 은닉층의 수를 2개로 하여 신경망을 작성
- 은닉 마디의 수를 보다 객관적으로 정하려면 마디 수를 정하는 과정에서 특정한 모형선택기준을 이용


은닉층의 마디수를 정하는 방법
1) 은닉마디 수를 여러가지로 변화시켜서 최적모형을 선택하는 방법(Trial and Error)
2) 단순한 신경망모형에서 복잡한 모형으로 신경망모형을 키워가면서 은닉층의 마디의 수를 결정하는 방법 (Constructive Algorithm)
3) 복잡한 신경망모형에서 단순한 신경망모형으로 축소시키면서 모형을 선택하는 방법 (Pruning)
(통상 은닉층의 마디 수는 입력층의 마디의 수의 두 배를 넘지 않도록 권고)

4) 자료를 이용하여 신경망 학습
- 역전파 알고리즘 : 비선형적인 추정방법과 반복적인 추정방법을 통해 가중치를 추정
- 일반적으로 n개 노드의 입력변수와 h개 노드의 은닉층, 1개 노드의 출력층이 있을 경우 상수항을 포함하여 (n+1)xh+h+1개의 가중치가 필요
- 신경망이 과적합되는 것은 은닉층의 수 및 은닉마디가 지나치게 클 경우 발생
→ 기존 자료는 매우 잘 적합하지만, 새로운 자료에 대해서는 예측력이 저하됨

5) 학습에 이용된 자료가 아닌 실제 자료에 대하여 4)에서 작성된 모형이 적절한 지 검정하여 신경망모형을 완성

6) 5)에서 작성된 모형을 이용하여 새로운 현상을 예측 또는 분류

민감도 분석
- 신경망은 분류 및 예측에 좋은 결과를 제공하지 못하지만 입력정보와 출력정보간의 관계가 불명확한 블랙박스
- 신경망의 불투명성을 완화하기 위해 민감도 분석(Sensitivity Analysis)이 필요하다.
- 민감도 분석이란 입력변수들의 상대적인 중요도를 간접적으로 파악하는 과정
- 입력변수 각각의 평균을 찾고 입력변수들의 평균값에서의 목표변수값을 구한뒤 마지막으로 각 입력변수값이 변할 때 마다 출력변수의 변화를 측정
→ 입력변수의 상대적인 중요도 측정이 가능

신경망의 장점
- 예외적인 경우도 있으나 대체로 의사결정나무나 회귀분석보다 분류 및 예측력 측면에서 우수
- 입력변수들과 출력변수들 간의 관계가 복잡한 비선형 형태일 때 더 유용
- 견고성에 의해 자료의 잡음에 크게 영향을 받지 않으며 계량적인 변수뿐만 아니라 정성적인 변수도 한꺼번에 효과적으로 신속하게 처리할 수 있음
- 기존의 통계적 방법과는 달리 여러 가지 통계적 가정을 필요로 하지 않기 때문에 자료를 마음대로 활용할 수 있음

신경망의 단점
- 학습은 했지만 그 과정이 투명하지 않고 복잡하다는 것
- 신경망이 분류의 문제에 관해 출력값을 산출했다하더라도 왜 그렇게 분류 하였는지를 설명하지 못한다는 것
- 실무적인 측면에 있어서 신경망 가중치 설정 등에는 전문성이 필요하므로 비전문가가 쉽게 이용하기 어렵다는 점도 제약으로 작용
- 신경망은 잘못된 입력정보에 둔감하기 때문에 입력정보의 오류가 오랜 기간이 지난 후에야 출력결과로 나타난다는 점

딥러닝
- 딥러닝은 기계학습 기법 중 하나로 신경망모형으로부터 비롯
- 신경망모형의 학습 과정의 개념과 동일하다고 할 수 있으며 은닉층이 많이 쌓여가면서 복잡하고 깊은 구조로 발전
- 딥러닝의 출현은 SNS 관계망이나 인터넷 등을 통해 생성되는 빅데이터와 클라우드 컴퓨팅 환경 등의 하드웨어 발전에 기반
- 더불어 이러한 방대한 데이터에 필요한 연산량을 CPU가 아닌 좀 더 저렴한 GPU 병렬 프로그래밍으로 해결할 수 있는 방법이 개발되어 가격적인 제약도 줄어들면서 급격한 성능의 향상을 이룩

R 실습
- install.package(“neuralnet”)

neuralnet 함수 : 은닉층이 hidden에 지정된 신경망모형을 작성
neuralnet(formula, data, hidden=c(a,b), linear.output=T, stepmax = 1e+05, rep = 1, startweights = NULL, act.fct = "logistic", linear.output = TRUE, constant.weights = NULL)
- formula(또는 x, y) : 입력변수(x)와 목표변수(y)를 지정.
- ‘목표변수 ∼ 입력변수1 + 입력변수2 + ... +입력변수p’ 형태로 지정
- data : formula에서 이용되는 데이터프레임을 지정
- hidden : 은닉층의 수를 정한다. 벡터로 지정하면 복수의 은닉층을 지정할 수 있음.
hidden=c(a,b)로 지정할 경우 첫 번째 은닉층의 노드는 a개, 두 번째 은닉층의 노드는 b개가 됨
- stepmax : 신경망 학습을 위한 step의 최대값을 지정
- rep : 학습과정의 반복수를 지정
- startweights : 가중치의 초기값을 지정함. 지정하지 않으면 임의적으로 지정됨.
따라서 이 옵션을 지정하지 않았을 경우 신경망을 추정할 때마다 결과가 다르게 나타남
- act.fct : 활성함수의 형태를 지정한다. 기본은 로지스틱 함수.
- linear.output : 위와 같은 기본 활성함수 형태가 출력층에 적용되지 않을 경우에는 TRUE(회귀), 그렇지 않으면 FALSE(분류)를 지정. 기본값은 TRUE
- constant.weights : 학습과정에서 제외되어 상수로 간주되는 가중치의 벡터값을 지정

plot 함수 : 작성된 신경망모형의 구조 및 가중치를 그림으로 출력
plot(y.nn)
- y.nn : 신경망모형으로 적합한 결과 오브젝트

summary 함수 : 작성된 신경망모형의 오브젝트의 구조를 정리
summary(y.nn)

print 함수 : 신경망모형 계산 과정을 출력
print(y.nn)

compute 함수 : 작성된 신경망모형을 이용하여 새로운 예에 적용하여 결과를 도출
compute(y.nn, x, rep = 1)
- x : 새롭게 예측에 적용할 자료 또는 행렬

1. 코사인 함수의 추정
> install.packages("neuralnet")
> library(neuralnet)

> set.seed(130)
> ind1 = 1:100
> ind2 = ind1/100
> cos2 = cos(ind2*4*pi)
> cdat = data.frame(cbind(ind2, cos2))
> cos2.nn = neuralnet(cos2~ind2, data=cdat, hidden=5, linear.output = T)
> plot(cos2.nn)
> cos.pred = compute(cos2.nn, ind2)
> plot(ind1, cos.pred$net.result)
> lines(cos2)


요약
+ 신경망은 인간의 두뇌로 학습하는 과정을 모방해서 설정된 계량적인 학습방법이다.
+ 신경망은 입력층, 은닉층, 출력층으로 구성되어 있다.
+ 신경망의 구조가 결정되어 있다면 마디 간 연결강도를 추정해야 하는데 대표적인 방법으로는 역전파 알고리즘이 있다.
+ 신경망모형은 입력 및 출력변수의 식별, 변환, 신경망의 구조 설정, 학습, 검정과정을 통해 작성되며 예측 또는 분류에 이용된다.
+ 신경망에서 입력변수들의 상대적인 중요도는 민감도 분석으로 파악할 수 있다.
+ 신경망은 여러 문제를 범용적으로 해결할 수 있지만 과정이 복잡하고 해석하기 어렵다.



제6장 모형비교평가

6.1 평가 모형
- 목표변수가 존재할 때 다양한 방법으로 모형을 구축하는 경우, 예측 값이 실제 값과 동일 또는 유사하다면 예측이 잘되었다고 평가
- 데이터마다 예측력을 평가하여 최적의 모형을 선택

연속형 목표 변수
- 목표변수가 연속형일 때 선형회귀모형, 회귀나무모형, 또는 신경망모형을 구축하여 각 객체의 목표변수의 예측 값 산출
- 선형회귀모형, 회귀나무모형, 신경망모형, 그리고 랜덤포레스트에 의해 생성된 모형을 비교 평가

이항형 목표 변수
- 목표변수가 이항형일 때 로지스틱회귀모형, 분류나무모형, 신경망모형, 앙상블 (배깅, 부스팅, 랜덤포레스트) 등을 사용해서 각 범주를 취할 확률을 계산

6.2 평가 측도
모형 선택시 예측력(prediction power), 해석력(interpretability), 효율성(efficiency), 안정성(stability) 등 다양한 측면을 고려
- 데이터마이닝의 주목적이 예측이기 때문에 예측력이 가장 중요한 측도
- 응용분야에 따라 어떤 요소가 중요한지 고려하여 종합적으로 모형을 평가하여 선택하여야 함

연속형 목표 변수
- 목표변수가 연속형인 경우에 모형의 예측력 측도로서 PMSE(prediction mean squared error)를 주로 사용
- 관측값과 예측값 사이에 차이가 적을수록 예측을잘한 것이므로 PMSE가 작을수록 그 모형의 예측력은 높다고 할 수 있음
- 관측값과 예측값을 가로 및 세로축으로 놓고 그린 산점도(scatter plot)가 45도 대각선을 중심으로 모여 있으면 예측력이 좋다고 할 수 있음


이항형 목표변수
- 실제 범주와 예측 범주를 분류표로 만든 정오분류표를 통해 예측력을 평가
- 예측력의 측도로 민감도(sensitivity)와 특이도(specificity)를 계산

- 민감도와 특이도는 임계치에 따라 달라지고, 임계치는 상황에 따라 다르게 결정
- 여러 가능한 임계치에 대해 (1-특이도)를 가로축에, 민감도를 세로축에 놓고 그린 그래프를 ROC(receiver operating characteristic) 곡선
- 민감도와 특이도가 모두 높을수록 예측력이 좋다고 할 수 있기 때문에 ROC 곡선이 좌상단에 가까울수록 ROC 곡선 아래 면적(AUC; area under the ROC curve)이 커지고, AUC가 클수록 예측력이좋다고 평가


6.3 데이터 분할에 의한 타당도 평가
- 수집한 데이터를 이용하여 어떤 모형을 구축하게 되고 이를 비교 평가하여 최종 모형을 선택
- 이미 모형을 구축하기 위해 사용한 데이터를 재사용하여 모형을 평가하게 되면 과대평가하게 되어 결국에는 예측 오차(prediction error)가 더 커지게 될 수 있음
- 이를 방지하기 위해 데이터를 분할하여 모형 구축 및 평가의 역할을 분담하게 하는 기술을 종종 사용

훈련데이터와 검증데이터
- 데이터를 분할하여 모형 구축을 위한 훈련데이터(training data)와 모형 평가를 위한 검증데이터(test data)로 임의로 나누어 사용
- 모형이 커지거나 복잡해진다고 해서 검증데이터를 사용한 예측오차(prediction error)가 작아지지는 않기 때문에 적절한 크기의 모형이 가장 좋은 예측력을 가지게 되며 이를 선택

교차 타당도
- 훈련데이터와 검증데이터로 분할하여 모형을 구축하고 평가하는 방법은 손쉽고 계산이 간단
- 우연히 특정 모형에 유리하게 분할될 가능성이 존재하므로 여러 부분으로 분할하여 반복 검증하는 방법을 사용(교차타당도(cross validation)평가)
- 데이터를 V개의 부분집합으로 분할하여 첫 번째 부분집합을 검증용으로 남겨두고 나머지 (V-1)개의 부분집합 데이터로 모형을 구축하고 남겨둔 데이터를 이용하여 오차를 계산
- 두 번째 부분집합을 남겨두고 나머지 부분집합으로 모형 구축, 남겨둔 부분집합으로 오차 계산
- 마지막 부분집합을 검증용으로 사용하여 오차를 계산할 때까지 반복
- 이렇게 계산한 오차를 종합하여 모형을 평가

R 실습
ROCR의 예측 함수 : 함수 prediction은 패키지 ROCR에서 제공하는 함수로서 예측값을 계산할 때 사용
prediction(predictions, labels)
- predictions: 예측 값을 담고 있는 벡터, 행렬, 또는 데이터 프레임
- labels: 실제 분류 수준 값(true class labels)을 담고 있는 벡터, 행렬, 또는 데이터 프레임을 입력

ROCR의 예측 측도 함수 : 함수 performance은 패키지 ROCR에서 제공하는 함수로서 예측력을 계산할 때 사용
performance(prediction.obj, measure)
- prediction.obj: prediction에서 발생하는 object를 입력
- measure: 모형평가에 사용할 측도를 지정. “tpr”는 true positive rate의 약자로 민감도, “fpr”는 false positive rate의 약자로 1-특이도를 계산. 추가로, “acc”와 “err”를 사용하여 예측정확도와 오분류율을 계산


요약
+ 무수히 많은 모형을 생성할 수 있기 때문에 모형 평가 또한 중요하고 평가 요소로서 예측력, 해석력, 효율성, 안정성 등을 고려해야한다. 그 중에 가장 주요한 예측력을 기준으로 어떻게 모형 비교 평가하는지 설명한다.
+ 목표변수가 연속형일 때에 선형회귀모형, 회귀나무모형, 신경망모형, 랜덤포레스트 등으로 예측할 수 있고, 이들을 예측평균제곱오차로 비교 평가할 수 있다. 또한, 실제값과 예측값의 산점도는 시각적으로 차이를 확인할 수 있다.
+ 목표변수가 이항형일 때에 로지스틱 회귀모형, 분류나무모형 신경망모형, 배깅, 부스팅, 랜덤포레스트 등으로 예측할 수 있고, 이들을 민감도, 특이도, 오분류율, 그리고 ROC와 AUC로 비교 평가할 수 있다.
+ 데이터를 훈련용과 검증용으로 나누어 훈련용으로 모형을 적합하고 검증용으로 평가하여 객관적으로 모형을 비교할 수 있다.



제7장 군집분석

7.1 군집분석이란
- 군집분석(cluster analysis)이란 관측값 또는 개체를 의미 있는 몇 개의 부분집단으로 나누는 과정을 의미
- 군집분석은 자료의 사전정보 없이 자료를 파악하는 방법으로, 분석자의 주관에 결과가 달라질 수 있음
- 군집분석은대표적인 자율학습 방법으로 특성이 유사한 개별 개체들끼리 스스로 묶이도록 군집을 형성하게 되며, 이렇게 형성된 군집의 특징을 사후적으로 분석
- 군집이란 군집분석(cluster analysis) 과정에서 나뉜 부분집단
- 각 대상의 유사성을 측정하여 유사성이 높은 대상 집단을 분류하고, 군집에 속한 개체들의 유사성과 서로 다른 군집에 속한 객체들 간의 상이성을 규명
- 유용한 군집이란 같은 집단 내의 관측값들은 서로 유사하고 다른 군집에 속한 관측값들 간에는 유사성이 적은 것을 의미

7.2 비유사성 측도
- 행렬 X의 행은 개체, 열은 변수를 의미. xij는 i번째 개체에서 j번째 연속형 변수의 관측치를 나타냄
- 두 개체가 연속형 변수로 표현될 수 있다면 이들의 비유사성(dissimilarity)은 개체 간 거리로 간주할 수 있음
- 마할라노비스 거리는 두 지점의 단순한 거리뿐만이 아니라, 변수의 특성을 나타내는 분산과 공분산이 함께 고려되며
- 코사인 거리는 다차원의 양수 공간에서의 거리 측정에 많이 사용됨



7.3 계층적 군집분석
- 계층적 군집분석에는 가까운 관측 값들 끼리 묶는 응집분석(agglomerative analysis)과 먼 관측 값들을 나누어가는 분할분석(divisive analysis)이 있음
- 계층적 군집화는 비계층적 군집화에 비하여 군집의 수에 대한 사전 지식이 필요하지 않다는 장점
- 한 계층에서 어떤 군집에 할당되면 그 계층 아래에서는 다른 위 계층에서 나뉜 다른 군집으로 할당될 수 없다는 특징이 있음

응집분석
- 자료에서 i번째 개체와 k번째 개체의 거리를 d(i, k)라 하고, 군집 P와 군집 Q의 거리를 d(P, Q)라 할 때 개체 간의 거리 d(i, k)는 앞서 살펴 본 여러 가지 방법 중 하나를 선택

응집분석의 알고리즘
① 각 개체를 하나의 군집으로 하여 전체 n개의 군집을 형성
② 각 군집 간의 거리를 기준으로 가장 가까운 두 개의 군집을 병합하여 n-1개의 군집을 형성
③ n-1개의 군집 중 가장 가까운 두 군집을 병합하여 군집을 n-2개로 축소
④ 군집의 수를 줄여나가며 전체가 하나의 군집을 이룰 때까지 이 과정을 반복

두 군집 간의 거리 d(P, Q)를 계산하는 방법에 따라 응집분석의 형태가 달라진다.

➀ 단일연결법(Single Linkage Method)
- 단일연결법은 최단연결법이라고도 하며 두 군집 P와 Q간의 거리는 P에 속한 개체와 Q에 속한 개체 하나씩을 뽑았을 때 나타날 수 있는 거리의 최솟값으로 측정

➁ 완전 연결법(Complete Linkage Method) - 완전연결법은 최장 연결법이라고도 하며 두 군집 P와 Q간의 거리는 P에 속한 개체와 Q에 속한 개체 하나를 뽑았을 때 나타날 수 있는 거리의 최대값으로 정의
- 완전연결법은 단일연결법에 비해 이상치나 잡음의 존재에 영향을 덜 받는다고 알려져 있고 전형적으로 관측값이 서로 매우 유사하여 밀집되어 있는 군집을 구별하는데 이용

➂ 평균연결법(Average Linkage Method)
- 평균연결법에서는 두 군집 P와Q간의 거리가 P에 속한 개체와 Q에 속한 개체 간의 모든 거리의 평균

➃ 중심연결법(Centroid Linkage Method)
- 중심연결법에서는 두 군집 P와Q간의 거리가 P에 속한 개체와 Q에 속한 개체 의 중심점 간의 거리

분할분석(Divisive Analysis)
- 개체의 수가 많을 경우 계산시간이 오래 걸린다는 응집분석의 단점을 보완하기 위하여 Macnaughton-smith(1964)가 분할분석을 제안
- 대표적인 분할분석으로는 다음에 요약된 Kaufman과 Rousseeuw(1990)의 DIANA(Divisive Analysis)알고리즘을 꼽을 수 있음
- 알고리즘
➀ 군집 Q에 속한 각 개체에서 다른 개체까지의 평균거리를 계산하여 평균 거리가 가장 긴 개체를 선택.
이 개체를 군집에서 제거하여 군집 A(new)를 만들고 제거된 개체를 갖는 군집B(new)라 정의
➁ 군집 A(new)와 B(new)를 군집 A(old)와 B(old)로 정함
③ 군집 A(old)에서 다른 개체와의 평균거리가 가장 긴 개체를 찾아 이 개체를 i라 정의
④ ③에서 찾은 개체 i와 군집 B(old)에 속한 개체들 간에 평균거리를 계산
⑤ 개체 i와 군집 A(old)에서, 다른 개체의 평균거리에서 개체 i와 군집 B(old)의 개체의 평균거리를 뺀 값이 0보다 크면 개체 A(old)에서 i를 제거한 군집 A(new)를 생성.
그리고 B(old)에서 i를 추가한 군집 B(new)를 생성. 이후 ➁-④번 과정을 계속 반복.
※ 만약 거리의 차가 0 이하면 군집형성을 중지하고 A(old)와 B(old)를 최종 군집으로 선택.

7.4 비계층적 군집분석
- 계층적 군집분석은 관찰치의 수가 적은 경우에 적당하지만 대용량의 데이터를 가지고 군집분석을 실시할 때에는 비계층적 군집분석 방법인 K-평균 군집분석을 사용
- K-평균 군집분석은 매퀸(1967)이 제안한 것으로 계층적 군집분석과 달리 군집수를 미리 정하고 분석을 실행
➀ 군집의 수 K를 설정
➁ 임의의 K개 관찰치를 K개 각 군집에 임의로 지정. 이를 K개 각 군집의 중심으로 이용
③ 모든 관찰치를 군집중심으로 부터 유클리디안 거리가 최소인 군집에 귀속
④ 각 군집에 속한 관찰치들을 이용하여 군집중심을 새로 계산
⑤ 변화(군집간 관찰치이동)가 없을 때까지 단계3 과 단계4 를 반복

K-평균 군집분석 군집의 수 결정과 초기값 설정이 중요
- 군집의 수를 결정하기 위해서는 각 군집 수와 산출된 평균 거리를 이용할 수 있음
- 초기값 설정을 위한 방법은
1) 다양한 초기값을 가지고 주어진 군집 수 에 대하여 K-평균 군집화를 수행하고 최종 군집에서 중심점까지의 평균거리를 구하여 이들 중 가장 작은 평균거리를 갖는 초기값에 대한 군집을 선택하거나
2) 계층적 군집화를 시행하고 계층적 군집화로부터 군집의 수와 형성된 군집으로부터 중심점을 구한 후, 이 결과를 가지고 K-평균 군집화를 수행, 또는
3) 주성분을 이용

7. 5 군집분석의 특징
- 군집분석은 자료 사이의 거리를 이용하여 수행되기 때문에 자료의 단위가 결과에 큰 영향을 미치므로 자료를 표준화하는 경우가 있음
- 각 변수의 중요도가 다를 경우 가중치를 이용하여 각 변수의 중요도를 조절.
가중치는 대부분의 경우 단위변환(표준화)를 수행한 후 부여

- 장점은 군집분석이 탐색적인 기법으로 주어진 자료에 대한 사전정보 없이 의미 있는 자료구조를 찾아낼 수 있다는 것이고 다양한 형태의 데이터에 적용가능하며 분석방법의 적용이 쉽다는 점
- 단점은 복잡한 자료에 대해서는 유의미한 군집을 찾기가 힘들다는 것인데, 군집이 이상치에 영향을 받기 때문.
- 변수의 개수가 많은 경우에도 좋은 군집을 찾기 힘든 경우가 많으며 가중치와 거리 정의가 어렵고 초기 군집수 k의 결정이 어려우면 결과의 해석이 어렵다는 단점도 존재

7.6 R 실습
dist 함수 : 행 사이의 거리를 계산한다. 통상 dist는 hclust 등 다른 명령문에 이용되므로 결과는 행렬이 아니라 비유사성 행렬에서 대각선 윗부분이 행별로 저장. 따라서 n×p 행렬에 대하여 n(n-1)/2개의 원소를 갖는 벡터가 생성
dist(x, method =“euclidean”)
- x : 행 사이의 거리를 계산하는 행렬
- method : 거리 계산방법 옵션이다.“ euclidean”은 유클리디안 거리를 이용하여 거리를 계산하고 “manhattan”은 맨해튼 거리를 이용하여 거리를 계산. 기본값은 euclidean

hclust(dist,method=“complete”) # 응집분석에 따른 계층적 군집화를 수행
- dist : 거리 구조 또는 거리 행렬. 보통 명령문 dist의 결과를 이용
- method : 응집분석에 따른 계층적 군집화 방법 옵션이다. single은 단일연결법, complete는 완전연결법, average는 평균연결법을 이용한 계층적 군집화를 수행. 기본값은 complete

diana (x, metric) # 분할분석에 따른 계층적 군집화를 수행, cluster 패키지 설치 및 호출 필요
- x : data frame 또는 data 행렬
- metric : 거리 계산방법 옵션. 예를 들어 “euclidean”은 유클리디안 거리를 이용하여 거리를 계산하고 “manhattan”은 맨해튼 거리를 이용하여 거리를 계산. 기본값은 euclidean

kmeans(x, centers, algorithm=“Hartigan-Wong”) # K-평균 군집화를 수행
- x : data 행렬
- centers : K-평균 군집화를 수행하기 위한 초기값을 가지고 있는 행렬. 각 행은 각 군집의 초기값을 가지고 있어야 하며, K-평균 군집화를 위한 군집 수는 centers에서의 행의 수
- algorithm : K-평균 군집화에 사용되는 알고리즘. 기본값은“Hartigan- Wong”. 매퀸(1967)에 기초한 알고리즘을 사용하려면 “MacQueen”을 사용

plot(object) # 일반적으로 object에 대한 그림을 생성
- object : 명령문 hclust나 diana에 의하여 생성된 결과 object

cutree(tree, k=) # 명령문 hclust나 diana에 의하여 생성된 결과 object를 가지고 주어진 군집수에 대하여 각 개체에 대한 id를 갖는 벡터를 생성
- tree : 명령문 hclust 또는 diana의 결과를 가지고 있는 object
- k : 계층적 군집화로부터 얻기를 원하는 군집 수

table(...) # 분할표를 생성
- ... : 범주형으로 해석될 수 있는 한 개 이상의 object

tapply(x, indices, FUN=) # 자료에서 같은 범주에 속한 개체에 대하여 함수의 결과를 산출
- x : 자료행렬
- indices : 범주를 가지고 있는 리스트
- FUN=: 함수의 이름을 가지고 있는 문자 string. K-평균을 위해서는 mean 을 사용하면 되고 FUN=은 생략가능

ex2 = read.table("ex7-2.txt",header=T)

dist(ex2)
dist(ex2, method="manhattan")

clustering1 = hclust(dist(ex2, method="manhattan"), method="single")
clustering2 = hclust(dist(ex2, method="manhattan"), method="complete")
clustering3 = hclust(dist(ex2, method="manhattan"), method="average")

par(mfrow=c(1,3))
plot(clustering1)
plot(clustering2)
plot(clustering3)


install.packages("cluster")
library(cluster)
divclustering = diana(ex2, metric="manhattan")
plot(divclustering)


요약
+ 군집분석(clustering)은 자율학습(unsupervised learning) 방법 중 하나로 관측값 또는 개체를 의미 있는 몇 개의 부분집단으로 나누는 과정을 의미한다.
+ 군집분석에서는 개체 또는 군집 간의 비유사성을 거리로 정의한다. 개체 간의 거리를 구하는 방법으로 유클리디안 거리, 맨해튼 거리, 민코브스키 거리, 마할라노비스 거리와 코사인 거리 등이 있으며 일반적으로 유클리디안 거리가 많이 사용된다.
+ 군집화의 방법은 크게 계층적 군집분석과 비계층적 군집분석으로 나뉘는데, 계층적 군집분석 방법에는 응집분석과 분할분석이 있고, 비계층적 군집분석 방법에는 K-평균 군집화가 있다.
+ 일반적으로 응집분석과 같은 계층적 방법을 통해 나무형 그림을 그려보고 이것으로부터 군집수와 초기값을 구한 뒤, 비계층적 방법인 K-평균 군집화를 여 최종 군집화 결과를 얻는 방식을 많이 이용한다.
+ 군집분석은 유용한 탐색적인 기법으로서 주어진 자료에 대한 사전정보 없이 의미 있는 자료구조를 찾아낼 수 있으며 다양한 형태의 데이터에 적용이 가능하다.



제8장 연관성분석

8.1 연관성분석이란
- 연관성분석(Association Analysis)은 연관성 규칙을 통해 하나의 거래나 사건에 포함되어 있는 둘 이상의 품목 간 상호 연관성을 발견해 내는 것
- 연관규칙이란 어떤 사건이 얼마나 자주 동시에 발생하는 가를 표현하는 규칙 또는 조건
- 연관성분석을 마케팅에서 손님의 장바구니에 들어있는 품목간의 관계를 알아본다는 의미에서 장바구니분석(market basket analysis)이라고도 함

연관규칙의 특징
- 연관규칙은 사건과 사건간의 관계에 관심
- 목표변수 없이 특성의 조합으로 규칙을 표현한다. 따라서 연관성분석은 자율학습에 속함
- 연관규칙이 서로 영향을 주지 않으므로 하나의 고객이 여러 개의 규칙에 해당 될 수 있음
- 연관규칙을 통하여 일반적으로 “A가 발생하면 B가 발생한다.”는 규칙을 도출하게 되는데 이를 ‘A → B’로 표현
- 많은 품목들의 관계 속에서 의미 있는 결과를 찾기 위해서는 결과해석에 앞서 연관성의 내용이 일반화 할 수 있는 내용인지 판단할 수 있도록 각 연관규칙을 비교평가 할 수 있는 기준이 필요
- 객관적이고 일반성 있는 연관관계를 규명하기 위한 정량화된 평가기준이 필요

8.2 연관성분석의 종류
동시구매 품목의 연관성분석

(1) 지지율 (support)
- 지지율은 연관규칙의 유용성을 평가하는 측도
- 연관규칙 ‘A → B’의 지지율은 전체 거래중 A와 B가 동시에 포함된 거래의 비율
- 대형할인점의 1백만 건의 거래 중에서 1만 건의 거래가 A와 B를 모두 포함한 경우 연관규칙 ‘ A → B’의 지지율은 1%
- 확률을 개념을 적용하면 P(A∩B)로 표현 = (A와 B가 동시에 포함된 거래수) / (전체 거래수)
지지율의 단점
1) 표본수가 적은 경우 연관관계에 대한 통계적 유의성을 증명하기 어려움
2) 투자한 시간, 비용에 비해 판매량을 증가시키는 기여도가 작다는 점

(2) 신뢰도(Confidence)
- 연관성분석에 있어서 신뢰도는 원인이 발생할 때 결과가 발생할 가능성을 나타냄
- 지지율의 경우 기준이 되는 사건(구매)이 전체집합인 데 비하여 신뢰도는 기준이 되는 사건을 특정 품목을 구매한 것에 한정
- ‘A → B’의 신뢰도는 품목 A가 구매되었을 때, 품목 B가 추가로 구매될 확률을 의미
- P(B|A) = P(A∩B) / P(A) = (A와 B가 동시에 포함된 거래수) / (A가 포함된 거래수)

(3) 향상도(lift)
- 향상도는 규칙을 모를 때에 비하여 규칙을 알 때에 판매가 얼마나 향상되는가를 나타냄
- 즉, 향상도는 품목 B를 연관규칙과 관계없이 판매하는 것에 비하여 연관규칙을 알고 A를 구매한 고객에 대하여 B를 판매하는 경우 판매가 얼마나 증가하는가를 나타냄
- 향상도의 개념이 필요한 이유는 신뢰도의 제약 때 (신뢰도는 연관규칙이 실제로 유용한지 아니면 임의로 나타난 결과인지 알 수 없다는 단점)
- 향상도는 ‘A → B’의 신뢰도를, 독립 가정 하에서의 신뢰도(A가 B에 영향을 미치지 않는 경우)인 전체에서 B가 포함된 거래의 비중으로 나눈 것을 의미
- ‘A → B’의 향상도 = P(B|A) / P(B) = P(A∩B) / P(A) P(B) = (A와 B가 동시에 포함된 거래수) x (전체 거래수) / (A가 포함된 거래수) x (B가 포함된 거래수)
- 향상도가 1에 가까우면 A와 B가 확률적으로 독립에 가까움을 의미하고 향상도가 1보다 크면 A를 구매하는 경우 B를 구매할 가능성이 높다는 것을 의미(양의 상관관계)

시차 연관성분석
- 시계열자료처럼 사건이 어떤 순서로 일어날 때 이 사건 사이의 연관성을 알아내는 것을 의미한다.
- 흔히 같은 고객의 구매패턴을 기반으로 구매패턴이 시간에 따라 연관이 있는지를 알려고 할 때 사용된다.
- 시차연관성분석은 일반적인 연관성분석과 유사하나 연관규칙을 고려할 때 순서를 고려하다는 점에서 차이가 있음
- 일반적으로 비대칭


8.3 연관성분석의 절차
(1) 품목과 수준의 선택
- 장바구니 내의 구매 품목은 매우 다양하며 분류 수준도 차이가 나는 여러 품목이 섞여 있는 경우가 빈번히 발생
- 복잡한 품목에 대해서는 품목분류표가 있으면 유용
- 분석의 목적에 부합되는 수준과 품목에 대한 후보군이 정해졌다면 이들을 변화시켜가면서 여러 번의 연관규칙을 검토하고 유용한 연관규칙을 찾게 됨
- 연관규칙에서는 품목의 개수가 많아질수록 고려해야 할 규칙수가 크게 증가하므로 품목수가 너무 많지 않도록 고려
- 품목 외에도 고객의 인구통계적 자료를 활용할 수도 있음(고객 정보)

(2) 연관규칙의 생성
- 품목수의 증가에 따라 연관규칙의 수도 지수적으로 증가
- 지지율이 낮더라도 신뢰도가 높은 경우 유용한 연관규칙을 찾을 가능성
- 여러 조합의 지지율과 신뢰도의 하한을 정하여 연관규칙을 찾도록
- 품목의 구매순서 정보 등이 있다면, 시차연관규칙을 도출

(3) 연관규칙의 분석
- 지지율, 신뢰도, 향상도에 근거한 유용한 연관규칙 후보군을 선정
- 연관규칙 후보들에 대한 이유를 점검
- 일부 규칙은 실제로 유의하지 않으면서도 우연히 유의하게 나타날 수도 있음

8.4 연관성분석의 장단점
장점 : 연관성분석은 여타 데이터마이닝 기법에 비해 이해와 적용이 용이
- 연관규칙이 ‘조건 → 반응’형태로 표현되므로 쉽게 이해할 수 있고, 바로 실제에 적용하기가 용이
- 연관성분석 알고리즘은 비교적 단순한 자료 형태와 계산이 간단하다는 장점
- 목표변수 없는 직관적인 분석
- 본격적인 데이터마이닝에 들어가기에 앞서 거대 자료의 탐색 도구로서 매우 유용하게 사용될 수도 있음

단점 : 연관성분석은 품목수의 증가에 따라 계산량이 증가한다는 단점
- 유사한 품목을 한 범주로 일반화해야 하는데, 적절한 품목 결정이 쉽지 않음
- 수 천 가지의 품목을 모두 분석에 그대로 사용할 경우 수많은 연관규칙이 발견되므로 유용한 규칙을 한정하여 찾기 어렵다는 제약
- 연속형 변수를 사용하여 연관규칙을 구하기 힘들며 거래가 드문 품목에 대한 정보를 찾기도 어렵다는 단점도 존재

8.5 R 실습

str(x) # R object의 내부 구조를 출력

read.transactions(file, format 〓 c(“basket”,“single”), sep 〓 NULL,cols 〓NULL) # 자료를 읽어 transactions object 형태로 저장
- file : 거래자료(transaction data)가 저장된 파일 이름
- format : 자료가 저장된 형태를 지정. “basket”으로 지정해 주면 한 줄에 하나의 거래가 기록되어 있는 데이터임을 의미하며 “single”을 사용하면 각 줄이 거래와 항목으로 이루진 데이터임을 의미
- sep : 자료 구분자
- cols : format이 “single”인 경우 거래와 항목의 열을 나타내는 벡터. format이 “basket”인 경우 거래의 열을 나타내는 숫자

apriori(data, parameter 〓NULL, appearance 〓NULL, control 〓NULL) # apriori 알고리즘을 이용하여 연관규칙을 도출
- data : 거래자료가 저장된 transactions object 이름
- parameter : apriori를 실행하기 위한 모수를 가진 APparameter obejct 또는 name list

inspect(x, ...) # 거래자료와 연관규칙을 출력
- x : 연관규칙, 거래자료 또는 항목행렬

plot(x, method = c(“grouped”, “graph”, “paracoord”)) # 거래자료와 연관규칙을 시각화
- x : 연관규칙, 거래자료 또는 항목행렬
- method : “grouped"로 지정하면 연관규칙의 조건(LHS)과 결과(RHS)을 기준으로 그래프를 출력(원의 크기는 각 규칙의 지지도를 색상의 진하기는 향상도(lift)를 나타냄). "graph"로 지정하면 품목들 간의 연관성을 그래프로 출력 (화살표의 두께는 지지도를 화살표의 색상의 진하기는 향상도(lift)를 나타냄).
“paracoord”로 지정하면 각 물품 간의 연간관계를 병렬적으로 확인할 수 있음

요약
+ 연관성분석(Association analysis)은 연관성 규칙을 통해 하나의 거래나 사건에 포함되어 있는 둘 이상의 품목 간 상호 연관성을 발견해 내는 것이다.
+ 연관규칙이란 어떤 사건이 얼마나 자주 동시에 발생하는 가를 표현하는 규칙 또는 조건이다.
+ 연관성분석의 측도로서 지지율, 신뢰도 등이 있는데, 지지율은 전체 거래 중 A, B를 동시에 포함한 거래비율이고, 신뢰도는 A를 포함한 거래 중 A, B를 동시에 포함한 거래비율이다.
+ 연관규칙은 품목과 수준을 선택하고 이를 바탕으로 연관규칙을 도출한 후 각종 분석을 통하여 최종연관규칙을 찾는 과정을 통해 구한다.
+ 연관규칙은 다른 데이터마이닝 도구에 비하여 사용하기 쉽고 결과를 이해하기 쉽다는 장점이 있으나, 품목 수에 따라 계산량이 크게 증가한다는 단점이 있다.