: 일정 기준과 절차에 따라 조직 전체의 정보화 구성요서를 통합분석 후 그 관계를 구조적으로 정리한 체제 이를 바탕으로 정보시스템을 효율적으로 구성하기 위한 방법
● IT 시스템 아키텍처 예시
- 아키텍처 구성을 시스템의 목적에 맞게 결정하는 과정, 서버, OS, 미들웨어, 저장소 등 폭젋은 지식 필요
- 적정 비용으로 필요 시스템 구축하기 휘해서도 매우 중요
● IT 아키텍처의 역사
단계
특징
Stand-alone
- 1980년대까지 널리 이용 - 데이터베이스만으로 시스템 운용
클라이언트 / 서버
- 1990년대 ~ 2000년 - 클라이언트와 서버로 계층 분리 - 상호 네트워크 접속
WEB 3계층
- 2000년 ~ 현재 - WEB, WAS, DBMS로 구분 - 클라이언트 / 서버 단계를 발전시킨 현재의 주료 모델
- 최근에는 클라우드 시대를 맞이하여 기존의 틀을 뒤엎은 다양한 IT 아키텍처가 등장
- 서버가 마치 존재하지 않는 것처럼 운영되는 서비스 개념도 존재
- 다양한 클라우드 서비스 업체가 경쟁
- 클라우드를 이해하기 위해서도 기존의 전통적인 방식의 IT 아키텍처의 지식 필수
1. Stand - alone 단계(DBMS 관점)
: DBMS 서버가 네트워크 접속 없이 독립적으로 작동, 20세기 현대적 컴퓨터의 최초 등장시기
장점
단점
- 구축 과정이 간단함(소규모 작업 및 테스트를 빨리 처리할 수 있음) - 높은 보안(네트워크 연결 불가)
- 물리적 떨어진 장소에서 접근 불가 - 복수 사용자가 동시에 작업 불가(1명만 이용가능) - 낮은 가용성(Availability) - 서버가 단 1대임 - 확장성 부족
2. 클라이언트 / 서버 단계 (DBMS 관점)
: 네트워크 연결을 통한 복수 사용자가 동시에 사용가능, DB 서버 한대에 복수 사용자가 접속하는 구성이 주를 이룸
장점
단점
- 원격지에서도 사용가능 - 복수의 사용자가 동시에 사용 가능
- 인터넷 환경에서 접속시 보안이 위험 - 각자의 사용자 PC에서 애플리케이션 설치 (수정 및 배포의 어려움 존재)
3. WEB3 계층 (DBMS 관점)
: 애플리케이션을 WAS 서버에서 관리 , 시스템을 3가지 계층의 조합으로 인식하기 시작(WEB, WAS, DBMS)
장점
단점
- 직접적인 접속 요청을 웹서버 계층에 한정하여 보안이 향상 - 애플리케이션 계층에 비즈니스 로직이 집중 (관리의 용이성 및 비용 절감)
- Stand - Alone 및 클라이언트 / 서버 방식에 비해 크게 단점이 존재하지 않음.
● 가용성과 확장성 확보
가용성이란 ?
가용성이란 서버와 네트워크, 프로그램 등의 정보 시스템이 정상적으로 사용 가능한 정도를 말한다.
가용성을 수식으로 표현할 경우, 가용성(Availability) 이란 정상적인 사용시간(Uptime)을 전체 사용시간 (Uptime + Downtime)으로 나눈 값을 말한다. 이 값이 높을수록 "가용성이 높다" 고 표현한다.
가용성이 높은 것은 고가용성(HA, High Availiability) 이라고 한다.
- 가용성이 100이라면 단 한번도 장애없이 동작한 시스템이다.
확장성이란 ?
화가작성(Scalability)는 IT 시스템에서 대규모적인 재설계 및 재설치가 필요없이 확장이 얼마나 쉽고 가능한지에 대한 용이성을 뜻한다.
DBMS 설계자는 DBMS의 확산이나 거대한 성장을 도모해야한다.
절대적인 사용자가 수가 증가하더라도 이를 수용할 수 있도록 확장성 있게 설계해야 함을 의미한다.
최근의 클라우드 시스템이 각광받는 이유 중 하나가 바로 탁월한 확장성에 있다.
● 가용성을 높이는 전략
고품질 - 소수
저품질 - 다수
- DBMS 서버의 고품질을 추구 - 소수의 DBMS 서버를 이용 - 소수의 DBMS 서버를 높은 견고함과 신뢰성으로 무장
- DBMS 서버가 품질이 떨어지더라도 다수의 DBMS를 사용하는 전략 - 클러스터링 전략(동일 기능의 DBMS 서버를 다수로 구축)
● 저품질 - 다수 전략의 용이성
- 동일 기능을 하는 DBMS 서버를 여러 대 설치 및 운영하여 병렬화 시킴
- 여러 대의 DBMS 서버가 한 개의 시스템을 위해서 존재
- 다중화/여유도 확보
- 서버를 늘릴수록 장애 발생률은 확률적으로 자연 감소함
● 단일 장애 점(SPOF, Single Point Of Failure)
- 단일 장애 점(SPOF, Single Point Of Failure)은 시스템 구성 요소 중에서, 동작하지 않으면 전체 시스템이 중단되는 요소를 말한다. 높은 가용성을 추구하는 네트워크, 소프트웨어 애플리케이션, 사용 시스템에 단일 장야점이 있는것은 바라직하지 않다.
- 높은 신뢰성을 요구하는 시스템은 단일 컴포넌트에 의존하지 않는 것이 좋다(ex 금융권 시스템)
● 신뢰성 vs 가용성
신뢰성 (Reliability)
가용성 (Availability)
- 하드웨어나 소프트웨어가 고장 나는 빈도 밑 고장 기간 - 컴포넌트 자체의 문제
- 사용자 입장에서 시스템을 어느 정도 사요할 수 있는가 - 시스템 전체 수준의 문제
- 신뢰성이 낮아도 여러 대의 서버를 구축하는 클러스터링 기법을 통해 가용성 확보가 가능하다.
: 어떤 현상에 대해서 시간의 변화에 따라 일정한 간격으로 현상의 변화를 기록한 시계열 데이터를 대상으로 미래의 변화에 대한 추세를 분석하는 방법, 시간 경과에 따른 관측 값의 변화를 패턴으로 인식하여 시계열 모형을 추정하고, 이 모형을 통해서 미래의 변화에 대한 추세를 예측하는 분석방법입니다. (시계열 자료 - 시간의 흐름에 따라 관찰된 데이터)
- 과거로 부터 현재까지의 변화를 통해서 향후 미래를 예측 (현상 이해 -> 미래 예측)
시계열 자료 분류
① 정상성(stationary) 시계열
: 어떤 시계열자료의 변화 패턴이 평균값을 중심으로 일정한 변동폭을 갖는 시계열
(시간의 추이와 관계 없이 평균과 분산이 일정)
- 대부분의 시계열 자료는 다루기 어려운 비정상성 시계열 자료이기 때문에 분석하기 쉬운 정상성 시계열 자료로 변환
평균이 일정 : 모든 시점에 대해 일정한 평균을 가진다.
- 평균이 일정하지 않은 시계열은 차분(difference)을 통해 정상화
- 차분은 현시점 자료에서 이전 시점 자료를 빼는 것
- 일반차분 : 바로 전 시점의 자료를 빼는 것
- 계절차분 : 여러 시점 전의 자료를 빼는 것, 주로 계졀성을 갖는 자료를 정상화 하는데 상용
분산도 시점에 의존하지 않음
- 분산이 일정하지 않은 시계열은 변환(transformation)을 통해 정상화
공분산도 시차에만 의존하지 않음
② 비정상성 (non-stationary) 시계열
: 대부분 시계열자료
- 시간의 추이에 따라서 점진적으로 증가하는 추세
- 분산이 일정하지 않은 경우
시계열 분석 특징
① y변수 존재 : 시간 t를 설명변수(x)로 시계열(Yt)을 반응변수(y)로 사용
- 설명변수(=독립변수), 반응변수(=종속변수)
② 미래 추정 : 과거와 현재의 현상을 파악하고 이를 통해서 미래 추정
- 현상 이해 -> 미래 예측
③ 계절성 자료 : 시간 축을 기준으로 계절성이 있는 자료를 데이터 셋으로 이용
- 계절성의 자료가 내포
④ 모수 검정 : 선형성, 정규성, 등분산성 가정 만족
⑤ 추론 기능 : 유의수준 판단 기준이 존재하는 추론통계 방식
추론 통계 분석 : 가설설정 -> 유의수준 임계값 정의 -> 측정도구 결정 -> 데이터 수집 -> 데이터 분석
-> 최종결과 유의수준을 기준으로 판단 검증
추론통계 방식을 사용하는 이유 : 추론 통계의 접근 방식이 모집단을 대표하는 샘플 데이터를 통해 전체를 추정
⑥ 활용분야 : 경기예측, 판매예측, 주식시장분석, 예산 및 투자 분석, 교통수요 등
시계열 분석 적용 범위
① 기존 사실에 대한 결과 규명 : 주별, 월별, 분기별, 년도별 분석을 통해서 고객의 구매 패턴을 분석
② 시계열자료 특성 규명 : 시계열에 영향을 주는 일반적인 요소(추세, 계절, 순환, 불규칙)를 분해해서 분석한다.(시계열 요소 분해법)
③ 가까운 미래에 대한 시나리오 규명 : 탄소배출 억제를 성공 했을 때와 실패 했을 때 지구 온난화는 얼마나 심각해질 것인가를 분석한다.
④ 변수와 변수의 관계 규명 : 경기선행지수와 종합주가지수의 관계를 분석한다.(국가 경제와 주가지수 관계)
⑤ 변수 제어 결과 규명 : 입력 변수의 제어(조작)를 통해서 미래의 예측 결과를 통제할 수 있다.(판매 촉진에 영향을 주는 변수 값을 조작할 경우 판매에 어떠한 영향을 미치는가?)
시계열 데이터 특성
① 추세 변동(Trend variation: T) - 인구 변동, 지각변동, 기술변화 등 상승과 하락의 영향(장기 변동요인) , 앞으로 나아갈 방향성
② 순환 변동(Cyclical variation: C) - 2년~10년의 주기에서 일정한 기간 없는 반복적 요소(중․장기 변동요인)
③ 계절 변동(Seasonal variation: S) - 일정한 기간(월, 요일, 분기), 1년 단위 반복적 요소(단기 변동요인)
④ 불규칙변동(Irregular variation: I) - 어떤 규칙 없이 예측 불가능한 변동요인(설명할 수 없는 요인) - white noise - 실제 시계열자료에서 추세, 순환, 계절 요인을 뺀 결과(회귀분석 오차)
시계열 분석 절차
정상성시계열로 변환
비정상 시계열 -> 정상성 시계열 :평균 정상화 : 차분
비정상 시계열 -> 정상성 시계열 : 분산 정상화 : 로그 -> 차분
모형 생성 : 시계열 모형 생성의 대표적인 방법(현재 가장 많이 이용)
- 정상성을 가진 시계열 모형 자기회귀모형(AR), 이동평균모형(MA), 자기회귀이동평균모형(ARMA)
- 비정상성을 가진 시계열 모형(차수 적용)
자기회귀누적이동평균모형(ARIMA)
1. 시계열 자료 확인
비정상성 시계열 -> 정상성 시계열
① 데이터 셋 가져오기
data("AirPassengers") # 12년(1949~1960년)간 매월 항공기 탑승 승객 수를 기록한 시계열 자료.
str(AirPassengers)
출력값 : Time-Series [1:144] from 1949 to 1961: 112 118 132 129 121 135 148 148 136 119 ...
View(AirPassengers)
< 승객 탑승 수 >
② 차분(Differencing) 적용 - 현재 시점에서 이전 시점의 자료를 빼는 연산으로 평균을 정상화하는데 이용 : 평균 정상화
x11()
par(mfrow=c(1,2))
ts.plot(AirPassengers) - 비정상성 시계열 데이터
log <- diff(log(AirPassengers)) # 로그+차분 수행
plot(log)
ts.plot( ) : 시계열 시각화
diff( ) : 차분 적용
비정상성의 시계열 데이터 -> 정상성의 시계열 데이터(차분+로그)
2. 시계열 자료 시각화
- 단일 시계열 자료 시각화
① WWWusage 데이터 셋 가져오기 - R에서 기본 제공 데이터 셋으로 인터넷 사용 시간을 분 단위로 측정한 100개 vector로 구성된 시계열 자료
data("WWWusage")
str(WWWusage) # Time-Series [1:100] from 1 to 100:
출력값 : Time-Series [1:100] from 1 to 100: 88 84 85 85 84 85 83 85 88 89 ...
WWWusage
② 시계열 자료 추세선 시각화
- 추세 : 어떤 현상이 일정한 방향으로 나아가는 경향. 주식시장분석이나 판매예측등에서 어느 기간동안 같은 방향으로 움직이는 경향을 의미
- 추세선 : 추세를 직선이나 곡선 형태로 차트에서 나타내는 선(어느 정도 평균과 분산 확인 가능)
m <- decompose(tsdata) # decompose()함수 이용 시계열 분해
attributes(m) # 변수 보기
- 출력값 -
$names
[1] "x" "seasonal" "trend" "random" "figure" "type"
$class
[1] "decomposed.ts
plot(m) # 추세요인, 계절요인, 불규칙 요인이 포함된 그래프.
-> 기본 데이터 셋
-> 추세 요인
-> 계절 요인(년단위 주기의 특징)
-> 불규칙(white noise)
plot(tsdata - m$seasonal) # 계절요인을 제거한 그래프.
- 계절요인 제거한 추세선
⑥ 추세요인과 불규칙요인 제거
plot(tsdata - m$trend) # 추세요인 제거 그래프
plot(tsdata - m$seasonal - m$trend) # 불규칙 요인만 출력.
4. 자기 상관 함수/ 부분 자기 상관 함수
자기상관함수(Auto Correlation Function)
부분자기상관함수(Partial Auto Correlation Function)
- 자기상관성 : 자기 상관계수가 유의미한가를 나타내는 특성 - 자기상관계수 : 시계열 자료에서 시차(lag)를 일정하게 주는 경우 얻어지는 상관 계수
- 시계열 변수의 시간에 따른 자기 상관 관계를 나타내는 것입니다. 계열 상관, 교차자기 상관이라고도 합니다. 상관이 특정 시간에 대한 변수간의 상관관계라면, 자기상관은 시간의 변화에 따른 변수 간의 상관관계 변화가 주 관심사입니다.
어떤 시계열 데이터가 일정한 패턴을 본인다면, 자기 상관이 있따는 것을 뜻합니다. 시간에 따라 변수의 값이 자기상관성을 가지고 변화하므로, 무작위가 아닌 일정한 패턴을 보여준다고 할 수 있습니다.
- 자기 상관을 어떻게 활용할 수 있을까요? 바로 데이터의 무작위성을 파악할 수 있습니다.
자기상관 데이터가 ( - )에 가까울 수록, 무작위성이 있는 시계열 데이터로 판단할 수 있습니다. 0보다 큰값을 가질수록 자기상관을 강하게 가진다고 할 수 있습니다.
① 시계열자료 생성
input <- c(3180,3000,3200,3100,3300,3200,3400,3550,3200,3400,3300,3700)
length(input) 출력값 : 12
tsdata <- ts(input, start = c(2015, 2), frequency = 12) # Time Series
tsdata
- 출력값 -
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2015 3180 3000 3200 3100 3300 3200 3400 3550 3200 3400 3300
2016 3700
② 자기상관함수 시각화
acf(na.omit(tsdata), main="자기상관함수", col="red")
- 첫번째의 값은 자기 자신과의 관계이므로 1이 나올 수 밖에 없다.
- 파란선(임계치) 안에 들어오면 자기상관계에 의해서 데이터셋 자체는 자기 상관성과 관련해서 자기상관성이 없음을 보여준다.
- 일정주기로 체크해봤을 때, 자기상관성이 없다.
③ 부분자기상관함수 시각화
pacf(na.omit(tsdata), main="부분자기상관함수", col="red")
파란색 안에 들어오면 자기상관성이 없음.
시계열 데이터 시간의 의존성 여부가 무작위성을 띄느냐 띄지 않느냐를 자기상관함수로 판단할 수 있다.
무작위성을 띈다는 것은 random을 의미하고, 무작위성이 있다는 것을 이야기하고, 파란선(임계치)를 넘어가는 것을 의미한다.
5. 추세 패턴 찾기 시각화
추세패턴
:시계열 자료가 증가 또는 감소하는 경향이 있는지 알아보고, 증가나 감소의 경향이 선형인지 비선형인지를 찾는 과정
- 시계열 자료의 추세 패턴 찾기 시각화
① 시계열 자료 생성
input <- c(3180,3000,3200,3100,3300,3200,3400,3550,3200,3400,3300,3700)
# Time Series
tsdata <- ts(input, start = c(2015, 2), frequency = 12)
② 추세선 시각
plot(tsdata, type="l", col="red")
③ 자기상관 함수 시각화
acf(na.omit(tsdata), main="자기상관함수", col="red")
④ 차분 시각화
plot(diff(tsdata, differences=1))
6. 평활법(Smoothing Method)
: 수학/통계적 방법의 분석이 아닌 시각화를 통한 직관적 방법의 데이터 분석 방법
- 해석에 있어서 차이점이 발생할 수 있고, 주관적인 개입이 발생할 수 있다.
- 단기 예측용으로, 1개(일변량)
- 시계열 자료의 체계적인 자료의 흐름을 파악하기 위해서 과거 자료의 불규칙적인 변동을 제거하는 방법
(불규칙성의 배제)
- 이동 평균(Moving Average - ma) : 시계열 자료를 대상으로 일정한 기간의 자료를 평균으로 계산하고, 이동 시킨
추세를 파악하여 추세를 예측하는 분석 기법
- 지수 평활법 : 전체 데이터를 평균을 계산하고, 전체 평균에 가장 최근의 값을 기준으로 일정 가정치를 부여해 가면서 추적해가는 분석 기법 (최근 데이터의 비중이 높음)
이동 평균 vs 지수 평활법
- 모든 관측치에 동일한 가중치를 부여하여 이동평균법은 최근 관측치나 오래된 관측치나 동일한 가중치를 사용하므로 정보를 동리하게 이용하는 단점이 잇고 과거 추세 패턴을 인지함
- 최근 관측치에 가중치, 멀어질수록 지수적으로 가중치 값 감소시키는 방법인 미래 예측에 사용.
① 시계열 자료 생성
data <- c(45,56,45,43,69,75,58,59,66,64,62,65,
55,49,67,55,71,78,71,65,69,43,70,75,
56,56,65,55,82,85,75,77,77,69,79,89)
length(data) 출력값 : 36
tsdata <- ts(data, start = c(2016, 1), frequency = 12)
tsdata
- 출력값 -
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2016 45 56 45 43 69 75 58 59 66 64 62 65
2017 55 49 67 55 71 78 71 65 69 43 70 75
2018 56 56 65 55 82 85 75 77 77 69 79 89
② 평활 관련 패키지 설치
install.packages("TTR")
library(TTR)
③ 이동평균법으로 평활 및 시각화
plot(tsdata, main="원 시계열 자료") # 시계열 자료 시각화
plot(SMA(tsdata, n=1), main="1년 단위 이동평균법으로 평활")
plot(SMA(tsdata, n=2), main="2년 단위 이동평균법으로 평활")
plot(SMA(tsdata, n=3), main="3년 단위 이동평균법으로 평활")
: ARIMA 모델은 시계열 분석 기법의 한 종류로, 과거의 관측값과 오차를 사용해서 현재의 시계열 값을 설명하는 ARMA 모델을 일반화 한 것입니다. 이는 ARMA 모델이 안정적 시계열(Stationary Series)에만 적용 가능한 것에 비해, 분석 대상이 약간은 비안정적 시계열(Non Stationary Series)의 특징을 보여도 적용이 가능하다는 의미입니다.
- 자기회귀누적이동평균모형(ARIMA) - 형식) ARIMA(p, d, q) : 3개의 인수 - p : AR모형 차수, d : 차분 차수, q : MA모형 차수
데이터 준비
input <- c(3180,3000,3200,3100,3300,3200,3400,3550,3200,3400,3300,3700)
시계열 객체 생성(12개월:2015년 2월 ~ 2016년 1월)
tsdata <- ts(input, start = c(2015, 2), frequency = 12)
tsdata
- 출력값 -
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2015 3180 3000 3200 3100 3300 3200 3400 3550 3200 3400 3300
2016 3700
추세선 시각화(정상성시계열 vs 비정상성시계열)
plot(tsdata, type="l", col='red')
: 연관분석은 군집분석에 의해서 그룹핑된 cluster를 대상으로 해당 그룹에 대한 특성을 분석하는 방법으로 장바구니 분석이라고 합니다. 즉, 유사한 개체들을 클러스터로 그룹화하여 각 집단의 특성 파악합니다. 예를 들어, 제가 마트에서 ’씨리얼’ 이라는 제품을 샀으면 그와 함께 먹을 우유도 같이 구매할 확률이 높을 것입니다. 이렇게 A라는 제품을 구매하였을 때, B라는 제품도 함께 구매하는 규칙의 패턴을 구하고자 하는 것이 연관규칙 분석의 목적입니다. 유튜브, 넷플릭스 등의 플랫폼들은 모두 이러한 알고리즘들을 기반으로 컨텐츠들을 추천해주고 있습니다.
연구 분석의 기본 개념
지지도(support)
: 전체 데이터에서 관광지 X, Y에 대한 방문을 모두 포함하는 비율 (2개 이상 컬럼)
- X -> Y 지지도 식 = X, Y 동시에 방문한 관광객 수 / 전체 관광객 수
= n(A, B) : 두 항목(X, Y)이 동시에 포함 수 / n : 전체 수
신뢰도(confidence)
: 관광지 X를 방문하였을 때, Y를 같이 방문할 조건부 확률
- X -> Y 신뢰도 식 = X,Y 동시에 방문한 관광객 수 / X 방문 관광객 수
= X와 Y를 포함한 수 / X를 포함한 수
- 값이 클수록 X를 방문하였을 때, Y를 같이 방문하는 비율이 높음 ( X를 방문하였을 때, Y를 방문할 비율 )
향상도(Life)
: 관광지 X를 방문하였을 때, Y를 같이 방문하는 경우와 관광지 X의 방문여부에 상관없이 Y를 방문한 경우의 비율 ( 관광지 간의 독립성과 상관성을 나타내는 척도 )
- 하위 항목들이 독립에서 얼마나 벗어나는지의 정도를 측정한 값
- 향상도 식 = X,Y 를 동시에 방문한 관광객 비율 / (X를 방문한 관광객 비율 * Y를 방문한 관광객 비율)
= 신뢰도 / Y가 포함될 거래율
- 향상도가 1에 가까우면 : 두 상품이 독립 - 1보다 작으면 : 두 상품이 음의 상관성(감기약과 위장약) - 공통점을 가지지만 다른 기능 - 1보다 크면 : 두 상품이 양의 상관성
- 분자와 분모가 동일한 경우 : Lift == 1, X와 Y가 독립(상관없음) - 분자와 분모가 동일한 경우 : Lift != 1, X와 Y가 독립이 아닌 경우(상관있음)
- 규칙 생성에서 support 값을 높게 설정할 수록 적은 수의 규칙만이 생성이 됩니다.(즉, 발생빈도가 높은 규칙들만 생성이 된다는 의미입니다.)
- confidence 수치가 높으면 관광지 X를 방문하면 Y를 방문할 확률이 높아지는 것과 같습니다.
= confidence 확률식
연관분석 추가 설명
- 데이터베이스에서 사건의 연관규칙을 찾는 무방향성 데이터마이닝 기법
- 마케팅에서 고객의 장바구니에 들어있는 품목 간의 관계 탐구
- 어떤 사건이 얼마나 자주 동시에 발생하는가를 표현하는 규칙 또는 조건
- y변수가 없는 비지도 학습에 의한 패턴 분석
무방향성(x -> y변수 없음)
- 사건과 사건 간 연관성(관계)를 찾는 방법 (예 : 기저귀와 맥주) 예) 장바구니 분석 : 장바구니 정보를 트랜잭션이라고 하며, 트랜잭션 내의 연관성을 살펴보는 분석기법
- 분석절차 : 거래내역 -> 품목 관찰 -> 규칙(Rule) 발견
- 관련분야 : 대형 마트, 백화점, 쇼핑몰 판매자 -> 고객 대상 상품추천
1. 고객들은 어떤 상품들을 동시에 구매하는가? 2. 라면을 구매한 고객은 주로 다른 어떤 상품을 구매하는가?
- 활용방안 : 위와 같은 질문에 대한 분석을 토대로 고객들에게 1) 상품정보 발송 2) 텔레마케팅를 통해서 패키지 상품 판매 기획, 3) 마트의 상품진열
1. 연관규칙 평가 척도
실습) 트랜잭션 객체를 대상으로 연관규칙 생성
① 연관분석을 위한 패키지 설치
install.packages("arules")
library(arules) #read.transactions()함수 제공
② 트랜잭션(transaction) 객체 생성
tran<- read.transactions("tran.txt", format="basket", sep=",") # 트랜잭션 객체 생성.
tran # 6개의 트랜잭션과 5개의 항목(상품) 생성
- 출력값 -
transactions in sparse format with
6 transactions (rows) and
5 items (columns)
Adult 데이터 셋 arules 패키지에서 제공되는 Adult는 성인을 대상으로 인구소득에 관한 설문 조사 데이터를 포함하고 있는 AdultUCI 데이터셋을 트랜잭션 객체로 변환하여 준비된 데이터 셋이다. AdultUCI 데이터 셋은 전체 48,842개의 관측치와 15개 변수로 구성된 데이터 프레임이다. Adult 데이터셋은 종속 변수(Class)에 의해서 년간 개인 수입이 $5만 이상인지를 예측하는 데이터 셋으로 transactions 데이터로 읽어 온 경우 48,842개의 transaction 과 115 개의 item 으로 구성된다.
위의 데이터 셋을 활용하여 살펴보도록 하겠습니다.
실습) 다양한 신뢰도와 지지도 적용
지지도를 20%로 높인 경우 1,306개 규칙 발견
ar1<- apriori(Adult, parameter = list(supp=0.2))
지지도 20%, 신뢰도 95% 높인 경우 348개 규칙 발견
ar2<- apriori(Adult, parameter = list(supp=0.2, conf=0.95)) # 신뢰도 높임
지지도 30%, 신뢰도 95% 높인 경우 124개 규칙 발견
ar3<- apriori(Adult, parameter = list(supp=0.3, conf=0.95)) # 신뢰도 높임
지지도 35%, 신뢰도 95% 높인 경우 67 규칙 발견
ar4<- apriori(Adult, parameter = list(supp=0.35, conf=0.95)) # 신뢰도 높임
지지도 40%, 신뢰도 95% 높인 경우 36 규칙 발견
ar5<- apriori(Adult, parameter = list(supp=0.4, conf=0.95)) # 신뢰도 높임
Groceries 데이터 셋 arules 패키지에서 제공되는 Groceries 데이터 셋은 1개월 동안 실제 로컬 식료품 매장에서 판매되는 트랜잭션 데이터를 포함하고 있다. 전체 9,835개의 트랜잭션(transaction)과 항목(item) 169 범주를 포함하고 있다.
:사람 없이 컴퓨터가 스스로 레이블 되어 있지 않은 데이터에 대해 학습하는 것으로 y없이 x만 이용해서 학습하는 것 입니다. 정답이 없는 문제를 푸는 것이므로 학습이 맞게 됐는지 확인할 길은 없지만, 인터넷에 있는 거의 모든 데이터가 레이블이 없는 형태로 있으므로 앞으로 기계학습이 나아갈 방향으로 설정되어 있습니다. 통계학의 군집화와 분포 추정 등의 분야와 밀접한 관련이 있습니다.
– 컴퓨터 기계학습에 의한 분석 방법 – 종속변수(y) 없음 : 입력 데이터에 정답 없음 – 분석방법 : 규칙(패턴분석) → 공학.자연과학 계열(100년) – 분석유형 : 연관분석, 군집분석 → 데이터마이닝 기반
군집화(Clustering) - 군집분석(Clustering Analysis) : 그룹화를 통한 예측(그룹 특성 차이 분석-고객집단 이해)
: 데이터가 쭉 뿌려져 있을 때 레이블이 없다고 해도 데이터간 거리에 따라 대충 두 세개의 군집으로 이렇게 x만 가지고 군집을 학습하는 것을 군집화 라고 합니다.
군집 분석
– 종속변수(y변수)가 없는 데이터 마이닝 기법 – 유클리드 거리 기반 유사 객체 묶음 – 고객 DB -> 알고리즘 적용 -> 패턴 추출(rule) -> 근거리 모형으로 군집형성 – 계층적 군집분석(탐색적), 비계층적 군집분석(확인적) – 주요 알고리즘 : k-means, hierarchical
군집분석 특징
– 전체적인 데이터 구조를 파악하는데 이용 – 관측대상 간 유사성을 기초로 비슷한 것 끼리 그룹화(Clustering) – 유사성 = 유클리드 거리
유크리드 거리
: 유클리디안 거리(Euclidean distance)는 두 점 사이의 거리를 계산하는 방법으로, 이 거리를 이용하여 유클리드 공간을 정의
유클리드 거리 계산식
관측대상 p와 q의 대응하는 변량값의 차가 작으면, 두 관측대상은 유사하다고 정의하는 식
– 분석결과에 대한 가설 검정 없음(타당성 검증 방법 없음) – 분야 : 사회과학, 자연과학, 공학 분야 – 척도 : 등간, 비율척도(연속적인 양)
군집 구성법
– 그룹간의 유사성 계산 방법 – 최단거리법, 최장거리법, 메디안법, 중심법, 그룹평균법
군집화방법
– 계층 군집화 : 가장 가까운 대상끼리 순차적으로 묶음 – 비계층 군집화 : k-평균 군집법
1. 유클리디안 거리
실습) 유클리디안 거리 계산법
① matrix 객체 생성
x <- matrix(1:9, nrow=3, byrow = T) # nrow=3 : 3행으로 만듬, byrow = T : 열 중심 -> 행 중심
x
- 출력값 -
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
diamonds 데이터 셋 ggplot2 패키지에서 제공하는 데이터 셋으로, 약 5만4천개의 다이아몬드에 관한 속성을 기록한 데이터 셋으로 53,940개의 관측치와 10개의 변수로 구성되어 있다. 주요 변수에 대한 설명은 다음과 같다.
- 주요 변수 -
price : 다이아몬드 가격($326 ~ $18,823) carat : 다이아몬드 무게(0.2 ~ 5.01) cut : 컷의 품질(Fair, Good, Very Good, Premium, Ideal) color : 색상(J : 가장 나쁨 ~ D : 가장 좋음) clarity : 선명도(I1 : 가장 나쁨, SI1, SI2, VS1, VS2, VVS1, VVS2, IF : 가장 좋음) x : 길이(0~10.74mm), y : 폭(0~58.9mm), z : 깊이(0~31.8mm), depth : 깊이 비율 = z / mean(x, y)
① 군집분석에 사용할 변수 추출
install.packages("ggplot2", dependencies = T)
library(ggplot2)
data(diamonds)
dim(diamonds) 출력값 : [1] 53940 10
t <- sample(1 : nrow(diamonds),1000) # 1000개 데이터 샘플링
test <- diamonds[t, ] # 1000개 표본 추출
dim(test) 출력값 : 1000 10
head(test) # 검정 데이터
mydia <- test[c("price","carat", "depth", "table")] # 4개 칼럼만 선정
head(mydia)
② 계층적 군집분석(탐색적 분석)
result <- hclust(dist(mydia), method="average") # 평균거리 이용
result
plot(result, hang=-1) # hang : -1 이하 값 제거
– 인간 개입에 의한 분석 방법 – 종속 변수(y) 존재 : 입력 데이터에 정답 포함 – 분석 방법 : 가설검정(확률/통계) → 인문.사회.심리 계열(300년) – 분석 유형 : 회귀분석, 분류분석, 시계열 분석 → 추론통계 기반
분류분석(Decision Tree)
: 다수의 속성(attribute) 또는 변수를 갖는 객체를 사전에 정해진 그룹 또는 범주(class, category) 중의 하나로 분류하여 분석하는 방법입니다.
- 의사결정나무 (DecisionTree)
: 분류 모델링에 의해서 만들어진 규칙(rule)를 나무 모양으로 그리는 방법으로, 의사결정이 이뤄지는 시점과 성과를 한눈에 볼 수 있습니다.
의사결정나무(DecisionTree) 활용
- 세분화/분류 : 데이터를 비슷한 특성을 갖는 몇 개의 그룹 또는 몇 개의 등급으로 분할
- 예측 : 데이터에서 규칙을 찾아낸 후 이를 이용하여 미래의 사건을 예측
- 차원 축소 및 변수 선택 : 목표 변수에 큰 영향을 미치는 변수를 골라냄
- 변수들 간의 교호작용 (interactioneffect) 파악 - 목표 변수의 범주를 병합하거나 연속형 목표 변수를 이산화(binning)
- 활용분야 고객을 분류하는 변수, 규칙, 특성들을 찾아내고, 이를 토대로 미래 잠재 고객의 행동이나 반응을 예측하거나 유도하는데 활용
의사결정나무(DecisionTree) 특징
- 결과를 설명하기 쉽다.
- 모형을 만드는 방법이 계산적으로 복잡하지 않다.
- 대용량 데이터도 빠르게 처리할 수 있다.
- 비정상 잡음 데이터에 대해서 민감하지 않다.
- 불필요한 변수가 있어도 크게 영향받지 않는다.
의사결정나무(DecisionTree) 알고리즘
a. CART(ClassificationandRegressionTree)
- 가장 많이 활용되는 알고리즘.
- 목표 변수가 범주형, 연속형 모두 가능. 이진 분리.
- 불순도 측도는 범주형일 경우 지니 지수, 연속형인 경우 분산을 사용.
- 개별 입력변수 뿐만 아니라 입력변수들의 선형결합드 중에서 최적의 분리를 찾을 수 있다.
b. C4.5&C5.0
- 다지 분리(multiplesplit) 가능.
- 명목형 목표 변수.
- 불순도 측도는 엔트로피 지수 사용.
c. CHAID(Chi-squaredAutomaticInteractionDetection)
- 적당한 크기에서 나무모형의 성장을 중지.
- 연속형 목표변수.
- 불순도 측도는 카이제곱 통계량 사용.
분류분석의 특징
- 종속변수(y변수) 존재 - 종속변수 : 예측에 Focus을 두는 변수 - 비모수 검정 : 선형성, 정규성, 등분산성 가정 필요없음 - 단점 : 유의수준 판단 기준 없음(추론 기능 없음) - 규칙(Rule)을 기반으로 의사결정트리 생성
분류 분석 vs 군집 분석 - 분류 분석은 이미 각 계급(클러스터)이 어떻게 정의 되는지 알고 있음
분류분석 테스트 환경 – 전수 데이터를 대상으로 할 경우 error를 감안해서 학습데이터와 검정데이터로 분리 하여 테스트 – 학습데이터(전수데이터의 70%) -> 알고리즘 적용 -> rule 발견 – rule 적용 -> 검정데이터(전수데이터의 30%) -> 검정(validate)
표본의 통계량으로 모집단의 모수 추론 과정과 유사
구분
추론동계
데이터마이닝
데이터
표본
전수테이터
검정방법
통계량/추론
Rule/검증
의․생명분야에서 분류분석 사례
< 실습내용 >
: iris 데이터셋의 4개변수(Sepal Length,Sepal Width,Petal Length,Petal Width)값에 따라서 꽃의 종류(Species)가 분류되는 과정 알아보기
< 테스트 환경 > 전수 데이터를 대상으로 할 경우 error를 감안해서 학습데이터와 검증데이터로 분리 하여 테스트 한다. 학습데이터(훈련데이터) - (70%) -> 알고리즘 적용 rule 추출 -> 검정 테스트 (30%) -> 확인(validate) 데이터 표본의 통계량으로 모집단의 모수 추론과 유사함
– 인간 개입에 의한 분석 방법 – 종속 변수(y) 존재 : 입력 데이터에 정답 포함 – 분석 방법 : 가설검정(확률/통계) → 인문.사회.심리 계열(300년) – 분석 유형 : 회귀분석, 분류분석, 시계열 분석 → 추론통계 기반
회귀분석(Regression Analysis) - 인과 관계
: 여러 자료들 간의 관계성을 수학적으로 추정, 설명한다. 흔히들 통계학의 꽃이라고 합니다. 독립변인이 종속변인에 영향을 미치는지 알아보고자 할 때 실시하는 분석 방법입니다. 선형 회귀법, 로지스틱 회귀법이 대표적이며, 로지스틱 회귀법을 앙상블했다는 관점으로 보면 인공신경망도 여기에 해당한다고 합니다. 선형 회귀법은 지도학습의 회귀문제를 푸는 데에 쓰이고(새로운 값의 예측), 로지스틱 회귀법과 인공신경망은 지도학습의 분류문제를 푸는데에 주로 사용합니다.
- 결과값을 알려주고, 가설을 일차 함수로 정의한 것으로 데이터(독립변수)를 넣어서 분석 시킴
ex) y = ax + b / x( 독립 변수 : 영향을 주는 변수) , y ( 종속 변수 : 영향을 받는 변수 )
- 원인을 일으키는 x변수와 결과를 보여주는 y 변수의 관계
- 모든 데이터들은 선형성을 띈다.
y = ax + b : 입력받은 x와 y 값을 가지고 오차를 최소화하는 a와 b의 값 찾는 과정
회귀분석(regression analysis)은 생물학자 프랜시스 골턴(Francis Galton)이 '평균으로의 회귀'(regression to the mean / regression towards mediocrity) 현상을 증명하기 위해 만든 것으로 알려져 있다. '평균으로의 회귀'는 부모와 아이의 키를 측정했을 때 쉽게 상상할 수 없는 극단적인 값이 되어도, 그 다음에 새로 측정을 했을 때에는 평균에 더 가까워지는 (평균으로 회귀하는) 경향성을 보고 골턴이 일반화하기 위해서 쓴 용어다.
골턴은 부모와 그 자식의 키에 대한 자료를 만들어 205명의 부모와 그들의 자식 930명의 키에 대한 자료를 분석하여 회귀계수가 2/3임을 밝혔다. 가우스의 최소제곱법을 쓰지 않고 타원으로 적합시켜 회귀계수가 2/3임을 찾아낸 것이 특이하다. 즉, 키는 유전적인 요소가 강력하게 작용한다는 것을 밝힌 것이다. 골턴은 산점도에 최초로 선형식을 표현하여 오늘날의 회귀분석을 성립하는 데 지대한 공을 세웠다.
현대에 와서는 회귀(regress), 즉 평균으로 돌아간다는 의미는 거의 사라졌다. 요즘에는 독립변수와 종속변수를 설정 [1]하고 이들의 관계를 통계적으로 살펴보는 대부분의 방법론을 다 회귀분석이라고 부르기도 한다. 시계열 데이터를 사용하면 시계열 회귀분석이고 패널 자료를 사용하면 패널 회귀 분석인 식이다.
특징)
- 변수들 사이의 인과관계를 규명하고자 하는 분석방법이기 때문에 변수의 역할설정이 중요합니다.
(주의)
신문을 보는 시간이 TV를 시청하는 시간에 어떤 영향을 미치는가?’라는 물음에서 ‘신문을 보는 시간’은 원인변수에 해당하고 ‘TV를 시청하는 시간’은 결과변수입니다. 이를 뒤바꾸어 ‘TV를 시청하는 시간’을 원인변수 로 하고 ‘신문을 보는 시간’을 결과변수로 한다면 원래 의도했던 연구목적에 위배되는 것입니다.
특정 변수(독립변수)가 다른 변수(종속변수)에 어떠한 영향을 미치는가 (인과관계 분석) 예) 가격은 제품 만족도에 영향을 미치는가?
- 한 변수의 값으로 다른 변수의 값 예언
인과관계(因果關係) : 변수A가 변수B의 값이 변하는 원인이 되는 관계(변수A : 독립변수, 변수B : 종속변수)
결정계수(Coefficients) : R-squared -> 0 ~ 1 사이의 값을 갖는다. Multiple R-squared: 0.5881: 독립변수에 의해서 종속변수가 얼마만큼 설명되었는가? 설명력 -> 상관(결정)계수 : 58.8% 설명력 1에 가까울 수록 설명변수(독립변수)가 설명을 잘한다고 판단 모형의 변수 선정이 우수하다는 의미. Adjusted R-squared: 0.5865 : 조정된 R값(오차를 감안한 값)<- 이것으로 분석
최종 결론 : 제품 적절성은 제품 만족도에 정(正)의 영향을 미친다.
② 다중 회귀 분석(Multiple Regression Analysis)
: 여러 개 독립변수가 1개의 종속변수에 미치는 영향 분석
< 연구 가설 >
연구가설1(H1) : 음료수 제품의 적절성(독립변수1)은 제품 만족도(종속변수)에 정(正)의 영향을 미친다.
연구가설2(H1) : 음료수 제품의 친밀도(독립변수2)는 제품 만족도(종속변수)에 정(正)의 영향을 미친다.
x변수들끼리 계수값이 높을 수도 있다. -> 해당 변수 제거(모형 수정) <- Petal.width
실습 ② 데이터 셋 생성과 회귀모델 생성
- 학습데이터와 검정데이터 분류
x <- sample(1:nrow(iris), 0.7*nrow(iris)) # 전체중 70%만 추출 (1~150개 중에서 70%만 랜덤으로 출력)
train <- iris[x, ] # 학습데이터 추출(70%)
test <- iris[-x, ] # 검정데이터 추출(30%)
- 변수 제거 및 다중회귀분석 - Petal.width 변수를 제거한 후 회귀 분석 ( 학습데이터 이용 모델 생성 )
model <- lm(formula=Sepal.Length ~ Sepal.Width + Petal.Length, data=train)
- 회귀방정식 도출
model
head(train, 1)
- 출력값 -
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
70 5.6 2.5 3.9 1.1 versicolor
Y = 1.8347 + 0.7065 * 2.5 + 0.4890 * 3.9
Y 출력값 : 5.50805
- 예측치 생성 - predict()함수
pred <- predict(model, test) # x변수만 test에서 찾아서 값 예측
pred # test 데이터 셋의 y 예측치(회귀방정식 적용)
test$Sepal.Length # test 데이터 셋의 y 관측치
length(pred) 출력값 : 45 (개 벡터)
- 회귀모델 평가
cor(pred, test$Sepal.Length) 출력값 : 0.9346613
summary(pred); summary(test$Sepal.Length)
- 출력값 -
Min. 1st Qu. Median Mean 3rd Qu. Max.
4.095 5.068 6.133 5.966 6.687 7.796
Min. 1st Qu. Median Mean 3rd Qu. Max.
4.500 5.100 6.100 6.002 6.700 7.700
③ 로지스틱 회귀분석(Logistic Regression) - 분류 분석
목적 : 일반 회귀분석과 동일하게 종속변수와 독립변수 간의 관계를 나타내어 향후 예측 모델을 생성하는데 있습니다.
차이점 : 종속변수가 범주형 데이터를 대상으로 하며 입력 데이터가 주어졌을 때 해당 데이터의 결과가 특정 분류로 나눠지기 때문에 분류분석 방법으로 분류됩니다.
(종속변수(y)를 범주군으로 분류군으로 결과가 피드백 되어지는 분석법)
유형 : 이항형(종속변수가 2개 범주-Yes/No), 다항형(종속변수가 3개 이상 범주-iris 꽃 종류)
다항형 로지스틱 회귀분석 : nnet, rpart 패키지 이용 a : 0.6, b:0.3, c:0.1 -> a 분류
분야 : 의료, 통신, 기타 데이터마이닝
- 결과는 0이 아니면 1의 값으로, 두가지 분류군으로 구분지어서 어느 영역에 해당되는지 출력합니다.
선형회귀분석 vs 로지스틱 회귀분석 1. 로지스틱 회귀분석 결과는 0과 1로 나타난다.(이항형) 2. 정규분포(연속형) 대신에 이항분포(범주형)를 따른다. 3. 로직스틱 모형 적용 : 변수[-무한대, +무한대] -> 변수[0,1]사이에 있도록 하는 모형 -> 로짓변환 : 출력범위를 [0,1]로 조정 4. 종속변수가 2개 이상인 경우 더미 변수(dummy variable)로 변환하여 0과 1를 갖도록한다. 예) 혈액형 A인 경우 -> [1,0,0,0] AB(1) -> A,B,O(0)