1. Introduction

1857년 지방은행으로 출발해 급성장해온 산탄데르 은행은 유럽과 북남미 등지에 1만4000여 지점과 1억명 이상의 고객을 보유한 자산규모 기준 세계 15위 은행이다. 유로존 내에서 제일 큰 은행(시가총액 기준 스페인 최대 기업)이며, 남아메리카 사업부는 지역에서 두 번째로 크다.

산탄데르 은행은 국내 유수 은행과 같이 고객을 대상으로 예금, 적금, 대출, 신용카드, 자금 관리 및 보험 등 다양한 금융 상품을 판매하며 매출을 올린다. 은행은 자사의 금융 상품을 사용 중인 고객을 대상으로, 아직 고객이 사용하고 있지 않은 다른 금융 상품을 소개하여 고객의 만족도를 높임과 동시에 은행 매출을 올리고 싶어 한다.

고객을 만족시킬 수 있는 가장 좋은 상품 추천 방법은 은행의 숙련된 직원이 고객의 나이, 연봉, 자산, 결혼 유무, 거주 지역, 성격 등의 정보를 토대로 이상적인 자산 계획을 세워주고, 그에 알맞는 적절한 금융 상품을 추천해주는 것이다. 그러나, 매일 은행에 방문하는 고객 모두에게 알맞은 추천을 할 수 있는 숫자의 직원을 고용하는 것은 현실적으로 불가능에 가깝다. 산탄데르 은행은 매일 은행을 방문하는 몇만 명의 고객들 모두에게 1:1 맞춤 수준의 금융 상품을 추천하기 위하여 머신러닝 알고리즘을 사용하기로 했다.

1.1. Aim

산탄데르 은행은 고객의 다양한 재정적 의사결정을 돕기 위하여, 산탄데르 은행은 고객 맞춤형 상품 추천을 제공하려 한다. 현재의 은행 시스템은 소수의 고객에게만 다양한 상품 추천이 제공되고, 나머지 고객에게는 상품을 추천할 기회가 적어 불균등한 고객 경험으로 이어지고 있다. 고객의 과거 이력과 유사한 고객군들의 데이터를 기반으로 다음달에 해당 고객이 무슨 상품을 사용할지 예측하는 것이 목표이다.

더욱 더 효과적인 추천 시스템을 갖추게 된다면, 산탄데르는 고객이 인생의 어느 단계에 있든, 모든 고객의 개인적인 필요에 알맞는 상품을 추천하여 그들을 만족시킬 수 있을 것이다.

1) Data Analysis

- 자사의 금융 서비스를 이용하는 고객들의 특성 분석

2) Data Analytics

- 자사의 고객들을 대상으로 고객 맞춤형 상품 추천을 제공
    - 고객의 과거 이력과 유사한 고객군들의 데이터를 기반으로 다음달에 해당 고객이 무슨 상품을 사용할지 예측
    - 고객의 만족도를 높임과 동시에 은행 매출에 기여

1.2. Evaluation

고객이 신규로 이용할 상품이 무엇인지를 예측하는 것이 목표이다. ’신규 이용 상품’이란 지난달 기준으로 고객이 보유하고 있지 않은 금융 상품 중, 이번 달에 신규로 이용하게 되는 제품을 의미하는데, 가령, 6월까지 신용카드를 전혀 사용하지 않던 고객 A가 7월에 신용카드를 이용하게 되었다면, ’고객 A는 7월에 신용카드를 새로 이용한’것이다. 지난 달에 이미 보유하고 있는 제품을 지속해서 사용하는 것은 신규 이용으로 취급하지 않으며, 지난 달에 보유하고 있는 제품을 이번 달에 해지하는 것 또한 신규 이용으로 취급하지 않는다.

즉, 결과물은 ‘고객이 2016-05-28(지난 달) 시점에 보유하고 있지 않은 금융 상품 중, 2016-06-28(이번 달)에 구매할 것으로 예측되는 제품 상위 7개’이다. 평가척도는

Evaluated according to the Mean Average Precision at 7:

\[MAP@7(Mean Average Precision@7) = \frac{1}{|U|}\sum_{u=1}^{U}\frac{1}{min(m, 7)}\sum_{k=1}^{min(n,7)}P(k)\]

이다. Average Precision이란 예측 정확도의 평균을 의미한다. 예를 들어, 7개의 금융 제품을 예측하는 이번 경진대회에서 다음과 같은 예측을 했다고 가정 해보자. 1은 정답을, 0은 오답을 의미한다. 즉 예측한 첫 번째, 네 번째, 다섯 번째, 그리고 여섯 번째 금융 상품이 정답인 것이다.

# Prediction (예측 결과)
1 0 0 1 1 1 0

예측 결과물에 대한 정확도를 측정하면 다음과 같다. 첫 번째에는 1개를 예측했을 때의 정확도가 1/1 = 100%, 두 번째와 세 번째는 오답이므로 0%, 네 번째 예측 결과물이 정답인 경우에는 정확도가 2/4 = 50%인 것이다.

# Precision (예측 정확도)
1/1 0 0 2/4 3/5 4/6 0

예측 결과물의 Average Precision은 정확도의 합을 정답의 개수만큼 나눈 숫자이다. 여기서 중요한 것은 예측 개수인 7로 나누는 것이 아니라, 정답의 개수인 4로 정확도의 합을 나눈다는 것인데, 그러므로 이번 예측 결과물의 Average Precision은 0.69이다.

# Average Precision (예측 정확도의 평균)
(1/1 + 2/4 + 3/5 + 4/6) / 4 = 0.69

Mean Average Precision은 모든 예측 결과물의 Average Precision의 평균값을 의미한다. @7이 붇는 이유는 최대 7개의 금융 상품을 예측할 수 있다는 것을 의미한다. M A P @ 7는 예측의 순서에 매우 민감한 평가 척도이다. 정답을 앞쪽에 예측하는 것이 더 좋은 점수를 받을 수 있다는 뜻이다. 가령 앞에서와 같이 7개 예측 결과물 중 4개의 정답이 모두 첫 4개에 있다고 가정한다면, Average Precision은 최고 점수인 1이다.

# Prediction (예측 결과)
1 1 1 1 0 0 0

# Precision (예측의 정확도)
1/1 2/2 3/3 4/4 0 0 0

# Average Precision (예측 정확도의 평균)
(1/1 + 2/2 + 3/3 + 4/4) / 4 = 1.00

반대로, 4개의 정답이 모두 마지막 4개일 경우에는, Average Precision은 0.43이다.

# Prediction (예측 결과)
0 0 0 1 1 1 1

# Precision (예측의 정확도)
0 0 0 1/4 2/5 3/6 4/7

# Average Precision (예측 정확도의 평균)
(1/4 + 2/5 + 3/6 + 4/7) / 4 = 0.43

1.3. Data Description

- File descriptions

train.csv - the training set
test.csv - the test set
sample_submission.csv - a sample submission file in the correct format

- Data fields

  • 총 48개의 변수명은 발음하기 난해한 스페인어로 구성되어 있으며, 총 24개의 고객 관련 변수(#1~#24)와 24개의 금융 상품 변수(#25~#48)로 구성되어 있다.
idx Column Name Description
1 fecha_dato 날짜
2 ncodpers 고객 고유 식별 번호
3 ind_empleado 고용 지표 (A: active, B: ex employed, F: filial, N: not employee, P: pasive)
4 pais_residencia 고객 거주 국가
5 sexo 성별
6 age 나이
7 fecha_alta 고객이 은행과 첫 계약을 체결한 날짜
8 ind_nuevo 신규 고객 지표 (6개월 이내 신규 고객일 경우 = 1)
9 antiguedad 은행 거래 누적 기간 (월)
10 indrel 고객 등급 (1: 1등급 고객, 99: 해당 달에 고객 1등급이 해제되는 1등급 고객)
11 ult_fec_cli_1t 1등급 고객으로서 마지막 날짜
12 indrel_1mes 월초 기준 고객 등급 (1: First/Primary customer, 2: co-owner, P : Potential, 3: former primary, 4: former co-owner)
13 tiprel_1mes 월초 기준 고객 관계 유형 (A: active, I: inactive, P: former customer, R: Potential)
14 indresi 거주 지표 (고객의 거주 국가와 은행이 위치한 국가 동일 여부, S: Yes or N: No)
15 indext 외국인 지표 (고객이 태어난 국가와 은행이 위치한 국가 동일 여부, S: Yes or N: No)
16 conyuemp 배우자 지표 (1 : 은행 직원을 배우자로 둔 고객)
17 canal_entrada 고객 유입 채널
18 indfall 고객 사망 여부 (S: Yes or S: No)
19 tipodom 주소 유형 (1: primary address)
20 cod_prov 지방 코드 (고객 주소 기반)
21 nomprov 지방 이름
22 ind_actividad_cliente 활동 지표 (1: active customer, 0: inactive customer)
23 renta 가구 총수입
24 segmento 분류 (01: VIP, 02: Individuals, 03: college graduated)
25 ind_ahor_fin_ult1 예금
26 ind_aval_fin_ult1 보증
27 ind_cco_fin_ult1 당좌 예금
28 ind_cder_fin_ult1 파생 상품 계좌
29 ind_cno_fin_ult1 급여 계정
30 ind_ctju_fin_ult1 청소년 계정
31 ind_ctma_fin_ult1 마스 특별 계정 (Más particular Account)
32 ind_ctop_fin_ult1 특정 계정 (particular Account)
33 ind_ctpp_fin_ult1 특정 플러스 계정 (particular Plus Account)
34 ind_deco_fin_ult1 단기 예금
35 ind_deme_fin_ult1 중기 에금
36 ind_dela_fin_ult1 장기 예금
37 ind_ecue_fin_ult1 온라인 계정(e-account)
38 ind_fond_fin_ult1 펀드
39 ind_hip_fin_ult1 부동산 대출
40 ind_plan_fin_ult1 연금
41 ind_pres_fin_ult1 대출
42 ind_reca_fin_ult1 세금
43 ind_tjcr_fin_ult1 신용카드
44 ind_valo_fin_ult1 증권
45 ind_viv_fin_ult1 집 계정(Home Account)
46 ind_nomina_ult1 급여
47 ind_nom_pens_ult1 연금
48 ind_recibo_ult1 직불 카드

2. Collect the data

- Load libraries

suppressPackageStartupMessages({
library(data.table)
library(dplyr)
library(tidyr)
library(lubridate)
library(DT)
library(caret)
library(ggplot2)
library(corrplot)
library(ggthemes)
})

rm(list=ls())

- ggplot2 Theme Trick

fillColor = "#FFA07A"
fillColor2 = "#F1C40F"

my_theme <- theme_bw() +
  theme(axis.title=element_text(size=24),
        plot.title=element_text(size=36),
        axis.text =element_text(size=16))

my_theme_dark <- theme_dark() +
  theme(axis.title=element_text(size=24),
        plot.title=element_text(size=36),
        axis.text =element_text(size=16))

- Read the data

set.seed(1)
df           <- fread("./input/train_ver2.csv", nrows=-1)

- Sampling

  • 100,000명의 고객 샘플링
    • Python 에서는 모든 고객들을 대상으로 EDA와 모델링할 수 있으나, R은 인메모리(메모리를 모두 활용하는) 방식이라 하드웨어가 정말 좋든지, 아니면 AWS로 서버를 대여해서 활용해야 한다.
    • 일단 R로 샘플링 한 다음에, Python으로 전체 분석을 진행하고, R 전체 분석은 AWS로 진행할 예정이다.
unique.id    <- unique(df$ncodpers)
limit.people <- 10e4 #3.5e5
unique.id    <- unique.id[sample(length(unique.id),limit.people)]
df           <- df[df$ncodpers %in% unique.id,]

3. Exploratory Data Analysis

탐색적 데이터 분석(EDA)은 크게 두 가지 작업으로 분류할 수 있다.

1) 기초 통계를 통하여 Raw Data를 분석
2) 시각화를 통해 Raw Data를 분석

3.1. EDA 1 : Preview the Data

3.1.1. Table

- Data size

dim(df)
## [1] 1425784      48

- Data table

datatable(head(df, 100), style="bootstrap", class="table-condensed", options = list(dom = 'tp', scrollX = TRUE, search=''))

3.1.2. Summary Note

training dataset에 다양한 유형의 변수가 존재하는 것을 볼 수 있다. “2015-01-28”와 같은 날짜 변수, “1375586”과 같은 고객 고유 식별 번호를 의미하는 수치형 변수, “N”, “ES”, “H”와 같은 범주형 문자열 변수, “NaN”으로 출력되는 결측값, 후반부에는 “ind_…”로 시작하는 변수 다수가 0값을 가지고 있는 것을 확인할 수 있다.


3.2. EDA 2 : Basic Statistics

3.2.1. Table

- 기초 통계량으로 데이터 확인

str(df)
## Classes 'data.table' and 'data.frame':   1425784 obs. of  48 variables:
##  $ fecha_dato           : chr  "2015-01-28" "2015-01-28" "2015-01-28" "2015-01-28" ...
##  $ ncodpers             : int  1050613 1050617 1050621 1050627 1050632 1050514 1050491 1050492 1050497 1050499 ...
##  $ ind_empleado         : chr  "N" "N" "N" "N" ...
##  $ pais_residencia      : chr  "ES" "ES" "ES" "ES" ...
##  $ sexo                 : chr  "H" "H" "V" "H" ...
##  $ age                  : int  22 23 23 23 23 28 23 25 23 23 ...
##  $ fecha_alta           : chr  "2012-08-10" "2012-08-10" "2012-08-10" "2012-08-10" ...
##  $ ind_nuevo            : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ antiguedad           : int  35 35 35 35 35 35 35 35 35 35 ...
##  $ indrel               : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ ult_fec_cli_1t       : chr  "" "" "" "" ...
##  $ indrel_1mes          : chr  "1" "1" "1" "1" ...
##  $ tiprel_1mes          : chr  "I" "A" "I" "I" ...
##  $ indresi              : chr  "S" "S" "S" "S" ...
##  $ indext               : chr  "N" "N" "N" "N" ...
##  $ conyuemp             : chr  "" "" "" "" ...
##  $ canal_entrada        : chr  "KHD" "KHE" "KHE" "KHE" ...
##  $ indfall              : chr  "N" "N" "N" "N" ...
##  $ tipodom              : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ cod_prov             : int  50 50 50 13 8 8 45 45 45 8 ...
##  $ nomprov              : chr  "ZARAGOZA" "ZARAGOZA" "ZARAGOZA" "CIUDAD REAL" ...
##  $ ind_actividad_cliente: int  0 1 0 0 0 0 0 1 0 0 ...
##  $ renta                : num  119776 113317 72576 65608 289211 ...
##  $ segmento             : chr  "03 - UNIVERSITARIO" "03 - UNIVERSITARIO" "03 - UNIVERSITARIO" "03 - UNIVERSITARIO" ...
##  $ ind_ahor_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_aval_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_cco_fin_ult1     : int  0 1 1 1 1 1 1 1 1 1 ...
##  $ ind_cder_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_cno_fin_ult1     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_ctju_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_ctma_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_ctop_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_ctpp_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_deco_fin_ult1    : int  1 0 0 0 0 0 0 0 0 0 ...
##  $ ind_deme_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_dela_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_ecue_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_fond_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_hip_fin_ult1     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_plan_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_pres_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_reca_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_tjcr_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_valo_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_viv_fin_ult1     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_nomina_ult1      : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_nom_pens_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_recibo_ult1      : int  0 0 0 0 0 0 0 0 0 0 ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(df)
##   fecha_dato           ncodpers       ind_empleado      
##  Length:1425784     Min.   :  15922   Length:1425784    
##  Class :character   1st Qu.: 453470   Class :character  
##  Mode  :character   Median : 931266   Mode  :character  
##                     Mean   : 834734                     
##                     3rd Qu.:1198261                     
##                     Max.   :1553688                     
##                                                         
##  pais_residencia        sexo                age          fecha_alta       
##  Length:1425784     Length:1425784     Min.   :  2.00   Length:1425784    
##  Class :character   Class :character   1st Qu.: 24.00   Class :character  
##  Mode  :character   Mode  :character   Median : 39.00   Mode  :character  
##                                        Mean   : 40.18                     
##                                        3rd Qu.: 50.00                     
##                                        Max.   :164.00                     
##                                        NA's   :2773                       
##    ind_nuevo        antiguedad            indrel       ult_fec_cli_1t    
##  Min.   :0.0000   Min.   :-999999.0   Min.   : 1.000   Length:1425784    
##  1st Qu.:0.0000   1st Qu.:     23.0   1st Qu.: 1.000   Class :character  
##  Median :0.0000   Median :     50.0   Median : 1.000   Mode  :character  
##  Mean   :0.0597   Mean   :     67.4   Mean   : 1.181                     
##  3rd Qu.:0.0000   3rd Qu.:    135.0   3rd Qu.: 1.000                     
##  Max.   :1.0000   Max.   :    256.0   Max.   :99.000                     
##  NA's   :2773     NA's   :2773        NA's   :2773                       
##  indrel_1mes        tiprel_1mes          indresi         
##  Length:1425784     Length:1425784     Length:1425784    
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
##                                                          
##                                                          
##     indext            conyuemp         canal_entrada     
##  Length:1425784     Length:1425784     Length:1425784    
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
##                                                          
##                                                          
##    indfall             tipodom        cod_prov       nomprov         
##  Length:1425784     Min.   :1      Min.   : 1.00   Length:1425784    
##  Class :character   1st Qu.:1      1st Qu.:15.00   Class :character  
##  Mode  :character   Median :1      Median :28.00   Mode  :character  
##                     Mean   :1      Mean   :26.54                     
##                     3rd Qu.:1      3rd Qu.:34.00                     
##                     Max.   :1      Max.   :52.00                     
##                     NA's   :2774   NA's   :9935                      
##  ind_actividad_cliente     renta            segmento        
##  Min.   :0.0000        Min.   :    2336   Length:1425784    
##  1st Qu.:0.0000        1st Qu.:   68731   Class :character  
##  Median :0.0000        Median :  101956   Mode  :character  
##  Mean   :0.4552        Mean   :  133917                     
##  3rd Qu.:1.0000        3rd Qu.:  156148                     
##  Max.   :1.0000        Max.   :25547252                     
##  NA's   :2773          NA's   :292921                       
##  ind_ahor_fin_ult1   ind_aval_fin_ult1  ind_cco_fin_ult1
##  Min.   :0.0000000   Min.   :0.00e+00   Min.   :0.0000  
##  1st Qu.:0.0000000   1st Qu.:0.00e+00   1st Qu.:0.0000  
##  Median :0.0000000   Median :0.00e+00   Median :1.0000  
##  Mean   :0.0001213   Mean   :3.23e-05   Mean   :0.6563  
##  3rd Qu.:0.0000000   3rd Qu.:0.00e+00   3rd Qu.:1.0000  
##  Max.   :1.0000000   Max.   :1.00e+00   Max.   :1.0000  
##                                                         
##  ind_cder_fin_ult1  ind_cno_fin_ult1  ind_ctju_fin_ult1 
##  Min.   :0.000000   Min.   :0.00000   Min.   :0.000000  
##  1st Qu.:0.000000   1st Qu.:0.00000   1st Qu.:0.000000  
##  Median :0.000000   Median :0.00000   Median :0.000000  
##  Mean   :0.000317   Mean   :0.07895   Mean   :0.009525  
##  3rd Qu.:0.000000   3rd Qu.:0.00000   3rd Qu.:0.000000  
##  Max.   :1.000000   Max.   :1.00000   Max.   :1.000000  
##                                                         
##  ind_ctma_fin_ult1  ind_ctop_fin_ult1 ind_ctpp_fin_ult1 ind_deco_fin_ult1 
##  Min.   :0.000000   Min.   :0.0000    Min.   :0.00000   Min.   :0.000000  
##  1st Qu.:0.000000   1st Qu.:0.0000    1st Qu.:0.00000   1st Qu.:0.000000  
##  Median :0.000000   Median :0.0000    Median :0.00000   Median :0.000000  
##  Mean   :0.009984   Mean   :0.1292    Mean   :0.04333   Mean   :0.001671  
##  3rd Qu.:0.000000   3rd Qu.:0.0000    3rd Qu.:0.00000   3rd Qu.:0.000000  
##  Max.   :1.000000   Max.   :1.0000    Max.   :1.00000   Max.   :1.000000  
##                                                                           
##  ind_deme_fin_ult1  ind_dela_fin_ult1 ind_ecue_fin_ult1 ind_fond_fin_ult1
##  Min.   :0.000000   Min.   :0.00000   Min.   :0.00000   Min.   :0.00000  
##  1st Qu.:0.000000   1st Qu.:0.00000   1st Qu.:0.00000   1st Qu.:0.00000  
##  Median :0.000000   Median :0.00000   Median :0.00000   Median :0.00000  
##  Mean   :0.001911   Mean   :0.04295   Mean   :0.08159   Mean   :0.01765  
##  3rd Qu.:0.000000   3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.00000  
##  Max.   :1.000000   Max.   :1.00000   Max.   :1.00000   Max.   :1.00000  
##                                                                          
##  ind_hip_fin_ult1   ind_plan_fin_ult1  ind_pres_fin_ult1 ind_reca_fin_ult1
##  Min.   :0.000000   Min.   :0.000000   Min.   :0.0000    Min.   :0.00000  
##  1st Qu.:0.000000   1st Qu.:0.000000   1st Qu.:0.0000    1st Qu.:0.00000  
##  Median :0.000000   Median :0.000000   Median :0.0000    Median :0.00000  
##  Mean   :0.005708   Mean   :0.009137   Mean   :0.0025    Mean   :0.05188  
##  3rd Qu.:0.000000   3rd Qu.:0.000000   3rd Qu.:0.0000    3rd Qu.:0.00000  
##  Max.   :1.000000   Max.   :1.000000   Max.   :1.0000    Max.   :1.00000  
##                                                                           
##  ind_tjcr_fin_ult1 ind_valo_fin_ult1 ind_viv_fin_ult1   ind_nomina_ult1 
##  Min.   :0.00000   Min.   :0.00000   Min.   :0.000000   Min.   :0.0000  
##  1st Qu.:0.00000   1st Qu.:0.00000   1st Qu.:0.000000   1st Qu.:0.0000  
##  Median :0.00000   Median :0.00000   Median :0.000000   Median :0.0000  
##  Mean   :0.04273   Mean   :0.02477   Mean   :0.003769   Mean   :0.0534  
##  3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.000000   3rd Qu.:0.0000  
##  Max.   :1.00000   Max.   :1.00000   Max.   :1.000000   Max.   :1.0000  
##                                                         NA's   :1479    
##  ind_nom_pens_ult1 ind_recibo_ult1 
##  Min.   :0.0000    Min.   :0.0000  
##  1st Qu.:0.0000    1st Qu.:0.0000  
##  Median :0.0000    Median :0.0000  
##  Mean   :0.0579    Mean   :0.1259  
##  3rd Qu.:0.0000    3rd Qu.:0.0000  
##  Max.   :1.0000    Max.   :1.0000  
##  NA's   :1479

3.2.2. Summary Note

- Variables

  • fecha_dato
    • 날짜를 기록하는 fecha_dato 변수는 날짜 전용 data type(datetime)이 아닌 object이다.
  • age
    • 고객의 나이를 기록하는 age 변수는 정수값을 가지는 것 같지만, data type이 object다. 전처리 과정에서 정수값으로의 변환이 필요하다.
  • renta
    • 가구 총수입을 나타내는 renta 변수는 소수값을 가지며, 5번째 열에서는 NaN(Not a Number) 값을 가진다. 현실에서 사용되는 데이터에서는 이와 같이 다수의 결측값이 존재하며, 결측값에 대한 변환도 전처리 과정에서 수행한다.
  • ncodpers
    • 15,889~1,553,689의 값을 갖는 고객 고유 식별 번호
  • ind_nuevo
    • 최소 75%의 값이 0이며, 나머지 값 1을 갖는 신규 고객 지표이다.
  • indrel
    • 최소 75%의 값이 1이며, 나머지가 값 99를 가지는 고객 등급 변수이다.
  • tipdom
    • 모든 값이 1인 주소 유형 변수. 이러한 변수는 학습에 도움이 되지 않는 변수이다. 모든 값이 상수일 경우에는 변수로서 식별력을 가질 수 없기 때문이다.
  • cod_prov
    • 1~52의 값을 가지며, 수치형이지만 범주형 변수로서 의미를 가지는 지방 코드 변수이다.
  • ind_actividad_cliente
    • 최소 50%의 값이 0이며, 나머지가 값 1을 가지는 활동성 지표이다.
  • renta
    • 1202.73~28,894,400의 값을 가지는 전형적인 수치형 변수, 가구 총 수입을 나타낸다.

- Etc.

  • 데이터 크기
    • 약 1,367만(13,647,309)개의 고객 금융 정보가 존재하며, 고객마다 48개의 변수가 존재한다.
  • 변수
    • 총 48개의 변수명은 발음하기 난해한 스페인어로 구성되어 있는 것을 확인할 수 있다.
    • 24개의 고객 관련 변수(#1~#24)와 24개의 금융 상품 변수(#25~#48)로 구성되어 있다.
  • 데이터 타입
    • 기계학습을 위해서는 Training data의 data type이 모두 int 혹은 float이어야 한다. 그 외 데이터 타입은 입력으로 받을 수 없다. 그러므로, 전처리 과정에서 훈련 데이터에 있는 변수를 머신러닝 모델 학습 전에 적절하게 변환해야 한다.
  • 메모리
    • csv file의 용량은 2.2GB이지만, memory는 4.9GB 이상 차지한다.
      • 불필요한 변수명을 제거하거나, 데이터 타입을 적절하게 변경해주면 효율적으로 사용할 수 있음
      • R의 경우 인메모리 방식이라 로컬 머신이 좋지 않은 이상 구동하기 어려움.
        • 대안으로 AWS와 연동해서 로컬 대신 서버로 돌려야할 듯 싶음.

3.3. EDA 3 : Exploring categorical variables

이번에는 24개의 고객 변수 중, 나머지 17개의 변수인 범주형 변수(fecha_dato, ind_empleado, pais_residencia, sexo, age, fecha_alta, antiguedad, ult_fec_cli_1t,
indrel_1mes, tiprel_1mes, indresi, indext, conyuemp, canal_entrada, indfall, nomprov, segmento)를 살펴보겠다.

3.3.1. number of numeric & factor variables (수치형/ 범주형 변수)

df2 <- df

df2$fecha_dato <- as.factor(df2$fecha_dato)
df2$ind_empleado <- as.factor(df2$ind_empleado)
df2$pais_residencia <- as.factor(df2$pais_residencia)
df2$sexo <- as.factor(df2$sexo)
df2$age <- as.factor(df2$age)
df2$fecha_alta <- as.factor(df2$fecha_alta)
df2$antiguedad <- as.factor(df2$antiguedad)
df2$ult_fec_cli_1t <- as.factor(df2$ult_fec_cli_1t)
df2$indrel_1mes <- as.factor(df2$indrel_1mes)
df2$tiprel_1mes <- as.factor(df2$tiprel_1mes)
df2$indresi <- as.factor(df2$indresi)
df2$indext <- as.factor(df2$indext)
df2$conyuemp <- as.factor(df2$conyuemp)
df2$canal_entrada <- as.factor(df2$canal_entrada)
df2$indfall <- as.factor(df2$indfall)
df2$nomprov <- as.factor(df2$nomprov)
df2$segmento <- as.factor(df2$segmento)

is.fact <- sapply(df2, is.factor)
df.factor <- Filter(is.factor, df2)

str(df.factor)
## Classes 'data.table' and 'data.frame':   1425784 obs. of  17 variables:
##  $ fecha_dato     : Factor w/ 17 levels "2015-01-28","2015-02-28",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ ind_empleado   : Factor w/ 6 levels "","A","B","F",..: 5 5 5 5 5 5 5 5 5 5 ...
##  $ pais_residencia: Factor w/ 65 levels "","AE","AO","AR",..: 23 23 23 23 23 23 23 23 23 23 ...
##  $ sexo           : Factor w/ 3 levels "","H","V": 2 2 3 2 2 2 3 3 2 2 ...
##  $ age            : Factor w/ 117 levels "2","3","4","5",..: 21 22 22 22 22 27 22 24 22 22 ...
##  $ fecha_alta     : Factor w/ 6203 levels "","1995-01-16",..: 5086 5086 5086 5086 5086 5086 5086 5086 5086 5086 ...
##  $ antiguedad     : Factor w/ 258 levels "-999999","0",..: 37 37 37 37 37 37 37 37 37 37 ...
##  $ ult_fec_cli_1t : Factor w/ 224 levels "","2015-07-01",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ indrel_1mes    : Factor w/ 10 levels "","1","1.0","2",..: 2 2 2 2 2 2 2 2 2 2 ...
##  $ tiprel_1mes    : Factor w/ 5 levels "","A","I","P",..: 3 2 3 3 3 3 3 2 3 3 ...
##  $ indresi        : Factor w/ 3 levels "","N","S": 3 3 3 3 3 3 3 3 3 3 ...
##  $ indext         : Factor w/ 3 levels "","N","S": 2 2 2 2 2 3 2 2 3 2 ...
##  $ conyuemp       : Factor w/ 2 levels "","N": 1 1 1 1 1 1 1 1 1 1 ...
##  $ canal_entrada  : Factor w/ 142 levels "","004","007",..: 132 133 133 133 133 133 133 133 133 133 ...
##  $ indfall        : Factor w/ 3 levels "","N","S": 2 2 2 2 2 2 2 2 2 2 ...
##  $ nomprov        : Factor w/ 53 levels "","ALAVA","ALBACETE",..: 53 53 53 18 10 10 49 49 49 10 ...
##  $ segmento       : Factor w/ 4 levels "","01 - TOP",..: 4 4 4 4 4 4 4 4 4 4 ...
summary(df.factor)
##       fecha_dato     ind_empleado pais_residencia   sexo      
##  2016-05-28: 97332    :   2773    ES     :1415867    :  2773  
##  2016-04-28: 97013   A:    255           :   2773   H:647320  
##  2016-03-28: 96691   B:    271    FR     :    748   V:775691  
##  2016-02-28: 96235   F:    292    AR     :    629             
##  2016-01-28: 95823   N:1422176    GB     :    450             
##  2015-12-28: 95327   S:     17    DE     :    436             
##  (Other)   :847363                (Other):   4881             
##       age               fecha_alta        antiguedad     
##  23     :  81923   2014-07-28:   6100   12     :  25172  
##  22     :  77000   2014-10-03:   5431   21     :  21683  
##  24     :  76359   2014-08-04:   4719   10     :  21361  
##  21     :  69584   2013-08-03:   3640   9      :  18678  
##  25     :  49736   2013-10-14:   3545   33     :  18424  
##  (Other):1068409             :   2773   (Other):1317693  
##  NA's   :   2773   (Other)   :1399576   NA's   :   2773  
##     ult_fec_cli_1t     indrel_1mes     tiprel_1mes indresi     indext     
##            :1423159   1.0    :951728    : 15582     :   2773    :   2773  
##  2015-12-24:     80   1      :457722   A:643073    N:   7144   N:1354824  
##  2015-07-07:     56          : 15582   I:766526    S:1415867   S:  68187  
##  2015-07-15:     55   3.0    :   324   P:   502                           
##  2015-12-28:     50   3      :   154   R:   101                           
##  2015-07-17:     48   P      :   101                                      
##  (Other)   :   2336   (Other):   173                                      
##  conyuemp    canal_entrada    indfall          nomprov      
##   :1425606   KHE    :423930    :   2773   MADRID   :461432  
##  N:    178   KAT    :340723   N:1419319   BARCELONA:134847  
##              KFC    :322148   S:   3692   VALENCIA : 71188  
##              KHQ    : 62371               SEVILLA  : 61494  
##              KFA    : 42887               CORUÑA, A: 45894  
##              KHK    : 24562               MURCIA   : 41544  
##              (Other):209163               (Other)  :609385  
##                segmento     
##                    : 20052  
##  01 - TOP          : 57061  
##  02 - PARTICULARES :832166  
##  03 - UNIVERSITARIO:516505  
##                             
##                             
## 

3.3.2. Summary Note

  • count : 해당 변수의 유효한 데이터 개수를 의미한다. 13,647,309보다 작을 때, 그만큼의 결측값이 존재한다는 뜻이다. 특히 ult_fec_cli_1t는 count가 24,793 밖에 확인되지 않으며, 결측값이 대부분임을 확인할 수 있다.
  • unique : 해당 범주형 변수의 고유값 개수를 의미한다. 성별 변수 ’sexo’에는 고유값이 2개이다.
  • top : 가장 빈도가 높은 데이터가 표시된다. 나이 변수 ’age’에서 최빈값은 23세이다.
  • freq : top에서 표시된 최빈 데이터의 빈도수를 의미한다. 총 데이터 수를 의미하는 count 대비 최빈값이 어느 정도인지에 따라 범주형 데이터의 분포를 가늠할 수 있다. 예를 들어 고용 지표 변수인 ind_empleado는 5개의 고유값 중, 가장 빈도가 높은 ‘N’ 데이터가 전체의 99.9% 가량(13,610,977 / 13,619,575)을 차지하며, 데이터가 매우 편중되어 있음을 확인할 수 있다.

여기서 주의해야 할 것이 하나 있는데 나이를 의미하는 ’age’변수는 수치형이 아니라 범주형으로 분류되어 있다는 것이다. 그 외, 은행 누적 거래 기간을 나타내는 ’antiguedad’도 수치형으로 분류되어야 한다. 원본 데이터에는 이와 같이 수치형 데이터가 범주형으로 분류되어 있기 때문에, 전처리 과정에서 수치형으로 변환해야 한다.

3.4. EDA 4 : Output of categorical variable eigenvalues

3.4.1. Output of categorical variable eigenvalues

- Variable별 Unique한 값 찾기

for (name in names(df.factor)){
  print(sprintf("Unique values for %s:", name))
  print(unique(df[[name]]))
  cat('\n')
  }
## [1] "Unique values for fecha_dato:"
##  [1] "2015-01-28" "2015-02-28" "2015-03-28" "2015-04-28" "2015-05-28"
##  [6] "2015-06-28" "2015-07-28" "2015-08-28" "2015-09-28" "2015-10-28"
## [11] "2015-11-28" "2015-12-28" "2016-01-28" "2016-02-28" "2016-03-28"
## [16] "2016-04-28" "2016-05-28"
## 
## [1] "Unique values for ind_empleado:"
## [1] "N" ""  "F" "B" "A" "S"
## 
## [1] "Unique values for pais_residencia:"
##  [1] "ES" ""   "AT" "GB" "MX" "DO" "CO" "CH" "HN" "FR" "IT" "GT" "MA" "SN"
## [15] "BE" "CN" "RO" "BR" "BG" "DE" "PT" "AR" "IE" "US" "RU" "EC" "KE" "MD"
## [29] "IL" "TR" "AO" "PA" "DK" "CA" "CU" "GE" "PE" "CR" "BO" "VE" "QA" "JP"
## [43] "SK" "GR" "TH" "FI" "SE" "NL" "NG" "CL" "PY" "GW" "AE" "PL" "CZ" "KR"
## [57] "UY" "IN" "PR" "TW" "BA" "NO" "ZA" "KZ" "LT"
## 
## [1] "Unique values for sexo:"
## [1] "H" "V" "" 
## 
## [1] "Unique values for age:"
##   [1]  22  23  28  25  63  24  38  26  57  48  54  27  29  44  31  12   8
##  [18]  83   9  60  36  30  37  33  42  35  11  41  34  55  50  NA  52  40
##  [35]  43  67  53  46   7  32  39  47  58  75  56  72  71  62  79  93   5
##  [52]  45  84  49  59  61  51  64  13  69  68  73  66  14  19  74  81  86
##  [69]  15  21  85  94  89  70  88   6  82  16  65  80  90  20  10  78  77
##  [86]   4  96  76  17  97  91  87  92 106  18 103  95   3   2  98 115  99
## [103] 102 105 101 104 100 112 107 113 110 109 163 111 108 116 114 164
## 
## [1] "Unique values for fecha_alta:"
##    [1] "2012-08-10" "2012-08-16" "2012-08-14" "2012-08-17" "2012-08-13"
##    [6] "2012-08-09" ""           "2012-09-05" "2012-09-04" "2012-09-06"
##   [11] "2012-09-03" "2012-08-31" "2012-09-07" "2012-09-11" "2012-09-10"
##   [16] "2012-08-22" "2012-08-21" "2012-08-23" "2014-01-28" "2012-08-20"
##   [21] "2012-08-29" "2012-08-30" "2012-10-11" "2012-08-27" "2012-08-24"
##   [26] "2012-08-28" "2012-08-06" "2012-08-07" "2014-12-10" "2013-11-20"
##   [31] "2012-08-03" "2012-08-08" "2012-09-24" "2012-09-21" "2012-09-25"
##   [36] "2012-09-20" "2012-10-17" "2012-09-27" "2012-09-26" "2012-10-02"
##   [41] "2014-01-27" "2012-10-31" "2012-09-13" "2012-09-12" "2012-09-14"
##   [46] "2014-02-17" "2012-09-19" "2012-09-18" "2012-09-17" "2013-01-31"
##   [51] "2012-07-19" "2012-07-18" "2013-09-19" "2012-07-17" "2012-07-16"
##   [56] "2014-11-24" "2012-07-13" "2012-07-23" "2012-07-24" "2012-07-20"
##   [61] "2014-04-04" "2012-07-12" "2012-05-18" "2012-11-12" "2014-12-09"
##   [66] "2012-05-17" "2012-05-21" "2012-05-14" "2012-05-13" "2012-05-11"
##   [71] "2012-05-16" "2014-11-20" "2012-05-15" "2012-05-29" "2012-05-30"
##   [76] "2013-03-22" "2012-05-28" "2012-05-31" "2012-06-01" "2012-05-23"
##   [81] "2012-05-24" "2012-05-22" "2012-05-25" "2012-04-27" "2012-04-26"
##   [86] "2013-10-29" "2012-04-30" "2012-05-02" "2012-04-24" "2012-04-23"
##   [91] "2012-04-25" "2012-05-09" "2012-05-08" "2012-05-10" "2012-05-04"
##   [96] "2012-05-03" "2012-05-07" "2012-07-03" "2012-07-02" "2012-06-29"
##  [101] "2012-07-04" "2012-06-27" "2012-06-26" "2012-06-28" "2012-07-10"
##  [106] "2012-07-11" "2012-07-09" "2012-07-05" "2012-07-06" "2012-06-08"
##  [111] "2012-06-11" "2012-06-07" "2014-09-03" "2012-06-13" "2013-04-15"
##  [116] "2012-06-12" "2012-06-04" "2012-06-06" "2012-06-05" "2012-06-21"
##  [121] "2012-06-22" "2012-06-20" "2012-06-25" "2012-06-15" "2012-06-17"
##  [126] "2012-06-18" "2015-01-06" "2012-06-14" "2012-06-19" "2012-08-01"
##  [131] "2012-07-31" "2012-07-30" "2012-08-02" "2012-10-01" "2012-07-25"
##  [136] "2012-07-26" "2012-07-28" "2012-07-29" "2012-07-27" "2012-11-26"
##  [141] "2012-11-23" "2012-11-27" "2012-11-28" "2012-11-21" "2012-11-20"
##  [146] "2012-11-22" "2012-12-04" "2012-12-03" "2012-12-05" "2012-12-07"
##  [151] "2012-11-29" "2012-11-30" "2012-12-10" "2012-11-13" "2012-11-07"
##  [156] "2012-11-08" "2012-11-09" "2012-11-16" "2012-11-19" "2012-11-14"
##  [161] "2012-11-15" "2013-05-13" "2013-03-04" "2013-03-05" "2013-03-01"
##  [166] "2013-03-06" "2013-03-07" "2013-02-26" "2013-02-25" "2013-02-28"
##  [171] "2013-02-27" "2013-07-11" "2013-03-18" "2013-05-10" "2013-03-14"
##  [176] "2013-03-19" "2013-03-15" "2013-03-20" "2013-03-21" "2013-03-11"
##  [181] "2013-12-30" "2013-03-08" "2013-03-13" "2013-03-12" "2013-02-06"
##  [186] "2013-02-07" "2013-02-05" "2013-02-11" "2013-02-08" "2013-02-01"
##  [191] "2013-01-30" "2013-02-04" "2013-09-11" "2013-02-19" "2013-02-20"
##  [196] "2013-02-18" "2013-02-22" "2013-02-21" "2013-02-12" "2013-02-13"
##  [201] "2013-02-15" "2013-02-14" "2013-04-22" "2013-04-19" "2013-04-24"
##  [206] "2013-04-23" "2013-04-16" "2013-04-18" "2013-04-17" "2013-04-25"
##  [211] "2013-05-06" "2013-05-03" "2013-05-02" "2013-05-07" "2013-05-08"
##  [216] "2013-04-26" "2013-04-29" "2013-04-30" "2013-04-01" "2013-03-28"
##  [221] "2013-03-27" "2013-04-04" "2013-04-02" "2013-04-03" "2013-03-25"
##  [226] "2013-03-26" "2013-04-09" "2013-08-16" "2013-04-10" "2013-04-08"
##  [231] "2013-04-11" "2013-04-12" "2013-04-05" "2012-12-17" "2012-12-13"
##  [236] "2012-12-14" "2012-12-20" "2012-12-19" "2012-12-21" "2012-12-26"
##  [241] "2012-12-24" "2012-12-18" "2012-12-12" "2012-12-11" "2013-01-15"
##  [246] "2013-01-16" "2013-01-14" "2013-01-18" "2013-01-17" "2013-12-27"
##  [251] "2013-10-09" "2013-01-10" "2013-01-09" "2013-01-13" "2013-01-11"
##  [256] "2013-01-25" "2013-01-28" "2014-11-14" "2013-01-24" "2013-01-29"
##  [261] "2013-05-14" "2014-11-05" "2013-01-21" "2013-01-23" "2013-01-22"
##  [266] "2013-01-03" "2013-01-02" "2013-01-04" "2012-12-28" "2012-12-27"
##  [271] "2014-01-04" "2012-12-31" "2013-01-01" "2013-01-08" "2013-01-07"
##  [276] "2012-10-09" "2014-03-02" "2012-10-08" "2012-10-10" "2012-10-23"
##  [281] "2012-10-05" "2012-10-16" "2012-10-15" "2014-09-08" "2012-09-28"
##  [286] "2012-10-04" "2012-10-03" "2012-10-30" "2012-10-29" "2012-11-02"
##  [291] "2012-10-26" "2012-10-25" "2012-11-05" "2012-11-06" "2012-10-19"
##  [296] "2012-10-22" "2012-10-20" "2012-10-18" "2012-10-24" "2011-08-17"
##  [301] "2011-08-19" "2011-08-18" "2011-08-26" "2011-08-25" "2011-08-24"
##  [306] "2011-08-22" "2011-08-23" "2011-08-12" "2011-08-11" "2011-08-16"
##  [311] "2011-10-21" "2011-09-07" "2011-09-08" "2011-09-12" "2011-09-06"
##  [316] "2011-09-09" "2011-08-30" "2011-08-31" "2011-09-01" "2011-08-29"
##  [321] "2011-09-05" "2011-09-02" "2011-08-04" "2011-12-07" "2011-08-05"
##  [326] "2011-08-02" "2011-08-03" "2011-08-10" "2011-08-09" "2011-08-08"
##  [331] "2011-09-27" "2011-09-28" "2011-09-26" "2011-10-05" "2011-09-22"
##  [336] "2011-09-23" "2011-09-30" "2011-10-03" "2011-10-01" "2011-10-07"
##  [341] "2011-10-04" "2011-10-12" "2011-10-08" "2011-09-29" "2011-10-11"
##  [346] "2011-10-06" "2011-10-20" "2011-09-14" "2011-09-15" "2011-09-16"
##  [351] "2011-11-23" "2011-09-13" "2011-09-20" "2011-09-21" "2011-09-19"
##  [356] "2010-10-08" "2010-10-11" "2010-10-13" "2010-10-06" "2013-09-25"
##  [361] "2010-10-05" "2010-10-07" "2010-10-15" "2010-10-14" "2010-10-18"
##  [366] "2010-10-21" "2011-05-11" "2010-09-29" "2010-09-27" "2010-09-24"
##  [371] "2010-10-04" "2010-09-30" "2010-11-03" "2010-11-02" "2010-11-04"
##  [376] "2014-03-12" "2010-10-29" "2010-10-28" "2010-11-09" "2011-02-09"
##  [381] "2010-11-11" "2010-11-10" "2010-11-05" "2010-11-08" "2010-10-20"
##  [386] "2010-10-22" "2010-10-19" "2010-10-25" "2010-10-27" "2011-03-01"
##  [391] "2010-10-26" "2010-09-23" "2010-08-24" "2010-08-25" "2010-08-26"
##  [396] "2011-02-28" "2010-09-01" "2014-07-21" "2010-08-31" "2010-08-30"
##  [401] "2010-08-27" "2010-08-23" "2010-08-17" "2010-08-16" "2010-08-13"
##  [406] "2010-08-20" "2010-08-18" "2010-08-19" "2010-09-16" "2010-09-17"
##  [411] "2010-09-21" "2010-09-14" "2010-09-13" "2010-09-15" "2012-03-08"
##  [416] "2010-09-22" "2010-09-20" "2010-09-18" "2010-09-19" "2010-12-13"
##  [421] "2010-09-06" "2010-09-04" "2010-09-08" "2010-09-02" "2010-09-10"
##  [426] "2010-09-09" "2010-09-07" "2011-01-25" "2011-01-24" "2011-01-26"
##  [431] "2011-01-20" "2011-01-31" "2011-02-02" "2011-02-01" "2011-01-28"
##  [436] "2011-01-27" "2011-01-12" "2011-01-13" "2011-01-14" "2011-01-10"
##  [441] "2011-01-18" "2011-01-19" "2011-01-17" "2011-02-18" "2011-02-17"
##  [446] "2011-02-21" "2011-02-15" "2011-02-16" "2011-02-24" "2011-02-25"
##  [451] "2011-02-22" "2011-02-23" "2011-02-07" "2011-02-08" "2011-02-04"
##  [456] "2011-02-03" "2011-02-14" "2011-03-21" "2011-02-10" "2011-02-11"
##  [461] "2010-12-01" "2010-12-02" "2010-12-03" "2010-12-05" "2010-12-21"
##  [466] "2010-11-26" "2010-11-29" "2010-11-30" "2010-12-09" "2010-12-07"
##  [471] "2010-11-17" "2010-11-16" "2010-11-19" "2010-11-18" "2010-11-12"
##  [476] "2010-11-15" "2010-11-24" "2010-11-25" "2010-11-23" "2010-11-22"
##  [481] "2011-01-03" "2010-12-30" "2010-12-29" "2010-12-28" "2010-12-31"
##  [486] "2011-01-07" "2011-01-04" "2011-01-05" "2010-12-20" "2014-10-20"
##  [491] "2010-12-14" "2010-12-15" "2010-12-16" "2010-12-27" "2010-12-22"
##  [496] "2010-12-23" "2010-05-17" "2010-05-19" "2010-05-18" "2010-05-14"
##  [501] "2010-05-15" "2010-05-20" "2010-05-21" "2011-11-30" "2010-05-10"
##  [506] "2010-05-11" "2010-05-09" "2011-07-14" "2010-05-13" "2010-05-12"
##  [511] "2010-07-12" "2010-05-29" "2010-06-01" "2010-05-28" "2010-05-31"
##  [516] "2010-05-27" "2011-06-13" "2010-07-13" "2010-05-24" "2010-05-22"
##  [521] "2010-05-26" "2010-07-01" "2010-05-25" "2010-05-07" "2010-04-22"
##  [526] "2010-04-21" "2014-11-07" "2010-04-23" "2013-12-23" "2010-04-25"
##  [531] "2010-04-24" "2010-04-26" "2010-04-20" "2010-04-19" "2010-04-17"
##  [536] "2010-04-16" "2010-10-01" "2010-05-04" "2010-05-06" "2010-05-05"
##  [541] "2010-05-03" "2012-01-23" "2010-04-27" "2010-04-28" "2010-04-30"
##  [546] "2010-05-02" "2010-05-01" "2010-04-29" "2010-07-15" "2010-07-14"
##  [551] "2010-07-16" "2012-01-03" "2010-07-27" "2011-10-13" "2010-07-20"
##  [556] "2010-07-22" "2010-07-19" "2010-06-30" "2010-07-02" "2010-06-29"
##  [561] "2010-07-07" "2010-07-09" "2010-07-08" "2010-07-05" "2010-07-06"
##  [566] "2010-08-04" "2010-08-05" "2010-08-06" "2010-08-03" "2010-08-02"
##  [571] "2010-08-11" "2010-08-10" "2010-08-12" "2010-08-09" "2010-07-26"
##  [576] "2010-07-28" "2010-07-23" "2010-07-30" "2010-07-29" "2010-06-11"
##  [581] "2010-06-14" "2010-06-12" "2010-06-13" "2010-06-09" "2010-06-10"
##  [586] "2010-06-15" "2010-06-16" "2010-06-04" "2010-06-03" "2010-06-08"
##  [591] "2010-06-07" "2010-06-02" "2010-06-24" "2010-06-25" "2010-07-24"
##  [596] "2010-06-23" "2014-09-16" "2010-06-28" "2013-07-16" "2010-06-18"
##  [601] "2010-06-17" "2010-06-21" "2010-06-22" "2011-07-26" "2011-07-27"
##  [606] "2011-07-22" "2011-07-25" "2011-07-28" "2011-07-29" "2011-07-20"
##  [611] "2011-07-21" "2011-07-19" "2011-08-01" "2011-07-30" "2011-07-31"
##  [616] "2011-11-07" "2012-04-06" "2011-04-27" "2011-04-28" "2011-04-29"
##  [621] "2011-04-26" "2011-04-25" "2011-06-07" "2011-05-04" "2011-05-03"
##  [626] "2011-05-05" "2011-05-02" "2011-04-13" "2011-04-14" "2011-04-11"
##  [631] "2011-04-20" "2011-04-19" "2011-04-21" "2011-04-15" "2011-04-18"
##  [636] "2011-05-23" "2011-06-28" "2011-05-24" "2011-05-19" "2011-05-18"
##  [641] "2011-05-20" "2011-05-30" "2011-05-31" "2011-06-01" "2011-05-27"
##  [646] "2011-05-10" "2011-05-06" "2011-05-09" "2011-05-16" "2011-05-17"
##  [651] "2011-05-12" "2012-03-14" "2011-05-13" "2011-03-14" "2011-03-11"
##  [656] "2011-03-09" "2011-03-10" "2011-03-17" "2011-03-16" "2011-03-15"
##  [661] "2011-03-02" "2011-03-04" "2011-03-03" "2011-03-18" "2011-03-08"
##  [666] "2011-03-07" "2011-04-01" "2011-03-31" "2011-04-04" "2011-04-02"
##  [671] "2011-03-30" "2011-03-29" "2011-04-07" "2011-04-08" "2011-04-06"
##  [676] "2011-04-05" "2011-03-22" "2011-03-23" "2011-03-24" "2011-03-28"
##  [681] "2011-03-25" "2011-03-27" "2011-06-02" "2011-07-13" "2011-07-15"
##  [686] "2011-07-11" "2011-07-12" "2011-07-18" "2011-07-17" "2011-06-20"
##  [691] "2011-06-21" "2011-06-17" "2011-06-16" "2011-06-27" "2011-06-23"
##  [696] "2011-06-24" "2011-06-22" "2011-06-06" "2011-06-08" "2011-06-03"
##  [701] "2011-06-05" "2011-06-14" "2011-06-15" "2011-06-09" "2011-06-10"
##  [706] "2011-07-07" "2011-07-16" "2011-07-06" "2011-07-05" "2011-07-08"
##  [711] "2011-06-29" "2011-06-30" "2011-07-04" "2014-11-02" "2011-07-01"
##  [716] "2011-12-02" "2011-12-01" "2011-12-05" "2012-04-09" "2011-12-09"
##  [721] "2011-12-12" "2011-12-04" "2011-11-29" "2014-10-07" "2011-12-08"
##  [726] "2011-12-27" "2011-12-15" "2011-12-13" "2011-12-14" "2011-11-21"
##  [731] "2011-11-18" "2011-11-22" "2011-11-24" "2011-11-16" "2011-11-17"
##  [736] "2011-11-25" "2011-11-26" "2011-11-28" "2011-12-28" "2012-02-16"
##  [741] "2012-02-17" "2012-02-15" "2012-02-14" "2012-02-20" "2013-10-04"
##  [746] "2012-02-21" "2012-02-08" "2012-02-09" "2012-02-07" "2012-02-06"
##  [751] "2012-02-13" "2012-02-10" "2012-02-28" "2012-02-27" "2012-03-01"
##  [756] "2012-02-29" "2012-02-23" "2012-02-22" "2012-02-24" "2012-01-18"
##  [761] "2012-01-19" "2012-01-17" "2012-01-24" "2012-01-20" "2014-06-05"
##  [766] "2012-01-16" "2012-01-11" "2012-01-12" "2012-01-10" "2012-01-09"
##  [771] "2012-01-13" "2012-02-01" "2012-02-02" "2012-01-30" "2012-01-31"
##  [776] "2012-02-03" "2012-01-26" "2012-01-25" "2012-01-27" "2012-01-29"
##  [781] "2012-04-02" "2012-04-03" "2012-03-30" "2012-04-04" "2012-04-05"
##  [786] "2012-03-28" "2012-03-29" "2012-03-27" "2012-03-26" "2012-04-17"
##  [791] "2012-04-18" "2012-04-16" "2012-04-20" "2012-04-19" "2012-04-10"
##  [796] "2012-04-11" "2013-12-01" "2012-04-13" "2012-04-12" "2014-09-04"
##  [801] "2012-03-09" "2012-03-07" "2014-07-28" "2012-03-12" "2012-03-13"
##  [806] "2012-03-05" "2012-03-02" "2012-03-06" "2012-03-22" "2012-03-21"
##  [811] "2012-03-23" "2012-03-20" "2012-03-15" "2014-06-06" "2012-03-16"
##  [816] "2012-03-19" "2014-02-06" "2011-12-16" "2011-12-17" "2011-12-22"
##  [821] "2011-12-18" "2011-12-21" "2011-12-26" "2011-12-23" "2012-01-02"
##  [826] "2014-02-11" "2012-01-05" "2012-01-04" "2011-12-29" "2014-01-03"
##  [831] "2011-12-30" "2011-12-19" "2011-12-20" "2011-10-14" "2011-10-15"
##  [836] "2011-10-17" "2011-10-19" "2011-10-18" "2011-10-24" "2011-10-25"
##  [841] "2011-10-22" "2011-10-10" "2011-11-09" "2011-11-08" "2011-11-10"
##  [846] "2011-11-11" "2011-11-04" "2011-11-14" "2011-11-15" "2011-11-12"
##  [851] "2011-10-26" "2011-10-27" "2011-10-28" "2011-10-23" "2011-11-02"
##  [856] "2011-11-03" "2011-10-31" "2011-11-01" "2014-08-06" "2014-08-07"
##  [861] "2014-08-05" "2014-08-04" "2014-08-20" "2014-08-19" "2014-08-28"
##  [866] "2014-08-21" "2014-08-18" "2014-08-14" "2014-08-26" "2014-08-25"
##  [871] "2014-08-27" "2014-08-22" "2014-08-08" "2014-08-11" "2014-08-12"
##  [876] "2014-08-13" "2014-08-01" "2014-07-31" "2014-07-30" "2014-09-17"
##  [881] "2014-10-03" "2014-09-15" "2014-09-12" "2014-10-09" "2014-09-19"
##  [886] "2014-09-18" "2014-10-14" "2014-09-22" "2015-01-12" "2015-01-10"
##  [891] "2014-09-02" "2014-09-05" "2014-08-29" "2014-09-10" "2014-09-01"
##  [896] "2015-01-19" "2014-09-11" "2014-09-09" "2014-09-25" "2014-10-28"
##  [901] "2014-07-02" "2014-07-01" "2014-07-03" "2014-07-04" "2014-06-30"
##  [906] "2014-06-27" "2014-07-08" "2014-07-09" "2014-07-10" "2014-12-04"
##  [911] "2014-07-22" "2014-07-07" "2014-06-18" "2014-06-19" "2014-06-17"
##  [916] "2014-06-20" "2014-06-16" "2014-06-13" "2014-06-23" "2014-06-25"
##  [921] "2014-06-26" "2014-10-17" "2014-06-24" "2014-07-17" "2002-04-29"
##  [926] "2014-07-18" "2014-07-24" "2014-07-14" "2014-07-15" "2014-10-10"
##  [931] "2014-07-11" "2014-07-16" "2014-05-05" "2014-05-06" "2014-05-07"
##  [936] "2014-04-29" "2014-04-30" "2014-04-28" "2014-05-02" "2014-05-14"
##  [941] "2014-05-15" "2014-05-08" "2014-05-13" "2014-05-09" "2014-04-15"
##  [946] "2014-04-16" "2014-04-14" "2014-04-17" "2014-04-21" "2014-04-10"
##  [951] "2014-04-11" "2014-04-09" "2014-05-26" "2014-04-25" "2014-04-24"
##  [956] "2014-04-22" "2014-04-23" "2014-06-04" "2014-06-03" "2014-06-02"
##  [961] "2014-05-30" "2014-06-11" "2014-06-10" "2014-06-12" "2014-06-09"
##  [966] "2014-05-20" "2014-05-19" "2014-05-22" "2014-05-21" "2014-05-16"
##  [971] "2014-05-28" "2014-05-27" "2014-05-29" "2014-05-23" "2014-07-29"
##  [976] "2014-07-23" "2014-07-25" "2014-07-26" "2014-11-10" "2014-11-08"
##  [981] "2014-11-11" "2014-11-04" "2014-11-06" "2014-11-17" "2014-11-18"
##  [986] "2014-11-28" "2014-11-12" "2014-11-13" "2014-10-27" "2014-10-29"
##  [991] "2014-11-03" "2014-10-24" "2014-10-30" "2014-10-31" "2014-12-19"
##  [996] "2014-12-18" "2014-12-22" "2014-12-17" "2014-12-16" "2014-12-26"
## [1001] "2014-12-29" "2014-12-24" "2014-12-23" "2014-12-11" "2014-12-15"
## [1006] "2014-12-12" "2015-01-16" "2015-01-15" "2015-01-20" "2015-01-13"
## [1011] "2015-01-14" "2015-01-26" "2015-01-23" "2015-01-28" "2015-01-29"
## [1016] "2015-01-27" "2015-01-21" "2015-01-22" "2015-01-05" "2015-01-02"
## [1021] "2015-01-07" "2014-12-30" "2014-12-31" "2015-01-09" "2015-01-08"
## [1026] "2014-11-21" "2014-11-25" "2014-11-26" "2014-11-19" "2014-12-03"
## [1031] "2014-12-01" "2014-12-05" "2014-11-27" "2014-09-30" "2014-10-02"
## [1036] "2014-10-01" "2014-09-29" "2014-10-06" "2014-09-24" "2014-09-23"
## [1041] "2014-09-26" "2014-10-16" "2014-10-22" "2014-10-15" "2014-10-21"
## [1046] "2014-10-23" "2014-10-08" "2014-10-13" "2013-08-27" "2013-08-28"
## [1051] "2013-08-26" "2013-09-06" "2013-08-30" "2013-08-29" "2013-09-02"
## [1056] "2013-09-10" "2013-08-20" "2013-09-04" "2013-08-21" "2013-09-24"
## [1061] "2013-08-19" "2013-11-08" "2013-08-23" "2013-08-22" "2013-09-09"
## [1066] "2013-09-12" "2013-09-03" "2013-09-05" "2013-08-10" "2013-08-12"
## [1071] "2013-08-09" "2014-01-25" "2013-08-14" "2013-08-13" "2013-09-26"
## [1076] "2013-09-27" "2013-09-23" "2013-10-01" "2013-10-02" "2013-09-30"
## [1081] "2013-10-11" "2013-10-03" "2013-09-17" "2013-09-16" "2013-09-18"
## [1086] "2013-09-13" "2013-09-20" "2013-07-22" "2013-07-19" "2013-07-25"
## [1091] "2002-05-16" "2013-07-18" "2013-07-24" "2013-07-23" "2013-11-22"
## [1096] "2013-06-10" "2013-06-07" "2013-06-06" "2013-06-28" "2013-06-11"
## [1101] "2013-06-12" "2013-06-03" "2013-06-04" "2013-05-31" "2013-06-05"
## [1106] "2013-06-17" "2013-06-20" "2013-06-21" "2013-06-19" "2013-06-24"
## [1111] "2013-06-25" "2013-06-14" "2013-06-13" "2013-06-18" "2013-05-16"
## [1116] "2013-05-15" "2013-05-17" "2013-05-20" "2013-05-21" "2013-05-09"
## [1121] "2013-05-28" "2013-05-29" "2013-05-27" "2013-05-30" "2013-05-23"
## [1126] "2013-05-22" "2013-05-24" "2013-07-15" "2013-07-12" "2013-09-21"
## [1131] "2013-07-10" "2013-07-09" "2013-07-17" "2013-07-02" "2013-07-01"
## [1136] "2013-07-03" "2013-07-04" "2013-06-26" "2013-06-27" "2013-07-08"
## [1141] "2013-07-05" "2013-08-03" "2013-08-05" "2013-08-06" "2013-08-02"
## [1146] "2013-08-08" "2013-08-07" "2013-07-29" "2013-07-27" "2013-07-31"
## [1151] "2013-07-30" "2013-07-26" "2013-10-05" "2013-08-01" "2013-11-27"
## [1156] "2013-11-26" "2013-11-29" "2013-11-28" "2013-11-21" "2013-11-25"
## [1161] "2013-12-11" "2013-12-10" "2013-12-12" "2013-12-09" "2013-12-05"
## [1166] "2013-12-16" "2013-12-17" "2013-12-13" "2013-12-03" "2013-12-02"
## [1171] "2013-12-04" "2014-02-03" "2013-11-11" "2013-11-12" "2013-11-13"
## [1176] "2013-11-07" "2013-11-06" "2013-11-19" "2013-11-18" "2013-11-14"
## [1181] "2013-11-15" "2014-02-28" "2014-02-27" "2014-02-26" "2014-03-03"
## [1186] "2014-02-24" "2014-02-25" "2014-03-06" "2014-03-07" "2014-03-05"
## [1191] "2014-03-10" "2014-03-04" "2014-03-24" "2014-02-12" "2014-02-13"
## [1196] "2014-02-14" "2014-02-16" "2014-02-10" "2014-02-07" "2014-02-09"
## [1201] "2014-12-02" "2014-02-20" "2014-02-19" "2014-02-21" "2014-02-18"
## [1206] "2014-03-31" "2014-04-01" "2014-04-02" "2014-09-06" "2014-03-26"
## [1211] "2014-03-27" "2014-03-25" "2014-03-28" "2014-04-07" "2014-04-08"
## [1216] "2014-04-03" "2014-04-13" "2014-03-14" "2014-03-13" "2014-03-17"
## [1221] "2014-03-11" "2014-03-18" "2014-03-21" "2014-03-19" "2014-03-20"
## [1226] "2014-01-07" "2013-12-31" "2014-01-02" "2014-01-09" "2014-01-08"
## [1231] "2014-01-10" "2013-12-19" "2013-12-20" "2013-12-22" "2013-12-18"
## [1236] "2013-12-26" "2013-12-24" "2014-01-29" "2014-01-30" "2014-01-31"
## [1241] "2014-01-24" "2014-02-05" "2014-02-04" "2014-01-16" "2014-01-15"
## [1246] "2014-01-17" "2014-01-20" "2014-01-13" "2014-01-14" "2014-01-22"
## [1251] "2014-01-23" "2014-01-21" "2013-10-14" "2013-10-13" "2013-10-10"
## [1256] "2013-10-15" "2013-10-17" "2013-10-07" "2013-10-08" "2013-10-28"
## [1261] "2013-10-25" "2013-10-24" "2013-11-04" "2013-11-05" "2013-10-30"
## [1266] "2013-10-31" "2013-10-18" "2013-10-21" "2013-10-16" "2013-10-23"
## [1271] "2013-10-22" "2001-10-15" "2001-10-16" "2004-02-14" "2001-10-17"
## [1276] "2001-10-30" "2002-03-22" "2001-10-13" "2001-10-11" "2001-10-18"
## [1281] "2002-06-10" "2005-06-16" "2001-10-19" "2001-10-24" "2004-05-14"
## [1286] "2001-10-20" "2003-07-25" "2005-07-11" "2001-10-22" "2007-03-03"
## [1291] "2001-11-06" "2002-01-23" "2001-12-03" "2004-04-26" "2002-01-15"
## [1296] "2005-03-30" "2001-10-29" "2002-09-12" "2001-10-06" "2001-10-05"
## [1301] "2003-03-20" "2002-01-28" "2002-03-11" "2001-10-08" "2003-07-15"
## [1306] "2002-01-26" "2001-10-04" "2001-10-03" "2005-05-23" "2005-11-15"
## [1311] "2003-12-11" "2001-10-10" "2001-10-09" "2001-11-02" "2009-03-25"
## [1316] "2002-02-11" "2001-11-13" "2002-01-22" "2009-10-02" "2001-12-15"
## [1321] "2001-10-31" "2008-10-22" "2001-11-23" "2001-11-05" "2001-12-21"
## [1326] "2002-01-17" "2001-12-07" "2007-02-02" "2004-02-06" "2001-11-03"
## [1331] "2006-02-06" "2001-12-27" "2001-10-25" "2001-10-26" "2001-11-17"
## [1336] "2001-11-08" "2001-10-23" "2001-10-27" "2004-05-05" "2006-06-14"
## [1341] "2001-11-12" "2005-12-29" "2003-07-28" "2001-09-03" "2001-09-04"
## [1346] "2002-09-16" "2001-09-06" "2001-09-05" "2001-08-28" "2001-08-27"
## [1351] "2003-05-07" "2001-08-29" "2003-09-09" "2001-08-31" "2004-04-30"
## [1356] "2005-01-12" "2009-03-04" "2009-03-24" "2001-08-30" "2001-09-26"
## [1361] "2001-09-13" "2001-09-12" "2001-09-14" "2001-09-11" "2001-09-17"
## [1366] "2003-02-17" "2001-09-07" "2001-09-10" "2003-10-15" "2006-02-19"
## [1371] "2001-08-07" "2001-08-06" "2001-10-01" "2001-08-16" "2001-08-09"
## [1376] "2002-08-01" "2001-08-08" "2004-05-28" "2001-08-13" "2001-09-18"
## [1381] "2001-08-01" "2001-08-02" "2001-07-31" "2004-08-24" "2001-08-03"
## [1386] "2001-09-20" "2001-08-20" "2001-08-21" "2001-08-23" "2001-08-17"
## [1391] "2002-04-18" "2005-05-04" "2001-08-24" "2005-11-03" "2001-08-22"
## [1396] "2001-11-16" "2002-10-31" "2002-02-01" "2006-11-15" "2005-10-25"
## [1401] "2006-01-09" "2002-05-20" "2001-08-10" "2003-02-11" "2002-07-04"
## [1406] "2001-08-14" "2001-09-28" "2001-09-27" "2004-12-29" "2005-11-08"
## [1411] "2004-08-23" "2001-10-02" "2004-05-10" "2001-12-24" "2003-12-18"
## [1416] "2010-01-21" "2002-02-08" "2001-09-21" "2005-01-26" "2001-09-24"
## [1421] "2001-11-07" "2002-01-31" "2003-12-27" "2007-02-08" "2001-09-19"
## [1426] "2007-12-27" "2001-09-25" "2003-12-17" "2002-12-17" "2002-01-24"
## [1431] "2002-11-12" "2001-11-27" "2001-12-17" "2001-12-18" "2001-12-31"
## [1436] "2001-12-19" "2002-04-22" "2005-01-24" "2001-12-14" "2004-12-23"
## [1441] "2001-12-13" "2006-09-18" "2007-03-01" "2001-12-22" "2001-12-26"
## [1446] "2002-06-03" "2001-12-20" "2001-12-28" "2001-12-29" "2004-03-23"
## [1451] "2004-04-19" "2005-07-19" "2001-12-10" "2002-08-19" "2002-12-05"
## [1456] "2002-10-29" "2001-12-04" "2001-12-05" "2009-09-10" "2001-12-11"
## [1461] "2001-12-12" "2007-10-09" "2002-01-04" "2005-04-07" "2004-03-15"
## [1466] "2002-01-11" "2006-04-10" "2002-01-19" "2002-01-12" "2002-01-14"
## [1471] "2008-11-19" "2002-02-18" "2002-01-09" "2002-01-08" "2002-01-10"
## [1476] "2002-04-26" "2002-11-19" "2002-01-21" "2002-01-16" "2004-05-12"
## [1481] "2003-12-30" "2009-05-28" "2007-11-06" "2002-04-15" "2002-08-21"
## [1486] "2002-01-05" "2002-01-03" "2002-09-13" "2002-12-23" "2002-01-07"
## [1491] "2005-12-27" "2002-02-09" "2002-01-02" "2002-01-18" "2001-11-20"
## [1496] "2001-11-14" "2002-12-27" "2006-10-09" "2002-06-27" "2007-11-16"
## [1501] "2002-07-16" "2001-11-22" "2001-11-15" "2002-04-24" "2001-11-21"
## [1506] "2001-11-28" "2001-11-29" "2001-11-30" "2006-08-17" "2003-11-20"
## [1511] "2009-05-12" "2001-11-10" "2001-11-09" "2002-08-06" "2001-11-24"
## [1516] "2001-11-26" "2004-01-27" "2001-12-01" "2004-04-15" "2003-10-14"
## [1521] "2003-03-24" "2008-10-28" "2005-01-03" "2010-04-06" "2006-04-23"
## [1526] "2007-06-01" "2001-11-19" "2002-04-19" "2002-02-23" "2008-05-19"
## [1531] "2007-06-30" "2003-03-21" "2007-01-02" "2003-03-13" "2001-05-29"
## [1536] "2007-08-16" "2001-05-14" "2001-04-26" "2001-03-22" "2001-03-21"
## [1541] "2001-04-19" "2006-12-29" "2001-05-08" "2001-03-24" "2001-04-27"
## [1546] "2001-03-20" "2001-03-19" "2004-04-06" "2001-06-14" "2001-07-19"
## [1551] "2001-05-04" "2002-11-26" "2001-05-09" "2001-06-07" "2001-05-24"
## [1556] "2005-10-14" "2001-03-26" "2001-03-27" "2001-06-06" "2001-03-28"
## [1561] "2008-04-11" "2001-03-23" "2001-03-31" "2006-06-07" "2005-04-08"
## [1566] "2001-05-10" "2003-04-21" "2001-03-10" "2005-03-16" "2001-03-12"
## [1571] "2001-03-09" "2006-01-28" "2001-03-13" "2006-07-03" "2001-04-10"
## [1576] "2001-03-06" "2001-03-07" "2001-03-05" "2002-10-03" "2001-03-08"
## [1581] "2002-02-28" "2002-07-22" "2001-03-17" "2001-03-16" "2001-03-15"
## [1586] "2001-03-14" "2003-10-20" "2001-05-21" "2006-01-25" "2001-04-05"
## [1591] "2001-05-07" "2001-04-04" "2001-04-06" "2001-04-09" "2007-05-28"
## [1596] "2001-04-03" "2006-02-17" "2004-02-03" "2008-12-01" "2001-04-11"
## [1601] "2001-04-12" "2001-05-16" "2006-12-09" "2010-03-17" "2001-07-02"
## [1606] "2010-02-16" "2002-04-16" "2001-03-29" "2001-03-30" "2006-02-02"
## [1611] "2003-03-28" "2001-07-30" "2002-04-08" "2001-07-11" "2008-02-12"
## [1616] "2001-04-02" "2002-04-01" "2002-06-28" "2001-06-05" "2003-07-21"
## [1621] "2001-01-24" "2001-01-25" "2001-01-23" "2001-01-26" "2002-04-25"
## [1626] "2003-04-22" "2010-04-14" "2001-02-12" "2001-01-22" "2001-01-20"
## [1631] "2004-01-26" "2001-01-31" "2001-01-30" "2002-10-14" "2001-02-01"
## [1636] "2001-02-05" "2001-02-02" "2001-01-29" "2002-03-25" "2001-01-27"
## [1641] "2001-02-13" "2002-10-21" "2002-12-31" "2002-03-14" "2001-01-11"
## [1646] "2002-04-12" "2001-01-12" "2001-01-10" "2001-01-13" "2001-01-15"
## [1651] "2001-02-23" "2001-01-09" "2001-01-08" "2002-03-07" "2006-03-07"
## [1656] "2001-01-17" "2001-01-18" "2001-01-19" "2003-05-26" "2001-01-16"
## [1661] "2001-02-22" "2001-02-21" "2001-02-26" "2004-06-10" "2001-02-24"
## [1666] "2001-02-19" "2001-03-01" "2004-12-27" "2001-02-20" "2003-03-14"
## [1671] "2009-12-26" "2007-04-12" "2001-03-02" "2001-03-03" "2003-10-27"
## [1676] "2005-02-28" "2003-04-15" "2008-07-29" "2004-10-29" "2003-06-12"
## [1681] "2001-02-27" "2001-02-28" "2004-05-19" "2001-02-07" "2001-02-08"
## [1686] "2005-02-08" "2001-02-09" "2006-06-09" "2001-02-06" "2002-05-23"
## [1691] "2001-02-03" "2010-02-17" "2013-05-18" "2001-02-15" "2001-02-14"
## [1696] "2001-02-17" "2009-09-07" "2001-02-16" "2004-01-12" "2001-02-10"
## [1701] "2001-06-28" "2001-06-27" "2007-02-21" "2001-06-29" "2001-07-12"
## [1706] "2001-06-26" "2003-04-11" "2001-06-25" "2007-01-11" "2006-04-20"
## [1711] "2001-07-03" "2002-03-13" "2001-07-09" "2002-11-06" "2001-07-04"
## [1716] "2001-07-13" "2001-06-18" "2001-06-19" "2001-06-15" "2004-09-16"
## [1721] "2001-07-20" "2001-07-18" "2008-07-03" "2001-06-13" "2006-08-28"
## [1726] "2001-06-12" "2001-06-21" "2005-06-29" "2001-06-22" "2001-06-20"
## [1731] "2001-07-23" "2001-07-24" "2001-07-25" "2002-03-04" "2002-07-08"
## [1736] "2003-09-08" "2004-02-05" "2001-07-27" "2001-07-26" "2001-08-25"
## [1741] "2004-01-13" "2002-04-30" "2004-12-31" "2003-07-22" "2002-05-31"
## [1746] "2001-07-10" "2001-07-05" "2004-11-19" "2006-04-21" "2001-07-17"
## [1751] "2001-07-06" "2001-07-16" "2003-05-12" "2003-07-14" "2003-09-29"
## [1756] "2001-05-03" "2008-02-20" "2001-06-11" "2003-04-14" "2001-04-30"
## [1761] "2001-05-02" "2005-03-11" "2001-05-11" "2001-05-22" "2002-12-26"
## [1766] "2003-08-04" "2001-04-18" "2001-04-17" "2004-10-28" "2001-04-20"
## [1771] "2001-04-16" "2002-02-04" "2005-12-05" "2003-01-25" "2001-04-25"
## [1776] "2001-04-24" "2004-06-28" "2002-02-21" "2004-03-29" "2001-04-23"
## [1781] "2004-05-03" "2002-02-05" "2003-05-08" "2001-06-04" "2001-06-01"
## [1786] "2002-07-31" "2002-07-24" "2001-05-30" "2001-06-08" "2001-05-31"
## [1791] "2006-12-23" "2003-02-26" "2003-05-14" "2004-08-18" "2011-01-22"
## [1796] "2005-04-04" "2003-07-23" "2001-05-18" "2002-05-28" "2001-05-15"
## [1801] "2001-05-17" "2001-05-28" "2001-05-25" "2002-06-17" "2001-05-23"
## [1806] "2004-03-20" "2003-11-03" "2008-09-25" "2002-09-30" "2002-09-27"
## [1811] "2002-09-26" "2002-10-01" "2002-10-22" "2002-10-02" "2008-05-02"
## [1816] "2002-09-23" "2002-10-07" "2002-09-24" "2003-01-30" "2003-06-17"
## [1821] "2002-09-25" "2002-10-17" "2002-10-08" "2002-10-10" "2002-10-09"
## [1826] "2004-03-03" "2002-11-20" "2002-10-11" "2002-10-05" "2002-10-04"
## [1831] "2004-07-20" "2003-12-09" "2002-11-21" "2002-09-04" "2002-09-05"
## [1836] "2002-09-19" "2002-09-03" "2002-09-09" "2002-08-29" "2002-08-28"
## [1841] "2002-09-18" "2002-08-27" "2002-08-25" "2004-08-26" "2002-09-02"
## [1846] "2002-08-30" "2003-10-13" "2002-09-17" "2008-11-25" "2002-10-15"
## [1851] "2002-09-20" "2005-05-26" "2002-09-10" "2006-03-17" "2002-09-11"
## [1856] "2002-10-28" "2009-01-05" "2003-01-29" "2002-11-04" "2002-11-05"
## [1861] "2002-11-09" "2006-09-06" "2002-11-07" "2005-10-26" "2002-10-30"
## [1866] "2002-11-25" "2002-11-22" "2002-11-02" "2002-11-13" "2002-11-14"
## [1871] "2003-12-01" "2002-11-16" "2002-11-18" "2002-11-15" "2002-11-08"
## [1876] "2002-11-11" "2003-10-09" "2006-12-21" "2003-03-17" "2002-10-16"
## [1881] "2003-01-27" "2002-10-18" "2002-10-19" "2005-03-17" "2008-09-18"
## [1886] "2005-02-26" "2002-10-25" "2007-08-15" "2002-12-19" "2002-10-26"
## [1891] "2002-12-14" "2002-12-12" "2002-10-24" "2009-06-01" "2005-01-19"
## [1896] "2002-10-23" "2003-01-24" "2002-07-10" "2002-07-11" "2002-07-09"
## [1901] "2002-07-25" "2008-10-23" "2002-07-15" "2005-06-21" "2004-07-07"
## [1906] "2002-07-17" "2002-07-12" "2007-06-15" "2003-11-18" "2002-07-18"
## [1911] "2002-07-02" "2002-07-03" "2002-07-05" "2004-11-20" "2005-08-11"
## [1916] "2002-07-19" "2002-08-05" "2004-11-16" "2002-07-01" "2009-12-09"
## [1921] "2003-11-28" "2003-07-08" "2004-11-12" "2003-12-23" "2003-08-11"
## [1926] "2002-12-21" "2003-05-29" "2003-07-17" "2002-08-08" "2004-11-13"
## [1931] "2004-03-02" "2002-08-07" "2006-09-02" "2002-08-02" "2002-08-20"
## [1936] "2003-02-28" "2002-08-15" "2002-08-26" "2004-10-01" "2002-08-22"
## [1941] "2002-08-23" "2002-08-12" "2002-08-13" "2002-08-09" "2003-03-19"
## [1946] "2002-08-16" "2005-01-21" "2002-08-14" "2002-07-23" "2002-07-26"
## [1951] "2004-02-02" "2006-08-07" "2002-07-29" "2002-07-30" "2006-03-28"
## [1956] "2006-10-02" "2010-02-04" "2003-02-07" "2003-02-08" "2003-02-06"
## [1961] "2003-02-10" "2003-03-03" "2003-02-04" "2003-02-05" "2003-03-07"
## [1966] "2007-10-22" "2003-02-18" "2009-08-13" "2003-02-20" "2003-05-20"
## [1971] "2003-06-02" "2003-02-19" "2003-02-12" "2003-02-13" "2003-02-14"
## [1976] "2003-02-15" "2003-02-03" "2006-11-28" "2003-01-23" "2003-04-25"
## [1981] "2003-01-28" "2003-01-20" "2003-01-21" "2003-01-22" "2003-02-01"
## [1986] "2003-01-31" "2013-11-24" "2003-09-05" "2008-03-03" "2003-03-22"
## [1991] "2004-10-13" "2006-03-15" "2004-10-27" "2003-03-25" "2003-03-15"
## [1996] "2003-03-18" "2003-04-01" "2003-04-02" "2003-03-31" "2003-04-03"
## [2001] "2003-04-04" "2003-06-24" "2003-03-26" "2003-03-27" "2013-01-19"
## [2006] "2006-05-12" "2009-02-12" "2009-01-29" "2003-03-29" "2003-02-27"
## [2011] "2003-03-05" "2003-03-01" "2003-09-15" "2003-04-09" "2003-02-24"
## [2016] "2003-02-21" "2003-02-22" "2003-02-25" "2003-03-04" "2010-01-28"
## [2021] "2003-03-08" "2003-03-10" "2003-03-12" "2003-03-11" "2003-06-26"
## [2026] "2003-03-06" "2009-02-17" "2002-12-09" "2002-12-13" "2002-12-10"
## [2031] "2002-12-07" "2002-12-11" "2004-06-14" "2007-10-01" "2002-12-03"
## [2036] "2002-12-02" "2003-01-09" "2002-12-04" "2007-06-04" "2003-01-02"
## [2041] "2002-12-15" "2003-01-07" "2006-01-12" "2002-12-16" "2002-12-18"
## [2046] "2009-03-17" "2006-12-16" "2002-11-23" "2006-05-22" "2003-09-10"
## [2051] "2002-11-29" "2004-04-13" "2010-01-07" "2008-03-31" "2005-10-31"
## [2056] "2004-01-31" "2002-11-28" "2002-11-30" "2009-07-02" "2002-11-27"
## [2061] "2008-12-17" "2003-06-04" "2003-01-08" "2003-01-10" "2003-01-17"
## [2066] "2004-07-02" "2003-01-04" "2003-10-02" "2003-05-23" "2003-01-03"
## [2071] "2004-04-28" "2003-12-05" "2003-01-13" "2003-10-03" "2004-06-21"
## [2076] "2006-07-13" "2003-01-16" "2003-01-15" "2003-10-08" "2004-02-16"
## [2081] "2003-01-18" "2007-01-05" "2005-01-11" "2003-01-11" "2003-01-14"
## [2086] "2004-08-13" "2002-12-24" "2004-12-10" "2002-12-20" "2004-01-29"
## [2091] "2002-12-30" "2002-12-28" "2004-04-16" "2002-02-15" "2002-02-22"
## [2096] "2002-02-20" "2002-05-02" "2002-02-19" "2005-08-22" "2002-03-05"
## [2101] "2002-04-23" "2006-06-05" "2002-02-25" "2002-02-26" "2002-02-27"
## [2106] "2006-08-18" "2002-02-12" "2002-02-13" "2003-10-07" "2002-02-14"
## [2111] "2003-09-25" "2002-02-16" "2004-01-02" "2004-08-10" "2004-04-21"
## [2116] "2002-04-02" "2002-03-08" "2002-03-09" "2002-04-05" "2002-03-06"
## [2121] "2002-06-06" "2002-03-21" "2004-07-28" "2004-04-01" "2002-03-12"
## [2126] "2003-07-04" "2006-01-17" "2004-01-15" "2002-03-18" "2002-03-01"
## [2131] "2002-03-02" "2003-06-05" "2002-01-25" "2002-05-24" "2002-01-29"
## [2136] "2002-01-30" "2005-03-22" "2005-03-28" "2004-03-08" "2005-02-05"
## [2141] "2002-02-06" "2002-02-02" "2008-08-21" "2005-06-23" "2002-02-07"
## [2146] "2002-03-15" "2005-10-24" "2002-05-07" "2004-09-23" "2010-02-11"
## [2151] "2003-11-19" "2002-05-10" "2002-05-13" "2002-05-09" "2003-11-13"
## [2156] "2008-08-20" "2002-05-06" "2002-05-08" "2002-05-14" "2002-05-22"
## [2161] "2006-10-03" "2002-05-17" "2002-05-21" "2002-05-15" "2006-06-22"
## [2166] "2005-08-05" "2009-05-05" "2002-05-27" "2009-01-14" "2004-11-22"
## [2171] "2002-05-03" "2005-06-20" "2006-05-24" "2003-09-30" "2006-02-15"
## [2176] "2002-06-24" "2002-06-21" "2007-10-29" "2002-06-25" "2005-04-29"
## [2181] "2002-06-18" "2002-06-14" "2002-06-20" "2002-06-19" "2004-01-09"
## [2186] "2002-06-26" "2007-04-23" "2002-05-29" "2002-05-30" "2004-05-04"
## [2191] "2002-06-04" "2003-05-13" "2003-08-15" "2004-05-21" "2002-06-11"
## [2196] "2002-06-07" "2002-06-13" "2002-06-12" "2007-07-13" "2005-06-02"
## [2201] "2002-06-05" "2007-04-24" "2002-06-15" "2002-03-27" "2003-07-09"
## [2206] "2002-03-28" "2002-03-26" "2002-03-23" "2004-03-01" "2009-07-07"
## [2211] "2002-04-04" "2003-10-22" "2002-04-09" "2002-04-10" "2007-06-20"
## [2216] "2003-04-30" "2002-04-03" "2002-03-19" "2002-03-16" "2007-09-11"
## [2221] "2002-03-20" "2004-09-01" "2002-04-17" "2004-02-25" "2002-04-11"
## [2226] "2006-10-04" "2005-03-31" "2009-03-09" "2004-09-27" "1998-02-16"
## [2231] "1998-02-10" "1998-02-09" "1998-02-06" "1998-02-07" "1999-12-20"
## [2236] "1998-03-05" "1998-05-25" "1998-02-12" "2000-02-11" "1998-02-13"
## [2241] "1998-12-12" "1998-02-11" "1999-05-07" "1999-12-28" "2009-08-04"
## [2246] "1998-02-20" "1998-02-02" "1998-02-03" "1998-07-10" "1998-02-05"
## [2251] "1999-11-10" "1998-02-04" "2000-09-18" "1998-02-23" "1998-02-24"
## [2256] "1998-02-21" "2000-02-29" "1999-10-25" "1998-02-26" "1998-03-06"
## [2261] "1999-07-16" "1998-02-25" "2000-06-12" "1998-12-22" "1998-02-17"
## [2266] "1998-06-01" "2008-06-26" "2000-08-21" "1998-02-28" "1998-02-18"
## [2271] "2000-05-04" "1998-01-31" "2000-09-12" "2000-11-27" "1998-01-13"
## [2276] "1998-01-12" "1998-01-14" "2007-01-26" "1998-01-09" "1998-01-22"
## [2281] "2003-10-30" "1998-01-10" "1998-01-26" "1998-05-13" "1998-01-16"
## [2286] "1998-01-19" "1998-01-15" "1998-03-26" "2004-12-30" "1998-01-02"
## [2291] "1997-12-31" "1997-12-30" "1998-01-07" "1998-01-08" "1999-03-11"
## [2296] "1998-01-20" "1998-01-21" "1998-01-05" "1998-01-27" "1998-01-28"
## [2301] "1998-03-07" "1998-01-30" "1998-01-29" "1999-10-28" "1998-01-23"
## [2306] "1998-08-26" "2000-08-14" "1998-04-01" "1998-04-07" "1998-03-30"
## [2311] "1998-03-31" "1998-09-11" "1998-04-04" "1998-05-08" "2000-12-04"
## [2316] "1998-04-28" "1998-04-06" "1998-04-03" "1998-04-02" "1998-03-25"
## [2321] "1998-05-26" "1998-03-24" "1998-03-23" "1998-05-11" "1998-03-28"
## [2326] "1998-04-20" "1998-03-27" "1998-04-17" "1998-04-21" "1998-04-16"
## [2331] "1998-05-19" "1999-06-29" "1998-04-15" "1998-11-17" "1998-04-29"
## [2336] "1998-04-18" "1998-04-08" "1998-05-05" "2000-08-01" "1999-07-09"
## [2341] "1998-04-22" "1998-04-14" "1998-05-07" "1998-04-13" "1998-12-21"
## [2346] "1998-03-09" "1998-03-04" "1998-03-03" "1998-03-11" "1998-03-20"
## [2351] "1999-01-08" "1998-09-10" "1998-03-02" "1998-02-27" "2000-06-15"
## [2356] "1998-03-18" "2009-08-05" "1998-03-16" "1998-03-17" "2009-05-30"
## [2361] "1998-08-27" "1998-10-26" "1998-09-23" "1998-03-19" "1999-03-22"
## [2366] "2000-11-23" "1998-03-12" "1998-10-20" "1998-03-10" "1998-03-14"
## [2371] "1998-03-13" "2000-10-02" "1998-12-17" "1997-10-13" "1997-10-14"
## [2376] "1997-11-14" "1998-11-24" "1997-10-30" "1997-10-10" "1997-10-09"
## [2381] "1997-10-22" "1997-12-26" "1997-10-18" "1997-11-12" "1997-10-17"
## [2386] "1997-10-20" "1997-10-31" "1997-10-28" "1997-10-15" "1999-06-14"
## [2391] "1997-11-26" "1997-10-27" "1997-10-16" "2000-05-17" "2000-06-30"
## [2396] "1997-10-03" "1999-06-18" "1997-10-06" "1997-10-04" "1998-11-18"
## [2401] "1997-09-30" "1997-10-07" "1997-10-01" "1997-10-08" "2003-09-02"
## [2406] "1999-09-17" "1997-11-13" "2000-02-07" "1998-05-28" "1997-11-04"
## [2411] "1999-11-15" "1998-10-05" "1997-11-07" "1997-11-03" "1997-12-22"
## [2416] "1997-11-05" "1997-11-06" "1997-12-12" "1997-10-23" "1997-10-21"
## [2421] "1997-11-11" "1997-10-24" "1997-11-10" "2009-10-26" "2006-11-01"
## [2426] "1997-08-25" "2000-10-10" "1997-08-21" "1997-08-22" "1997-09-02"
## [2431] "1997-08-26" "1997-08-19" "1997-08-20" "2000-02-03" "1997-09-01"
## [2436] "1997-08-29" "1997-08-27" "1997-08-14" "1997-08-01" "1999-07-28"
## [2441] "1997-08-04" "1997-08-08" "1997-07-30" "1997-08-05" "1997-08-07"
## [2446] "1997-07-31" "1997-08-11" "1997-08-28" "1997-08-13" "1997-09-04"
## [2451] "1997-08-06" "1997-08-12" "1997-09-22" "1997-11-27" "1997-09-23"
## [2456] "1997-09-18" "1997-09-17" "1997-09-19" "2007-08-03" "1997-09-26"
## [2461] "1997-09-25" "1997-09-29" "1999-01-05" "1997-09-24" "1999-09-02"
## [2466] "1997-09-08" "2000-06-28" "1997-09-10" "2000-03-06" "1997-09-03"
## [2471] "1997-11-21" "1997-11-28" "1998-08-13" "1997-09-15" "1998-06-29"
## [2476] "2004-07-06" "1997-09-16" "1997-09-11" "1997-09-12" "1998-12-16"
## [2481] "1997-12-13" "1997-12-11" "1997-12-15" "1997-12-16" "1997-12-09"
## [2486] "1998-06-18" "1997-12-04" "1999-12-18" "1997-12-05" "2005-07-27"
## [2491] "1997-12-10" "1997-12-19" "1997-12-23" "1997-12-24" "1997-12-29"
## [2496] "1997-12-27" "1997-12-18" "1999-06-07" "1997-12-17" "1997-11-15"
## [2501] "1997-11-17" "2000-06-29" "1997-11-19" "1997-11-20" "1997-11-18"
## [2506] "1999-01-12" "1997-11-08" "1997-11-24" "1999-11-02" "1998-10-19"
## [2511] "1998-12-14" "1999-10-29" "1997-12-01" "1999-08-20" "1997-12-03"
## [2516] "1997-12-02" "1997-11-22" "2000-03-18" "1998-12-28" "1997-11-25"
## [2521] "1998-10-23" "1998-10-22" "1998-10-21" "1998-10-28" "1998-10-27"
## [2526] "1999-03-02" "1999-06-15" "1998-11-13" "1998-10-16" "1998-10-17"
## [2531] "1998-10-15" "1999-08-05" "2000-02-02" "1999-02-10" "2000-11-03"
## [2536] "1998-11-05" "2000-03-22" "1999-01-25" "1998-11-03" "1998-11-04"
## [2541] "2000-02-24" "1998-11-20" "2006-10-05" "1998-11-23" "1998-11-09"
## [2546] "1998-11-07" "1998-11-10" "1998-12-10" "1998-11-11" "1998-11-06"
## [2551] "1998-10-29" "1998-11-02" "1998-10-30" "1998-11-16" "1998-10-31"
## [2556] "1998-09-29" "1998-09-28" "1998-09-30" "1998-09-25" "2000-05-08"
## [2561] "1998-10-01" "2000-11-13" "1998-11-26" "2006-09-11" "1998-09-18"
## [2566] "1998-09-17" "1998-09-21" "1998-10-06" "1998-09-14" "1998-09-22"
## [2571] "1998-09-16" "1998-09-24" "1998-12-31" "1998-10-14" "1998-10-02"
## [2576] "1998-10-09" "2004-04-12" "1998-10-13" "1998-10-08" "2005-02-22"
## [2581] "1998-10-03" "1998-10-07" "2007-05-03" "1998-12-11" "1998-12-09"
## [2586] "1999-08-25" "1999-10-05" "1999-04-12" "1998-12-15" "1998-12-04"
## [2591] "1998-12-07" "1998-12-05" "1998-12-03" "1999-01-13" "1999-01-21"
## [2596] "1999-06-03" "1998-12-29" "1998-12-24" "1998-12-23" "2004-09-13"
## [2601] "2009-03-06" "1999-02-02" "1998-12-19" "2008-05-23" "1998-12-18"
## [2606] "1998-12-01" "1999-11-04" "2004-11-18" "1998-11-27" "1998-11-19"
## [2611] "1999-01-15" "1999-01-14" "1998-11-14" "1998-11-12" "1999-01-09"
## [2616] "1998-11-30" "1998-11-28" "1999-02-01" "1998-12-02" "2003-07-11"
## [2621] "2000-11-28" "1998-12-30" "2007-02-27" "1998-11-25" "1998-05-21"
## [2626] "1998-05-22" "1998-05-20" "1998-06-26" "2005-10-07" "1999-06-22"
## [2631] "1998-05-14" "2003-11-14" "1998-06-23" "1998-05-15" "1999-07-26"
## [2636] "2004-07-08" "1998-05-18" "1999-09-15" "1999-09-01" "1998-06-12"
## [2641] "1998-06-03" "2001-01-02" "1998-06-04" "1998-06-22" "2000-11-10"
## [2646] "1998-06-05" "1998-06-02" "1998-06-09" "1998-06-08" "1999-08-30"
## [2651] "1998-07-01" "1998-06-11" "2005-07-14" "1998-05-27" "2000-10-06"
## [2656] "1998-06-24" "2000-12-28" "1998-05-29" "2000-03-15" "1998-04-27"
## [2661] "1998-04-30" "1998-05-04" "2003-05-22" "1998-04-23" "1998-07-02"
## [2666] "1998-04-24" "1999-06-21" "1998-04-25" "1999-04-14" "1998-05-12"
## [2671] "2008-11-21" "1999-10-22" "1998-05-06" "1999-09-08" "1998-07-30"
## [2676] "1998-07-29" "1998-08-03" "2000-12-18" "1998-07-27" "1999-06-25"
## [2681] "1998-08-07" "1998-08-10" "1998-08-06" "1998-09-15" "1998-08-11"
## [2686] "1998-08-21" "1998-08-05" "1998-07-16" "1998-07-15" "1998-07-17"
## [2691] "1999-03-08" "1998-07-13" "2010-02-26" "1998-07-14" "1998-07-20"
## [2696] "1998-07-23" "1998-07-24" "1998-07-22" "1998-07-21" "1998-09-04"
## [2701] "1998-09-07" "1998-09-02" "1998-09-03" "1999-07-06" "1998-09-08"
## [2706] "1998-09-09" "1998-08-20" "1998-08-19" "1998-08-18" "1999-03-05"
## [2711] "1998-08-14" "1998-08-12" "2004-05-26" "1998-08-17" "1999-12-03"
## [2716] "1998-08-31" "2004-11-10" "1998-09-01" "1998-08-25" "1998-08-28"
## [2721] "1998-06-19" "2000-08-28" "2009-04-23" "1998-06-17" "1998-06-15"
## [2726] "1999-12-01" "1998-06-10" "1998-06-16" "1999-01-18" "1998-07-06"
## [2731] "1998-07-03" "1999-06-24" "1998-06-30" "1998-10-10" "2000-02-15"
## [2736] "1998-07-09" "1998-07-07" "1998-07-08" "1999-08-04" "1999-01-04"
## [2741] "2000-12-29" "1998-06-25" "2000-03-21" "1996-02-19" "2000-07-31"
## [2746] "1996-02-29" "2000-12-01" "1996-12-23" "1996-02-17" "1996-02-16"
## [2751] "1996-02-22" "1996-03-08" "1996-02-27" "1996-03-02" "1996-03-20"
## [2756] "1996-02-24" "1996-03-13" "1996-03-15" "1996-02-26" "1996-03-25"
## [2761] "1996-01-31" "1996-02-05" "1996-01-30" "1997-05-12" "1997-03-24"
## [2766] "1996-05-29" "1996-02-10" "1996-02-13" "1996-02-20" "1996-04-03"
## [2771] "1996-02-12" "1996-02-06" "1999-01-30" "1996-02-08" "1996-12-20"
## [2776] "1996-03-26" "1996-03-29" "1996-04-19" "1996-04-09" "1996-03-21"
## [2781] "1996-03-22" "1996-03-28" "1996-03-30" "1996-07-15" "2012-12-30"
## [2786] "1996-04-11" "1996-04-01" "1996-04-17" "1999-03-12" "1996-03-27"
## [2791] "1996-06-03" "1996-10-19" "1999-02-23" "1996-03-18" "1996-03-11"
## [2796] "1996-03-09" "1996-03-05" "1996-04-29" "1996-03-14" "1996-03-06"
## [2801] "1996-03-16" "1996-03-12" "1996-04-18" "1996-12-16" "1995-12-26"
## [2806] "2004-04-20" "1995-12-27" "1995-12-20" "1995-12-21" "1995-12-29"
## [2811] "2000-08-30" "1997-05-14" "1995-12-28" "1995-12-13" "1995-12-14"
## [2816] "1995-12-15" "1995-12-11" "1995-12-18" "1995-12-12" "2008-12-16"
## [2821] "1995-12-19" "1996-01-15" "1996-01-02" "1996-01-22" "1996-01-18"
## [2826] "1996-01-17" "1999-12-31" "1996-01-26" "1996-01-20" "1996-01-19"
## [2831] "1996-01-27" "1996-01-29" "1996-07-25" "1996-12-02" "1996-01-08"
## [2836] "1996-01-10" "1996-01-23" "1996-01-03" "1996-12-28" "1996-01-05"
## [2841] "1996-01-04" "1996-01-16" "1999-11-05" "1996-01-12" "1996-01-11"
## [2846] "2000-10-30" "2000-11-07" "1996-06-06" "1996-06-07" "1996-06-11"
## [2851] "1996-06-10" "1996-06-04" "1996-06-05" "1996-06-14" "1996-06-19"
## [2856] "2003-06-16" "1996-06-17" "1996-06-27" "1996-10-10" "1996-06-12"
## [2861] "1996-06-13" "1997-02-06" "2000-07-13" "1996-05-20" "1996-05-21"
## [2866] "1996-11-25" "1996-05-23" "1996-10-25" "1996-05-22" "1996-05-15"
## [2871] "1996-05-17" "1996-06-25" "1996-05-30" "1996-05-31" "1997-05-08"
## [2876] "1996-05-27" "1996-07-29" "1996-05-28" "1996-07-05" "1996-07-11"
## [2881] "1997-01-17" "1996-07-08" "1996-07-30" "1996-07-01" "1996-07-02"
## [2886] "1996-07-03" "2006-01-03" "2008-03-11" "1996-07-10" "1996-07-12"
## [2891] "2000-02-14" "1996-07-09" "1997-03-25" "1996-08-05" "2007-10-24"
## [2896] "1996-06-20" "1996-06-21" "2000-08-07" "1996-06-24" "2008-01-03"
## [2901] "1997-06-18" "1997-02-18" "1996-06-18" "2000-04-04" "1997-06-09"
## [2906] "1996-06-28" "1996-06-26" "2000-07-05" "1996-04-15" "1996-04-16"
## [2911] "1996-04-12" "1996-10-24" "2007-06-13" "1997-01-30" "1996-04-08"
## [2916] "1996-04-02" "1996-04-04" "2006-09-04" "1996-10-17" "1996-04-10"
## [2921] "1997-04-18" "1996-11-02" "1996-05-03" "1996-04-30" "1996-05-02"
## [2926] "1996-04-26" "1996-05-09" "1996-05-08" "2003-05-19" "1996-05-10"
## [2931] "1996-08-13" "2008-10-20" "1996-05-06" "1996-05-07" "2007-08-23"
## [2936] "1996-04-20" "2000-09-07" "2010-04-05" "1996-04-24" "1996-04-25"
## [2941] "1996-05-16" "1996-04-23" "1996-04-22" "1996-01-09" "1995-06-28"
## [2946] "1995-06-27" "1995-06-23" "1997-06-11" "1995-06-22" "1995-06-26"
## [2951] "1995-07-06" "1995-07-12" "1995-07-10" "1999-03-15" "1995-06-30"
## [2956] "1997-02-05" "1995-06-13" "1995-06-12" "1995-06-14" "2000-12-26"
## [2961] "1995-07-25" "1995-06-08" "1995-06-19" "1999-12-29" "1995-06-21"
## [2966] "1995-07-05" "1997-01-21" "1995-06-15" "1997-04-03" "1995-10-04"
## [2971] "1995-08-09" "1995-09-20" "1995-08-17" "1995-08-16" "1995-08-29"
## [2976] "1995-08-04" "1995-07-31" "1995-09-25" "1995-08-10" "1995-08-01"
## [2981] "2008-11-03" "1995-08-18" "1995-09-01" "1995-08-31" "1995-09-04"
## [2986] "1995-08-22" "1995-09-26" "1995-08-21" "1995-09-07" "1995-08-28"
## [2991] "1995-09-15" "1995-09-29" "1995-09-06" "1995-07-14" "1995-07-17"
## [2996] "1995-07-18" "1997-01-28" "1995-07-11" "1995-07-13" "2000-07-10"
## [3001] "2000-03-09" "1999-11-23" "1995-07-27" "1995-07-28" "1995-07-26"
## [3006] "1995-07-19" "1995-07-21" "1996-05-24" "1995-07-20" "1995-12-22"
## [3011] "1995-04-25" "1995-05-01" "1995-05-03" "1999-11-19" "1995-04-28"
## [3016] "2004-08-27" "1995-04-21" "1995-04-22" "1995-05-02" "1995-05-10"
## [3021] "1999-10-18" "1995-05-05" "1995-05-04" "1997-06-03" "1995-05-09"
## [3026] "1995-04-20" "1995-04-19" "1995-02-20" "2009-02-02" "1995-01-16"
## [3031] "1995-02-22" "1995-02-21" "2005-12-28" "1995-02-23" "2000-05-12"
## [3036] "2003-07-31" "1995-04-09" "1995-04-06" "1995-03-16" "1995-03-07"
## [3041] "1996-09-11" "1999-05-12" "1995-05-22" "1995-05-19" "1995-05-25"
## [3046] "1995-07-03" "1996-09-10" "1995-11-30" "1995-06-02" "1995-06-01"
## [3051] "1995-10-23" "1995-06-06" "1995-06-05" "1995-10-02" "1997-04-10"
## [3056] "1995-11-29" "1995-05-26" "1995-05-24" "1995-05-29" "1995-05-31"
## [3061] "1995-05-30" "2000-07-19" "1996-07-26" "1996-08-07" "1997-02-03"
## [3066] "1997-02-01" "1997-07-08" "1996-10-14" "1995-05-15" "1997-02-14"
## [3071] "1995-05-12" "1995-10-30" "1995-10-28" "1996-11-11" "1995-11-03"
## [3076] "1995-11-06" "1995-11-28" "1995-10-31" "1995-10-26" "2006-10-10"
## [3081] "1995-10-25" "2004-06-15" "1995-10-27" "1996-11-13" "2009-10-27"
## [3086] "1997-02-17" "1995-11-27" "1995-12-05" "1995-12-07" "1995-12-09"
## [3091] "1995-12-02" "1995-12-04" "2009-03-02" "1997-02-27" "1995-11-13"
## [3096] "1995-11-16" "1995-11-10" "1995-11-07" "1995-11-20" "1995-11-11"
## [3101] "1995-11-22" "1995-11-24" "1995-11-23" "1995-11-21" "1995-11-18"
## [3106] "1995-11-17" "1995-09-27" "1995-10-24" "1996-02-03" "1997-06-26"
## [3111] "1997-03-13" "1995-10-03" "1995-09-22" "1999-12-27" "2000-01-14"
## [3116] "1996-07-22" "1995-09-28" "1995-10-06" "1995-09-12" "1995-09-14"
## [3121] "1995-09-13" "2000-11-21" "1996-08-01" "1995-10-16" "1995-09-08"
## [3126] "1995-09-11" "1995-09-18" "1995-09-21" "1996-07-16" "1995-10-20"
## [3131] "1995-10-21" "1995-10-19" "1999-11-27" "2010-03-22" "2008-11-26"
## [3136] "2000-05-26" "1997-05-16" "1995-10-07" "1995-10-09" "1995-10-05"
## [3141] "1997-05-09" "1995-10-11" "1995-10-18" "1999-12-10" "1995-10-13"
## [3146] "1995-10-14" "1995-10-17" "1997-03-26" "1997-07-16" "1997-03-31"
## [3151] "1997-04-02" "1997-04-04" "2000-01-04" "1997-04-01" "1997-03-22"
## [3156] "1997-03-15" "1997-03-14" "1997-04-09" "1997-03-17" "1997-04-16"
## [3161] "1997-03-20" "1997-03-21" "1997-03-18" "1997-07-15" "1997-06-17"
## [3166] "1997-04-21" "1997-04-25" "1997-05-05" "1997-04-17" "1997-04-30"
## [3171] "1997-04-24" "1997-05-13" "1997-04-22" "1997-04-23" "1997-04-08"
## [3176] "1997-04-07" "1997-04-15" "1997-04-29" "1997-04-14" "1997-04-12"
## [3181] "1997-04-11" "1998-01-24" "2000-10-09" "1997-02-21" "1997-06-30"
## [3186] "1997-03-11" "1997-03-03" "1997-02-19" "1997-02-28" "1997-02-20"
## [3191] "1997-03-10" "1997-10-29" "1997-02-24" "1997-02-25" "1997-02-13"
## [3196] "1997-02-12" "1997-02-11" "1997-03-05" "1997-02-15" "2009-06-11"
## [3201] "1997-03-08" "2000-04-13" "1997-03-07" "1997-03-06" "1997-03-12"
## [3206] "1997-03-01" "2000-03-10" "1997-02-26" "1997-03-04" "1997-06-27"
## [3211] "1997-07-28" "1997-07-14" "1997-07-03" "1999-04-26" "1999-05-27"
## [3216] "1997-07-04" "1997-07-02" "1997-07-01" "2000-03-16" "1997-06-25"
## [3221] "1997-06-19" "2004-01-21" "1997-07-11" "1997-06-24" "1997-06-23"
## [3226] "1997-07-21" "1997-07-22" "1997-07-17" "1997-07-18" "1997-07-25"
## [3231] "1997-07-29" "1997-07-23" "1997-07-24" "1999-12-21" "1997-07-09"
## [3236] "1997-07-10" "1997-06-13" "2006-03-30" "2005-12-21" "1999-03-04"
## [3241] "1997-08-18" "1997-05-19" "1997-05-23" "1997-05-15" "1997-05-02"
## [3246] "1997-04-28" "2000-11-06" "2000-11-14" "1997-05-07" "1997-06-20"
## [3251] "1997-05-06" "1997-05-20" "2003-04-29" "1997-06-10" "1997-06-06"
## [3256] "1997-06-04" "2000-06-04" "1997-06-12" "1997-05-26" "1997-05-27"
## [3261] "1997-05-22" "1997-05-21" "1997-05-30" "1997-05-28" "1997-05-29"
## [3266] "1996-10-29" "1996-10-30" "1996-10-23" "1996-11-04" "1996-10-18"
## [3271] "1996-10-21" "1996-11-05" "1996-10-28" "1999-01-27" "1996-10-31"
## [3276] "2007-03-15" "1999-02-19" "1996-10-09" "1996-10-16" "1996-10-15"
## [3281] "1996-12-17" "2000-04-05" "1996-11-06" "1996-11-28" "1996-11-21"
## [3286] "1996-12-30" "2003-07-03" "1996-11-12" "1996-11-08" "1996-11-07"
## [3291] "1999-07-05" "1996-11-22" "1996-11-18" "2000-02-23" "1997-01-15"
## [3296] "1999-05-10" "2003-08-05" "1999-03-01" "1996-08-08" "1996-10-08"
## [3301] "1996-09-04" "1996-08-09" "1996-08-22" "1996-08-21" "1999-01-28"
## [3306] "2006-10-23" "1996-08-26" "1996-08-23" "1996-08-12" "1996-08-28"
## [3311] "1996-09-19" "1996-07-17" "1996-07-18" "1996-07-19" "1996-07-24"
## [3316] "1996-09-02" "2000-04-14" "1996-07-23" "1996-09-26" "1996-09-25"
## [3321] "1996-09-30" "1996-09-23" "1996-09-24" "1996-10-05" "1996-10-07"
## [3326] "1996-10-01" "1999-09-27" "1999-05-21" "1996-10-02" "1996-10-03"
## [3331] "1996-09-09" "1996-09-06" "1999-04-17" "1996-08-27" "1996-08-29"
## [3336] "1996-08-30" "1996-09-17" "1996-09-18" "2006-05-19" "1996-09-27"
## [3341] "1997-01-14" "1997-01-20" "2009-04-27" "1997-01-10" "2008-04-23"
## [3346] "1997-01-11" "2007-08-28" "1997-01-18" "1997-02-08" "1997-01-31"
## [3351] "1997-01-27" "2000-03-23" "1997-01-16" "1997-02-04" "1996-12-31"
## [3356] "1996-12-27" "1997-01-02" "1997-01-08" "1997-01-07" "1997-01-09"
## [3361] "2000-04-06" "2000-02-01" "1997-02-07" "1997-02-10" "1997-01-29"
## [3366] "1997-01-22" "2003-09-26" "1997-01-24" "2000-08-10" "1996-11-27"
## [3371] "1996-12-04" "1999-08-18" "1996-12-05" "2000-12-13" "1996-12-07"
## [3376] "1996-12-12" "1996-12-09" "1996-11-29" "1996-12-03" "1996-11-16"
## [3381] "1996-11-15" "1999-03-09" "1996-11-14" "1996-11-19" "1996-11-26"
## [3386] "2005-03-02" "1996-11-20" "1996-12-19" "1996-12-21" "1996-12-18"
## [3391] "1996-12-26" "1996-12-24" "2000-04-24" "1996-12-11" "2004-06-17"
## [3396] "1999-04-29" "2000-03-27" "1996-12-10" "2000-12-19" "1996-12-13"
## [3401] "1996-12-14" "2000-07-04" "2000-07-03" "2000-07-06" "2000-07-07"
## [3406] "2003-06-06" "2000-07-11" "2000-10-05" "2000-06-27" "2000-06-26"
## [3411] "2004-07-13" "2000-07-27" "2000-07-12" "2000-10-19" "2000-07-14"
## [3416] "2008-10-07" "2000-07-17" "2000-05-30" "2000-07-28" "2000-05-31"
## [3421] "2000-05-29" "2000-11-30" "2000-06-05" "2004-09-28" "2000-06-01"
## [3426] "2000-06-02" "2000-05-23" "2000-05-22" "2000-05-24" "2000-05-19"
## [3431] "2000-05-25" "2000-06-19" "2000-06-14" "2000-06-22" "2000-06-21"
## [3436] "2000-06-20" "2000-06-07" "2000-06-09" "2000-06-08" "2000-06-06"
## [3441] "2000-06-13" "2000-07-15" "2000-11-20" "2000-08-04" "2000-08-03"
## [3446] "2003-07-29" "2000-09-01" "2000-08-08" "2003-07-10" "2000-11-04"
## [3451] "2000-08-02" "2006-12-11" "2000-08-16" "2000-08-09" "2000-09-11"
## [3456] "2000-08-17" "2000-08-23" "2000-12-14" "2000-08-22" "2000-10-17"
## [3461] "2005-04-11" "2000-08-11" "2000-10-18" "2000-07-20" "2007-06-07"
## [3466] "2003-08-12" "2000-07-21" "2000-07-26" "2006-10-30" "2003-11-24"
## [3471] "2000-07-18" "2004-12-03" "2004-04-05" "2005-05-09" "2000-07-24"
## [3476] "2000-10-16" "2005-07-05" "2000-07-25" "2003-09-22" "2008-11-12"
## [3481] "2000-03-20" "2000-09-25" "2000-08-24" "2000-10-28" "2000-03-28"
## [3486] "2000-11-08" "2000-03-17" "2004-09-20" "2000-04-03" "2000-04-07"
## [3491] "2000-03-25" "2000-03-29" "2003-05-06" "2000-04-26" "2008-08-18"
## [3496] "2000-03-24" "2000-04-25" "2000-03-11" "2000-03-07" "2000-03-08"
## [3501] "2000-03-02" "2007-08-22" "2000-03-01" "2000-03-14" "2005-09-05"
## [3506] "2000-03-03" "2000-03-13" "2000-03-30" "2000-09-27" "2000-05-03"
## [3511] "2000-05-02" "2000-04-27" "2000-04-28" "2000-05-05" "2000-04-19"
## [3516] "2000-09-22" "2008-07-23" "2000-05-15" "2000-05-16" "2000-05-11"
## [3521] "2000-05-18" "2000-05-09" "2004-10-19" "2000-05-10" "2000-04-10"
## [3526] "2000-03-31" "2003-06-20" "2000-04-17" "2004-11-29" "2000-04-18"
## [3531] "2000-04-11" "2010-03-12" "2000-04-12" "2007-07-21" "2000-11-16"
## [3536] "2000-11-17" "2000-11-18" "2006-07-28" "2003-06-09" "2000-11-15"
## [3541] "2006-03-02" "2000-11-29" "2000-11-22" "2000-11-24" "2004-11-05"
## [3546] "2000-12-20" "2000-10-31" "2000-11-02" "2000-10-27" "2000-10-26"
## [3551] "2005-06-15" "2000-10-25" "2009-01-26" "2000-11-09" "2000-11-11"
## [3556] "2006-09-07" "2000-12-27" "2001-01-05" "2000-12-21" "2008-09-02"
## [3561] "2000-12-23" "2000-12-22" "2001-01-04" "2005-08-08" "2001-01-03"
## [3566] "2007-07-22" "2004-06-29" "2000-12-30" "2000-12-07" "2000-12-05"
## [3571] "2000-12-11" "2000-12-09" "2000-12-12" "2000-12-02" "2000-12-16"
## [3576] "2000-12-15" "2000-09-19" "2000-09-20" "2000-09-21" "2000-09-14"
## [3581] "2000-09-15" "2000-09-13" "2000-09-26" "2007-12-13" "2005-08-17"
## [3586] "2000-09-28" "2000-10-20" "2000-09-29" "2006-05-17" "2006-04-17"
## [3591] "2004-12-20" "2000-08-31" "2000-09-04" "2000-09-05" "2000-08-25"
## [3596] "2000-08-29" "2009-03-23" "2000-09-06" "2000-09-08" "2004-02-12"
## [3601] "2006-05-03" "2000-10-13" "2000-10-11" "2000-10-24" "2000-10-14"
## [3606] "2000-10-23" "2006-01-20" "2000-10-21" "2000-10-03" "2008-02-06"
## [3611] "2000-10-04" "2006-02-14" "2003-09-18" "2000-10-07" "1999-05-17"
## [3616] "1999-05-14" "2000-01-17" "1999-06-23" "1999-05-13" "1999-10-27"
## [3621] "1999-05-19" "1999-06-09" "1999-05-20" "1999-05-18" "1999-09-06"
## [3626] "1999-05-11" "2009-07-03" "1999-05-31" "1999-05-28" "1999-06-08"
## [3631] "1999-06-02" "1999-06-01" "1999-05-24" "1999-05-26" "1999-05-25"
## [3636] "1999-04-20" "2003-06-18" "1999-04-21" "1999-04-19" "1999-04-23"
## [3641] "1999-04-22" "1999-04-13" "1999-04-27" "1999-04-16" "1999-04-15"
## [3646] "2005-08-02" "1999-06-11" "1999-05-03" "2000-06-23" "1999-04-30"
## [3651] "1999-05-05" "1999-05-06" "1999-05-04" "1999-04-24" "1999-04-28"
## [3656] "1999-06-30" "1999-06-28" "1999-07-01" "1999-07-08" "2008-11-17"
## [3661] "1999-07-19" "1999-07-20" "1999-07-27" "1999-09-16" "1999-08-06"
## [3666] "1999-07-15" "1999-07-23" "2005-06-03" "1999-11-12" "1999-07-21"
## [3671] "1999-07-22" "1999-07-29" "1999-07-07" "1999-07-02" "1999-12-15"
## [3676] "1999-07-14" "1999-07-13" "1999-09-10" "2000-02-04" "1999-07-12"
## [3681] "2007-05-07" "1999-06-10" "2009-12-14" "1999-06-04" "2008-10-16"
## [3686] "2003-06-03" "1999-08-27" "1999-06-16" "1999-06-17" "1999-02-11"
## [3691] "1999-01-29" "1999-01-26" "1999-02-09" "1999-01-22" "1999-02-08"
## [3696] "1999-01-19" "1999-02-04" "2007-03-29" "1999-02-15" "1999-02-12"
## [3701] "1999-02-22" "1999-02-13" "1999-03-03" "1999-02-17" "1999-02-03"
## [3706] "1999-02-05" "1999-02-06" "2004-05-18" "1999-01-07" "1999-11-08"
## [3711] "1998-12-26" "1999-01-16" "1999-03-23" "1999-01-11" "1999-04-08"
## [3716] "1999-03-25" "1999-03-24" "1999-10-11" "1999-03-16" "1999-03-17"
## [3721] "1999-03-18" "1999-03-19" "1999-04-09" "1999-03-20" "2011-08-28"
## [3726] "1999-04-07" "1999-04-06" "1999-10-09" "1999-03-29" "1999-03-30"
## [3731] "1999-03-26" "1999-03-27" "1999-04-05" "1999-03-31" "1999-02-25"
## [3736] "1999-08-16" "1999-02-26" "1999-02-24" "2005-08-29" "1999-02-27"
## [3741] "1999-02-16" "1999-09-13" "1999-03-10" "2009-02-18" "1999-08-26"
## [3746] "1999-10-26" "1999-03-06" "2000-01-07" "2000-01-10" "2003-11-10"
## [3751] "2000-01-05" "2000-02-09" "2000-01-24" "2000-01-11" "2000-01-13"
## [3756] "1999-12-30" "2000-01-03" "2005-09-21" "2000-01-20" "2011-01-21"
## [3761] "2000-01-19" "2000-01-21" "2000-01-25" "2004-02-27" "2000-01-22"
## [3766] "2004-12-28" "2000-01-12" "2000-01-18" "2000-01-27" "1999-12-16"
## [3771] "1999-12-09" "2000-03-04" "1999-12-14" "1999-12-13" "1999-12-02"
## [3776] "1999-11-30" "1999-12-07" "1999-12-23" "1999-12-22" "1999-12-24"
## [3781] "2010-01-11" "1999-12-17" "2000-02-21" "2000-02-18" "2000-02-19"
## [3786] "2000-02-22" "2000-02-16" "2000-02-17" "2000-02-28" "2004-12-21"
## [3791] "2008-09-10" "2008-11-13" "2000-02-25" "2000-02-26" "2000-01-31"
## [3796] "2008-09-30" "2000-01-28" "2000-01-26" "2000-01-29" "2000-02-10"
## [3801] "2010-01-04" "2000-02-12" "2000-02-05" "2000-02-08" "1999-09-21"
## [3806] "1999-09-20" "2008-07-11" "1999-09-22" "1999-09-24" "1999-10-01"
## [3811] "2005-09-08" "1999-09-23" "1999-09-09" "2003-08-26" "2009-12-30"
## [3816] "1999-09-14" "1999-10-06" "1999-10-15" "2006-04-24" "1999-10-08"
## [3821] "1999-10-07" "1999-09-30" "1999-09-28" "1999-09-29" "1999-10-21"
## [3826] "1999-10-04" "1999-08-17" "1999-08-11" "1999-08-10" "1999-08-13"
## [3831] "1999-08-12" "1999-08-24" "1999-08-19" "1999-08-23" "1999-07-30"
## [3836] "2005-05-03" "1999-08-02" "2003-09-01" "1999-11-25" "1999-08-09"
## [3841] "1999-08-03" "1999-09-03" "1999-09-07" "1999-11-09" "1999-08-31"
## [3846] "1999-11-16" "1999-11-26" "1999-11-13" "1999-11-18" "1999-11-22"
## [3851] "1999-11-17" "1999-11-06" "2007-02-15" "1999-11-11" "2006-01-04"
## [3856] "1999-11-24" "1999-11-29" "1999-10-19" "1999-10-20" "2007-05-27"
## [3861] "1999-10-16" "1999-10-13" "1999-10-14" "1999-10-30" "1999-11-03"
## [3866] "1999-10-23" "2005-12-30" "2007-06-18" "2007-06-19" "2007-06-17"
## [3871] "2007-06-21" "2007-11-23" "2007-06-14" "2007-06-12" "2007-06-16"
## [3876] "2008-08-05" "2007-06-28" "2007-06-29" "2007-06-27" "2007-07-01"
## [3881] "2007-07-02" "2007-06-24" "2007-06-25" "2007-06-23" "2007-06-22"
## [3886] "2007-08-10" "2007-07-09" "2007-06-26" "2007-07-05" "2007-09-25"
## [3891] "2007-05-30" "2007-05-31" "2007-05-29" "2007-06-05" "2007-05-24"
## [3896] "2007-05-25" "2007-05-23" "2007-05-26" "2007-06-08" "2007-06-11"
## [3901] "2007-06-10" "2007-08-08" "2007-06-02" "2007-06-03" "2007-06-06"
## [3906] "2007-07-31" "2007-07-29" "2007-07-28" "2007-07-30" "2007-07-27"
## [3911] "2007-07-25" "2007-07-24" "2008-07-21" "2007-07-23" "2007-07-26"
## [3916] "2007-11-08" "2007-08-27" "2007-08-06" "2007-08-04" "2007-08-05"
## [3921] "2007-08-07" "2007-08-01" "2007-08-02" "2007-07-10" "2007-07-08"
## [3926] "2007-07-12" "2007-09-04" "2007-07-15" "2007-07-11" "2007-07-07"
## [3931] "2007-07-06" "2007-07-03" "2007-07-04" "2007-07-19" "2007-07-20"
## [3936] "2007-07-18" "2007-07-16" "2007-07-17" "2007-07-14" "2007-12-31"
## [3941] "2007-03-13" "2007-03-14" "2007-03-12" "2007-03-17" "2007-03-16"
## [3946] "2007-03-19" "2007-03-18" "2007-03-07" "2008-07-24" "2007-03-09"
## [3951] "2007-03-05" "2007-03-06" "2007-03-10" "2007-03-11" "2007-03-08"
## [3956] "2007-03-27" "2007-03-28" "2007-03-26" "2007-03-30" "2007-05-10"
## [3961] "2007-03-31" "2007-04-10" "2007-04-03" "2007-03-21" "2007-04-17"
## [3966] "2007-03-22" "2007-04-20" "2007-03-20" "2007-03-24" "2007-03-23"
## [3971] "2007-03-25" "2008-05-08" "2007-04-30" "2007-02-17" "2007-02-18"
## [3976] "2007-02-16" "2007-02-19" "2007-02-20" "2007-02-13" "2007-02-12"
## [3981] "2007-02-11" "2007-02-14" "2007-02-28" "2007-03-04" "2007-03-02"
## [3986] "2009-10-23" "2007-02-22" "2008-02-18" "2007-02-23" "2008-01-15"
## [3991] "2007-02-25" "2007-02-26" "2007-02-24" "2007-04-01" "2007-05-08"
## [3996] "2007-05-06" "2007-05-11" "2007-05-12" "2007-05-09" "2007-05-01"
## [4001] "2007-05-02" "2007-04-29" "2007-05-04" "2007-05-05" "2007-05-21"
## [4006] "2007-05-19" "2007-05-18" "2007-05-20" "2007-05-22" "2007-05-15"
## [4011] "2007-05-14" "2007-05-16" "2007-05-17" "2007-04-11" "2007-04-05"
## [4016] "2007-04-16" "2007-04-15" "2007-04-14" "2007-04-13" "2007-04-04"
## [4021] "2009-07-22" "2007-04-02" "2007-04-09" "2007-04-07" "2007-04-26"
## [4026] "2007-04-25" "2007-04-27" "2007-04-18" "2007-04-19" "2007-04-21"
## [4031] "2008-12-18" "2007-11-15" "2007-11-14" "2007-11-13" "2007-11-18"
## [4036] "2007-11-17" "2007-11-19" "2007-11-10" "2007-11-09" "2007-11-11"
## [4041] "2007-11-12" "2009-09-30" "2007-11-28" "2007-12-05" "2007-11-27"
## [4046] "2007-12-01" "2007-11-29" "2007-11-25" "2007-11-26" "2007-11-30"
## [4051] "2007-11-21" "2007-11-22" "2007-11-20" "2007-11-24" "2007-12-25"
## [4056] "2007-10-25" "2007-10-26" "2007-10-27" "2007-11-02" "2007-10-20"
## [4061] "2007-10-19" "2007-10-23" "2014-05-12" "2007-11-05" "2007-11-03"
## [4066] "2007-11-04" "2007-11-07" "2008-04-18" "2007-10-30" "2007-10-31"
## [4071] "2007-11-01" "2008-01-09" "2008-01-08" "2008-01-07" "2008-01-06"
## [4076] "2008-01-11" "2008-01-25" "2008-01-10" "2008-01-16" "2008-01-05"
## [4081] "2008-01-02" "2008-01-01" "2007-12-30" "2008-01-04" "2008-03-27"
## [4086] "2008-01-20" "2008-01-21" "2008-01-19" "2008-01-18" "2008-01-23"
## [4091] "2008-01-22" "2008-01-14" "2008-01-13" "2008-01-12" "2008-01-17"
## [4096] "2008-01-24" "2007-12-12" "2007-12-11" "2008-09-17" "2007-12-16"
## [4101] "2007-12-15" "2007-12-17" "2007-12-14" "2007-12-24" "2007-12-19"
## [4106] "2007-12-04" "2007-12-03" "2007-12-07" "2007-12-10" "2007-12-26"
## [4111] "2007-12-28" "2007-12-29" "2007-12-20" "2007-12-21" "2007-12-18"
## [4116] "2007-12-23" "2007-12-22" "2008-03-17" "2007-09-03" "2007-08-31"
## [4121] "2007-09-02" "2007-09-01" "2007-09-05" "2007-08-29" "2007-08-30"
## [4126] "2009-09-17" "2007-09-17" "2007-09-13" "2007-09-15" "2007-09-12"
## [4131] "2007-09-16" "2007-09-19" "2007-09-14" "2007-09-07" "2007-09-06"
## [4136] "2008-10-03" "2007-09-10" "2007-09-18" "2008-07-09" "2007-09-08"
## [4141] "2007-09-09" "2007-08-13" "2007-08-14" "2007-08-12" "2008-09-22"
## [4146] "2007-08-09" "2007-08-11" "2010-09-28" "2007-08-21" "2007-08-26"
## [4151] "2007-08-25" "2007-08-24" "2007-08-19" "2007-08-18" "2007-08-20"
## [4156] "2007-08-17" "2007-10-11" "2007-10-10" "2008-09-23" "2007-10-08"
## [4161] "2008-07-18" "2007-10-05" "2007-10-06" "2007-10-04" "2007-10-07"
## [4166] "2007-10-15" "2007-10-17" "2007-10-18" "2007-10-16" "2007-10-14"
## [4171] "2007-10-12" "2007-09-24" "2007-09-23" "2008-03-10" "2007-09-21"
## [4176] "2007-09-22" "2007-09-26" "2007-09-20" "2007-10-02" "2007-10-03"
## [4181] "2007-09-27" "2007-09-28" "2007-09-30" "2007-09-29" "2006-09-01"
## [4186] "2006-09-19" "2006-09-03" "2006-08-31" "2006-09-05" "2006-08-29"
## [4191] "2006-08-30" "2006-09-21" "2008-12-21" "2006-10-06" "2006-09-08"
## [4196] "2006-09-09" "2006-09-10" "2006-09-12" "2006-09-13" "2006-09-14"
## [4201] "2006-10-21" "2006-10-18" "2009-08-11" "2006-08-19" "2006-12-18"
## [4206] "2006-08-21" "2006-10-17" "2008-11-07" "2006-08-20" "2006-09-26"
## [4211] "2006-08-15" "2006-08-14" "2006-08-16" "2009-01-27" "2010-04-08"
## [4216] "2006-08-25" "2006-08-24" "2006-08-26" "2006-08-27" "2006-08-22"
## [4221] "2006-12-20" "2006-08-23" "2006-10-07" "2006-09-30" "2006-10-01"
## [4226] "2007-01-16" "2006-10-11" "2006-10-13" "2006-10-12" "2006-10-08"
## [4231] "2006-10-15" "2006-09-20" "2006-09-25" "2006-09-22" "2006-09-15"
## [4236] "2006-09-17" "2006-11-25" "2006-09-16" "2006-09-27" "2006-09-28"
## [4241] "2006-09-29" "2006-09-24" "2006-09-23" "2006-06-28" "2006-06-27"
## [4246] "2008-10-02" "2006-06-30" "2006-06-29" "2006-08-09" "2006-06-23"
## [4251] "2006-06-21" "2009-07-24" "2006-06-26" "2007-01-23" "2006-06-24"
## [4256] "2006-07-05" "2006-07-06" "2006-07-07" "2006-07-10" "2006-07-09"
## [4261] "2006-07-08" "2006-07-02" "2006-07-01" "2006-12-26" "2006-07-04"
## [4266] "2010-02-09" "2006-06-10" "2006-06-11" "2006-06-15" "2006-06-12"
## [4271] "2006-06-13" "2006-06-08" "2006-07-12" "2006-06-19" "2006-06-17"
## [4276] "2006-06-18" "2006-06-20" "2006-06-16" "2006-08-03" "2006-08-08"
## [4281] "2006-08-02" "2006-08-05" "2006-08-11" "2006-08-04" "2006-08-06"
## [4286] "2006-07-29" "2006-07-30" "2006-07-31" "2006-07-27" "2009-12-16"
## [4291] "2006-08-01" "2006-08-10" "2006-08-12" "2006-08-13" "2006-07-17"
## [4296] "2006-07-18" "2006-07-14" "2006-07-16" "2006-07-15" "2006-11-23"
## [4301] "2006-07-19" "2006-10-26" "2006-11-06" "2006-07-11" "2006-07-25"
## [4306] "2006-07-26" "2006-07-24" "2006-10-16" "2006-07-21" "2006-07-20"
## [4311] "2009-07-23" "2006-07-22" "2006-07-23" "2007-01-04" "2007-01-03"
## [4316] "2007-01-06" "2007-01-07" "2007-01-08" "2006-12-30" "2006-12-31"
## [4321] "2006-12-28" "2007-01-01" "2007-01-12" "2007-01-14" "2007-01-15"
## [4326] "2007-01-13" "2007-01-09" "2007-01-10" "2006-12-14" "2006-12-15"
## [4331] "2006-12-13" "2006-12-17" "2006-12-08" "2006-12-10" "2006-12-12"
## [4336] "2006-12-27" "2006-12-24" "2006-12-25" "2008-09-24" "2009-03-12"
## [4341] "2006-12-19" "2009-10-01" "2006-12-22" "2007-02-01" "2007-02-05"
## [4346] "2007-01-31" "2007-02-03" "2007-01-29" "2007-01-30" "2008-07-04"
## [4351] "2007-02-07" "2007-02-06" "2007-02-10" "2007-02-09" "2007-02-04"
## [4356] "2007-05-13" "2007-01-28" "2008-01-31" "2007-01-19" "2007-01-18"
## [4361] "2007-01-21" "2007-01-20" "2007-01-17" "2007-01-22" "2007-01-25"
## [4366] "2007-01-24" "2007-01-27" "2008-11-05" "2006-10-29" "2006-10-31"
## [4371] "2008-12-02" "2006-10-27" "2006-10-25" "2006-10-28" "2006-11-05"
## [4376] "2006-11-07" "2009-10-06" "2006-11-08" "2006-11-03" "2006-11-02"
## [4381] "2006-11-04" "2006-11-22" "2006-10-19" "2006-10-14" "2006-10-24"
## [4386] "2006-12-05" "2006-10-20" "2006-10-22" "2006-11-27" "2006-11-29"
## [4391] "2006-11-21" "2006-11-24" "2006-12-04" "2006-12-07" "2006-12-06"
## [4396] "2006-11-30" "2006-12-01" "2006-12-03" "2006-12-02" "2006-11-11"
## [4401] "2006-11-12" "2006-11-10" "2006-11-13" "2006-11-09" "2006-11-18"
## [4406] "2006-11-19" "2006-11-17" "2006-11-20" "2006-11-14" "2006-11-16"
## [4411] "2009-02-11" "2009-02-10" "2009-02-13" "2009-02-14" "2009-02-15"
## [4416] "2009-03-13" "2009-02-07" "2009-02-06" "2009-02-08" "2009-02-09"
## [4421] "2009-02-23" "2009-02-24" "2009-02-20" "2009-02-21" "2009-02-25"
## [4426] "2009-02-26" "2009-02-16" "2009-02-19" "2009-06-19" "2009-02-05"
## [4431] "2009-01-28" "2009-01-30" "2009-04-22" "2009-02-04" "2009-02-03"
## [4436] "2009-04-30" "2009-02-01" "2009-03-20" "2009-01-31" "2009-05-06"
## [4441] "2009-05-07" "2009-05-08" "2009-04-29" "2009-08-28" "2009-05-04"
## [4446] "2009-05-03" "2009-05-09" "2009-05-18" "2009-05-17" "2009-05-13"
## [4451] "2009-05-14" "2009-05-19" "2009-06-23" "2009-05-11" "2009-07-15"
## [4456] "2009-04-15" "2009-04-21" "2009-04-20" "2009-04-08" "2009-04-14"
## [4461] "2009-04-13" "2009-04-28" "2009-06-10" "2009-06-09" "2009-06-15"
## [4466] "2009-06-12" "2009-06-05" "2009-06-04" "2009-06-08" "2009-11-23"
## [4471] "2009-06-17" "2009-06-18" "2009-06-22" "2009-06-16" "2009-05-25"
## [4476] "2009-05-27" "2009-05-26" "2009-05-24" "2009-05-21" "2009-05-20"
## [4481] "2009-06-02" "2009-05-22" "2009-06-03" "2009-06-24" "2009-05-29"
## [4486] "2009-03-16" "2009-03-08" "2009-03-07" "2009-03-05" "2009-03-10"
## [4491] "2009-03-14" "2009-03-15" "2009-03-11" "2009-02-27" "2009-02-28"
## [4496] "2009-03-03" "2009-11-03" "2009-03-01" "2009-03-31" "2009-03-30"
## [4501] "2009-04-03" "2009-03-27" "2009-03-28" "2009-04-06" "2009-04-07"
## [4506] "2009-04-01" "2009-04-02" "2009-03-19" "2009-03-18" "2010-01-18"
## [4511] "2009-03-26" "2009-03-22" "2008-11-24" "2008-11-27" "2008-11-20"
## [4516] "2008-11-22" "2009-01-24" "2008-11-23" "2008-11-28" "2008-12-03"
## [4521] "2008-12-04" "2008-12-05" "2008-12-06" "2008-12-12" "2008-11-29"
## [4526] "2008-11-30" "2008-11-14" "2008-11-11" "2008-11-10" "2008-11-06"
## [4531] "2008-11-09" "2008-11-08" "2008-12-07" "2008-11-15" "2008-11-16"
## [4536] "2008-11-18" "2008-12-29" "2009-01-12" "2009-01-13" "2009-01-16"
## [4541] "2009-01-15" "2009-01-06" "2009-01-07" "2009-01-04" "2009-01-03"
## [4546] "2009-01-09" "2009-01-10" "2009-01-08" "2009-01-22" "2009-01-21"
## [4551] "2009-01-23" "2009-01-25" "2009-01-19" "2009-01-17" "2009-01-20"
## [4556] "2008-12-15" "2008-12-14" "2008-12-13" "2008-12-19" "2008-12-24"
## [4561] "2008-12-09" "2008-12-08" "2008-12-10" "2008-12-11" "2008-12-30"
## [4566] "2009-01-02" "2008-12-28" "2009-01-01" "2008-12-31" "2008-12-23"
## [4571] "2008-12-22" "2008-12-20" "2008-12-26" "2008-12-27" "2008-12-25"
## [4576] "2010-02-10" "2010-02-12" "2010-02-08" "2010-02-07" "2010-02-13"
## [4581] "2010-02-14" "2010-02-15" "2010-02-03" "2010-02-02" "2010-02-01"
## [4586] "2010-02-05" "2010-02-06" "2010-02-19" "2010-03-03" "2010-02-27"
## [4591] "2010-03-01" "2010-03-02" "2010-02-25" "2010-03-04" "2010-03-05"
## [4596] "2010-03-09" "2010-02-24" "2010-02-18" "2010-02-22" "2010-02-23"
## [4601] "2010-02-21" "2010-01-14" "2010-01-13" "2010-01-12" "2010-01-19"
## [4606] "2010-01-15" "2010-01-17" "2010-01-05" "2010-01-29" "2010-01-01"
## [4611] "2009-12-29" "2009-12-31" "2010-01-09" "2010-01-08" "2010-01-27"
## [4616] "2010-01-26" "2010-01-30" "2010-01-20" "2010-01-25" "2010-01-22"
## [4621] "2010-04-07" "2010-04-12" "2010-04-09" "2010-03-31" "2010-04-01"
## [4626] "2010-03-30" "2010-04-03" "2010-04-02" "2010-04-13" "2010-04-15"
## [4631] "2010-04-10" "2010-04-11" "2010-03-15" "2010-03-16" "2010-03-14"
## [4636] "2010-03-25" "2010-03-18" "2010-03-23" "2010-03-11" "2010-03-10"
## [4641] "2010-03-08" "2010-03-26" "2010-03-29" "2010-03-27" "2010-03-28"
## [4646] "2010-03-24" "2010-03-19" "2010-03-20" "2009-08-24" "2009-08-25"
## [4651] "2009-08-20" "2009-08-21" "2009-08-29" "2009-09-01" "2009-08-31"
## [4656] "2009-08-26" "2009-08-19" "2009-08-27" "2009-08-10" "2009-08-12"
## [4661] "2009-08-07" "2009-08-17" "2009-08-18" "2009-08-14" "2009-09-18"
## [4666] "2009-09-21" "2009-09-15" "2009-09-16" "2009-09-24" "2009-10-07"
## [4671] "2009-09-28" "2009-09-26" "2009-09-25" "2009-09-23" "2009-09-22"
## [4676] "2009-09-05" "2009-11-04" "2009-09-04" "2009-09-03" "2009-09-08"
## [4681] "2009-09-02" "2009-09-11" "2009-09-14" "2009-09-09" "2009-07-14"
## [4686] "2009-07-09" "2009-07-10" "2009-07-08" "2009-07-30" "2009-07-16"
## [4691] "2009-07-13" "2009-07-12" "2009-06-28" "2009-06-26" "2009-06-29"
## [4696] "2009-06-30" "2009-06-25" "2009-07-06" "2009-07-04" "2009-07-01"
## [4701] "2009-07-17" "2009-07-29" "2009-07-28" "2009-07-27" "2009-08-06"
## [4706] "2009-08-03" "2009-07-21" "2009-07-20" "2009-11-21" "2009-11-20"
## [4711] "2009-11-22" "2009-11-26" "2009-11-25" "2009-12-10" "2009-11-27"
## [4716] "2009-11-24" "2009-11-19" "2009-11-16" "2009-11-15" "2009-11-13"
## [4721] "2009-11-12" "2009-11-18" "2009-11-17" "2009-12-15" "2009-12-18"
## [4726] "2009-12-17" "2009-12-12" "2009-12-13" "2009-12-11" "2009-12-24"
## [4731] "2009-12-28" "2009-12-21" "2009-12-22" "2009-12-20" "2009-12-23"
## [4736] "2009-12-02" "2009-12-01" "2009-11-30" "2009-11-29" "2009-12-04"
## [4741] "2009-12-05" "2009-12-06" "2009-12-03" "2009-12-07" "2009-10-13"
## [4746] "2009-10-14" "2009-10-08" "2009-10-11" "2009-10-10" "2009-10-09"
## [4751] "2009-10-19" "2009-10-18" "2009-10-21" "2009-10-17" "2009-10-15"
## [4756] "2009-10-16" "2009-09-29" "2009-10-05" "2009-11-06" "2009-11-07"
## [4761] "2009-11-10" "2009-11-08" "2009-11-05" "2009-11-11" "2009-10-22"
## [4766] "2009-11-01" "2009-10-30" "2009-11-02" "2009-10-28" "2009-10-29"
## [4771] "2008-06-05" "2008-05-16" "2008-05-20" "2008-05-17" "2008-05-18"
## [4776] "2008-05-21" "2008-05-22" "2008-05-28" "2008-05-13" "2008-05-12"
## [4781] "2008-05-14" "2008-05-15" "2008-05-31" "2008-05-30" "2008-06-02"
## [4786] "2008-06-01" "2008-05-29" "2008-06-03" "2008-09-12" "2008-05-26"
## [4791] "2008-05-25" "2008-05-27" "2008-05-24" "2008-05-10" "2008-04-25"
## [4796] "2008-04-24" "2008-04-29" "2008-04-28" "2008-04-30" "2008-04-27"
## [4801] "2008-04-26" "2008-04-21" "2008-04-22" "2008-04-20" "2008-05-07"
## [4806] "2008-05-06" "2008-05-09" "2008-05-05" "2008-05-04" "2008-05-01"
## [4811] "2008-05-03" "2008-07-07" "2008-07-14" "2008-07-28" "2008-07-06"
## [4816] "2008-07-05" "2008-07-08" "2008-07-02" "2008-07-01" "2008-07-10"
## [4821] "2008-07-17" "2008-11-04" "2008-07-30" "2008-07-16" "2008-07-22"
## [4826] "2008-07-19" "2008-07-13" "2008-07-15" "2008-08-26" "2008-06-30"
## [4831] "2008-10-14" "2008-06-12" "2008-06-13" "2008-06-11" "2008-06-10"
## [4836] "2008-06-16" "2008-06-17" "2008-06-20" "2008-06-15" "2008-06-14"
## [4841] "2008-06-06" "2008-06-09" "2008-06-04" "2008-09-01" "2008-06-08"
## [4846] "2008-06-25" "2008-06-23" "2008-06-24" "2008-06-29" "2008-06-27"
## [4851] "2008-06-18" "2008-06-19" "2008-06-22" "2008-02-19" "2008-02-22"
## [4856] "2008-02-23" "2008-02-24" "2008-02-25" "2008-02-21" "2008-02-14"
## [4861] "2008-02-15" "2008-10-08" "2008-02-13" "2008-04-10" "2008-02-16"
## [4866] "2008-02-17" "2008-04-02" "2008-03-01" "2008-02-29" "2008-03-02"
## [4871] "2008-02-28" "2008-03-04" "2008-02-26" "2008-02-27" "2008-01-30"
## [4876] "2008-02-02" "2008-02-04" "2008-02-03" "2008-02-01" "2008-01-29"
## [4881] "2008-01-28" "2008-02-05" "2008-02-10" "2008-02-09" "2008-02-11"
## [4886] "2008-02-08" "2008-02-07" "2008-04-08" "2008-04-07" "2008-04-09"
## [4891] "2008-04-16" "2008-04-03" "2008-04-01" "2008-04-04" "2008-04-17"
## [4896] "2008-04-15" "2008-04-13" "2008-04-12" "2008-04-14" "2008-03-13"
## [4901] "2008-03-14" "2008-03-12" "2008-03-05" "2008-03-06" "2008-03-08"
## [4906] "2008-03-09" "2008-03-07" "2008-03-26" "2008-03-28" "2008-03-25"
## [4911] "2008-03-30" "2008-03-19" "2008-03-18" "2008-03-15" "2008-03-16"
## [4916] "2008-03-24" "2008-03-20" "2008-03-21" "2008-10-13" "2008-10-15"
## [4921] "2008-10-10" "2008-10-09" "2008-10-11" "2008-10-12" "2008-10-21"
## [4926] "2008-10-24" "2008-10-19" "2008-10-17" "2008-10-18" "2008-10-04"
## [4931] "2008-10-05" "2008-10-06" "2008-10-01" "2008-10-30" "2008-10-31"
## [4936] "2008-11-01" "2008-11-02" "2008-10-29" "2008-10-25" "2008-10-26"
## [4941] "2008-10-27" "2008-08-19" "2008-08-22" "2008-08-17" "2008-08-13"
## [4946] "2008-08-12" "2008-08-14" "2008-08-15" "2008-09-26" "2008-08-25"
## [4951] "2008-08-27" "2008-08-23" "2008-08-24" "2008-07-31" "2008-08-06"
## [4956] "2008-08-01" "2008-08-04" "2008-08-02" "2008-08-03" "2008-08-07"
## [4961] "2008-09-08" "2008-07-25" "2008-07-26" "2008-08-08" "2008-08-09"
## [4966] "2008-08-10" "2008-08-11" "2008-09-05" "2008-09-21" "2008-09-19"
## [4971] "2008-09-20" "2008-09-16" "2008-09-15" "2008-09-29" "2008-09-28"
## [4976] "2008-09-27" "2008-09-04" "2008-09-03" "2008-09-09" "2008-08-29"
## [4981] "2008-08-28" "2008-08-31" "2008-08-30" "2008-09-11" "2008-09-14"
## [4986] "2008-09-07" "2008-09-06" "2004-05-13" "2004-05-11" "2004-06-02"
## [4991] "2004-05-27" "2004-09-08" "2004-07-30" "2004-05-25" "2004-05-20"
## [4996] "2004-05-24" "2004-06-08" "2006-04-05" "2005-06-22" "2004-05-17"
## [5001] "2004-06-24" "2004-04-27" "2004-07-26" "2004-07-05" "2004-06-01"
## [5006] "2004-04-29" "2004-04-23" "2004-05-06" "2004-05-07" "2004-06-23"
## [5011] "2013-07-20" "2004-06-16" "2004-06-18" "2004-06-11" "2004-06-25"
## [5016] "2004-09-07" "2004-07-15" "2004-08-09" "2004-07-27" "2004-06-22"
## [5021] "2004-06-04" "2004-05-31" "2005-09-28" "2004-06-05" "2004-06-07"
## [5026] "2004-06-09" "2005-09-07" "2004-06-03" "2004-03-04" "2004-03-05"
## [5031] "2004-03-06" "2004-03-25" "2004-02-28" "2004-03-13" "2004-03-12"
## [5036] "2004-03-11" "2004-03-16" "2004-03-17" "2005-01-17" "2004-03-10"
## [5041] "2004-03-18" "2004-03-09" "2004-02-17" "2004-02-18" "2004-02-19"
## [5046] "2004-02-26" "2004-02-11" "2004-02-23" "2004-02-13" "2004-02-24"
## [5051] "2004-02-20" "2004-03-22" "2004-02-21" "2004-04-14" "2004-04-08"
## [5056] "2005-02-09" "2004-04-02" "2004-04-07" "2004-04-22" "2004-04-25"
## [5061] "2004-10-05" "2004-03-24" "2004-03-26" "2004-09-21" "2004-03-19"
## [5066] "2004-03-31" "2004-03-30" "2004-03-27" "2004-10-18" "2005-03-18"
## [5071] "2004-10-20" "2004-10-25" "2004-10-22" "2004-10-16" "2004-10-14"
## [5076] "2004-10-15" "2004-10-26" "2004-10-21" "2004-11-15" "2004-10-23"
## [5081] "2004-09-30" "2004-09-29" "2004-10-02" "2004-11-03" "2004-09-24"
## [5086] "2006-02-23" "2004-10-08" "2008-01-26" "2004-10-09" "2004-10-07"
## [5091] "2006-05-02" "2004-10-11" "2004-10-04" "2004-10-06" "2004-11-23"
## [5096] "2004-11-08" "2004-11-25" "2005-01-27" "2004-11-17" "2004-12-13"
## [5101] "2005-02-23" "2005-01-14" "2005-09-26" "2004-11-26" "2004-11-27"
## [5106] "2004-11-30" "2004-12-22" "2004-11-24" "2005-02-02" "2004-11-04"
## [5111] "2005-01-18" "2005-03-21" "2004-11-06" "2005-01-29" "2004-10-30"
## [5116] "2004-11-02" "2004-11-11" "2006-03-09" "2004-11-09" "2005-10-13"
## [5121] "2004-12-01" "2005-08-24" "2004-07-23" "2004-09-05" "2004-07-29"
## [5126] "2004-08-02" "2004-08-05" "2004-07-21" "2004-07-19" "2005-01-25"
## [5131] "2004-07-22" "2006-01-10" "2006-05-28" "2004-08-04" "2004-08-06"
## [5136] "2005-08-12" "2004-08-03" "2004-09-03" "2004-07-01" "2004-06-30"
## [5141] "2004-07-16" "2004-07-14" "2004-08-20" "2004-07-12" "2004-09-17"
## [5146] "2004-07-09" "2004-07-25" "2004-09-10" "2004-09-14" "2004-09-15"
## [5151] "2004-09-06" "2004-09-09" "2005-01-31" "2004-09-22" "2005-04-18"
## [5156] "2004-08-19" "2004-08-25" "2004-08-12" "2005-12-26" "2004-08-11"
## [5161] "2004-08-16" "2004-08-17" "2004-09-02" "2005-12-18" "2004-08-31"
## [5166] "2004-08-30" "2005-05-16" "2003-08-21" "2003-07-24" "2003-07-30"
## [5171] "2003-08-20" "2003-08-06" "2004-01-22" "2003-08-07" "2003-10-23"
## [5176] "2003-08-14" "2003-08-08" "2003-08-13" "2003-08-01" "2003-07-07"
## [5181] "2003-09-11" "2003-07-01" "2005-05-17" "2003-06-30" "2003-07-02"
## [5186] "2003-07-16" "2003-07-18" "2003-09-12" "2003-09-23" "2003-10-04"
## [5191] "2003-09-19" "2003-11-26" "2003-09-24" "2003-09-16" "2003-09-17"
## [5196] "2003-08-22" "2003-09-03" "2003-08-19" "2003-08-25" "2003-08-29"
## [5201] "2003-08-18" "2005-08-04" "2003-09-04" "2003-08-27" "2003-08-28"
## [5206] "2003-05-05" "2003-05-16" "2003-05-02" "2003-04-28" "2003-05-15"
## [5211] "2003-05-09" "2003-07-05" "2003-04-10" "2003-06-11" "2003-04-07"
## [5216] "2003-04-05" "2003-04-08" "2005-04-20" "2003-04-23" "2004-12-24"
## [5221] "2003-04-24" "2003-12-22" "2003-11-25" "2003-04-16" "2003-04-17"
## [5226] "2003-06-13" "2003-06-15" "2003-06-10" "2005-04-26" "2003-06-27"
## [5231] "2003-06-25" "2003-06-23" "2003-06-19" "2004-01-23" "2003-05-27"
## [5236] "2003-05-28" "2006-03-16" "2003-05-21" "2004-01-07" "2003-05-30"
## [5241] "2004-01-05" "2004-01-08" "2004-01-10" "2003-12-31" "2004-01-03"
## [5246] "2004-01-14" "2005-02-17" "2004-01-16" "2005-02-14" "2003-12-16"
## [5251] "2003-12-19" "2003-12-20" "2003-12-24" "2003-12-12" "2003-12-10"
## [5256] "2003-12-15" "2003-12-13" "2003-12-29" "2003-12-26" "2004-01-28"
## [5261] "2004-02-04" "2004-01-30" "2006-02-12" "2004-02-09" "2004-02-10"
## [5266] "2004-02-07" "2004-01-20" "2005-01-13" "2004-01-19" "2004-01-17"
## [5271] "2005-10-19" "2005-11-06" "2004-01-25" "2004-01-24" "2003-10-17"
## [5276] "2003-10-24" "2003-10-16" "2003-10-18" "2003-10-11" "2003-10-28"
## [5281] "2003-10-31" "2003-10-29" "2003-10-25" "2003-10-21" "2003-11-17"
## [5286] "2003-10-01" "2003-10-10" "2003-10-06" "2005-12-31" "2003-12-03"
## [5291] "2003-11-22" "2003-11-21" "2003-11-05" "2003-12-04" "2003-12-02"
## [5296] "2006-01-05" "2003-11-29" "2003-11-27" "2003-11-06" "2003-11-04"
## [5301] "2003-11-07" "2003-11-08" "2005-03-01" "2003-11-15" "2003-11-11"
## [5306] "2003-11-12" "2005-11-19" "2005-11-20" "2005-11-18" "2005-11-22"
## [5311] "2005-12-01" "2005-11-21" "2005-11-16" "2005-11-17" "2005-11-25"
## [5316] "2006-05-05" "2005-11-29" "2005-11-30" "2005-11-28" "2005-12-02"
## [5321] "2005-11-24" "2005-11-23" "2005-11-26" "2005-11-27" "2005-11-01"
## [5326] "2005-11-02" "2005-11-05" "2005-11-04" "2005-10-30" "2005-10-29"
## [5331] "2005-11-12" "2005-11-10" "2005-11-11" "2005-11-14" "2005-11-13"
## [5336] "2005-11-09" "2005-11-07" "2005-12-14" "2006-01-21" "2005-12-24"
## [5341] "2006-01-08" "2006-01-07" "2006-01-02" "2006-01-01" "2005-12-10"
## [5346] "2005-12-12" "2005-12-11" "2005-12-09" "2005-12-13" "2006-02-10"
## [5351] "2005-12-04" "2005-12-07" "2005-12-08" "2005-12-06" "2005-12-20"
## [5356] "2006-01-13" "2005-12-23" "2005-12-22" "2005-12-19" "2005-12-16"
## [5361] "2005-12-15" "2006-04-25" "2006-04-07" "2005-12-17" "2005-10-06"
## [5366] "2005-10-05" "2005-10-08" "2005-10-17" "2005-10-03" "2005-10-02"
## [5371] "2005-10-04" "2005-10-15" "2005-10-21" "2005-10-16" "2005-10-10"
## [5376] "2005-10-11" "2005-10-09" "2005-10-12" "2005-10-18" "2005-09-24"
## [5381] "2005-09-25" "2005-09-23" "2005-09-20" "2005-09-22" "2005-09-30"
## [5386] "2005-09-29" "2005-10-01" "2005-09-27" "2005-10-27" "2005-10-28"
## [5391] "2006-05-11" "2006-03-18" "2005-10-20" "2006-02-03" "2005-10-23"
## [5396] "2006-02-09" "2006-03-27" "2005-10-22" "2006-04-26" "2006-04-27"
## [5401] "2006-05-23" "2006-05-18" "2006-04-22" "2006-05-04" "2006-05-08"
## [5406] "2006-06-01" "2006-05-07" "2006-04-28" "2006-04-29" "2006-05-29"
## [5411] "2006-05-01" "2006-04-01" "2006-04-02" "2006-04-03" "2006-03-31"
## [5416] "2006-04-04" "2006-03-29" "2006-03-25" "2006-04-18" "2006-04-19"
## [5421] "2006-05-25" "2006-04-14" "2006-04-08" "2006-04-15" "2006-04-06"
## [5426] "2006-04-11" "2006-04-12" "2006-05-27" "2006-05-30" "2006-06-02"
## [5431] "2006-05-26" "2006-06-04" "2006-06-03" "2006-06-06" "2006-05-31"
## [5436] "2006-05-15" "2006-05-16" "2006-05-13" "2006-05-14" "2006-05-10"
## [5441] "2006-05-09" "2006-05-21" "2006-05-20" "2006-02-01" "2006-01-31"
## [5446] "2006-02-04" "2006-02-05" "2006-01-27" "2006-01-29" "2006-01-30"
## [5451] "2006-02-11" "2006-02-13" "2006-02-07" "2006-02-08" "2012-02-05"
## [5456] "2006-01-14" "2006-01-15" "2006-01-16" "2006-01-11" "2006-01-24"
## [5461] "2006-01-23" "2006-01-26" "2006-01-19" "2006-01-18" "2006-03-12"
## [5466] "2006-03-10" "2006-03-11" "2006-03-14" "2006-03-13" "2006-03-08"
## [5471] "2006-03-06" "2006-03-22" "2006-03-21" "2006-03-24" "2006-03-23"
## [5476] "2006-03-20" "2006-03-19" "2006-02-21" "2006-02-20" "2006-02-25"
## [5481] "2006-02-24" "2006-02-22" "2006-02-16" "2006-02-18" "2006-03-03"
## [5486] "2006-03-01" "2006-03-05" "2006-03-04" "2006-02-27" "2006-02-26"
## [5491] "2006-02-28" "2005-03-04" "2005-04-01" "2005-03-03" "2005-03-05"
## [5496] "2005-05-24" "2005-02-24" "2005-02-25" "2005-03-12" "2005-03-09"
## [5501] "2005-03-08" "2005-04-28" "2005-03-10" "2005-05-12" "2005-07-18"
## [5506] "2005-03-07" "2005-02-12" "2005-02-11" "2005-02-15" "2005-03-14"
## [5511] "2005-02-10" "2005-02-21" "2005-07-29" "2005-02-19" "2005-02-16"
## [5516] "2005-02-18" "2005-06-13" "2005-04-05" "2005-04-06" "2005-05-05"
## [5521] "2005-04-15" "2005-04-13" "2005-04-12" "2005-04-14" "2005-03-19"
## [5526] "2005-06-30" "2005-04-22" "2005-03-15" "2005-03-24" "2005-03-29"
## [5531] "2005-03-23" "2005-08-30" "2005-03-25" "2005-04-21" "2005-01-05"
## [5536] "2005-01-07" "2005-01-08" "2005-01-10" "2005-01-04" "2004-12-09"
## [5541] "2004-12-14" "2004-12-11" "2004-12-02" "2004-12-07" "2004-12-18"
## [5546] "2004-12-15" "2004-12-16" "2004-12-17" "2005-06-01" "2005-02-01"
## [5551] "2005-01-28" "2005-02-07" "2005-02-04" "2005-02-03" "2005-01-15"
## [5556] "2005-01-20" "2005-01-22" "2005-08-10" "2005-08-09" "2005-09-14"
## [5561] "2005-08-18" "2005-08-19" "2005-08-20" "2005-08-15" "2005-08-16"
## [5566] "2005-08-13" "2005-08-14" "2005-08-25" "2005-07-28" "2005-07-26"
## [5571] "2005-08-01" "2005-07-21" "2005-07-20" "2005-07-25" "2005-07-22"
## [5576] "2005-08-03" "2005-08-07" "2005-09-10" "2005-09-09" "2005-09-11"
## [5581] "2005-09-12" "2005-09-13" "2005-09-06" "2005-09-18" "2005-09-19"
## [5586] "2005-09-17" "2005-09-15" "2005-09-16" "2005-08-27" "2005-08-26"
## [5591] "2005-08-28" "2005-08-23" "2005-08-21" "2005-09-01" "2005-08-31"
## [5596] "2005-09-03" "2005-09-04" "2005-09-02" "2005-05-19" "2005-05-18"
## [5601] "2005-05-25" "2005-06-07" "2005-05-20" "2005-05-31" "2005-05-30"
## [5606] "2005-05-15" "2005-05-11" "2005-05-13" "2005-05-27" "2005-05-10"
## [5611] "2005-06-08" "2005-06-10" "2005-04-25" "2005-06-17" "2005-04-19"
## [5616] "2005-05-02" "2005-06-06" "2005-05-06" "2005-04-27" "2005-07-06"
## [5621] "2005-07-07" "2005-07-12" "2005-07-08" "2005-06-28" "2005-07-04"
## [5626] "2005-07-01" "2005-07-15" "2005-07-13" "2005-06-09" "2005-06-14"
## [5631] "2005-06-24" "2005-06-25" "2005-06-27" "2015-02-04" "2015-02-23"
## [5636] "2015-02-06" "2015-02-24" "1995-06-29" "2015-02-05" "2015-02-09"
## [5641] "2015-02-10" "2015-02-03" "2015-02-02" "2015-02-19" "2015-02-20"
## [5646] "2015-02-18" "2015-02-17" "2015-02-25" "2015-02-26" "2015-02-12"
## [5651] "2015-02-11" "2015-02-16" "2015-02-13" "2015-01-30" "2015-03-19"
## [5656] "2015-03-18" "2015-03-20" "2015-03-30" "2015-03-17" "2015-03-26"
## [5661] "2015-03-03" "2015-03-05" "2015-03-04" "2015-03-23" "2015-03-06"
## [5666] "2015-03-09" "2015-03-10" "2015-02-27" "2015-03-02" "2015-03-25"
## [5671] "2015-03-27" "2015-03-24" "2015-03-12" "2015-03-13" "2015-03-11"
## [5676] "2015-03-16" "2015-03-31" "2015-04-29" "2015-04-06" "2015-04-13"
## [5681] "2015-04-08" "2015-04-16" "2015-04-07" "2015-04-01" "2015-04-02"
## [5686] "2015-04-09" "2015-04-21" "2015-04-22" "2015-04-23" "2015-04-20"
## [5691] "2015-04-19" "2015-04-17" "2015-04-28" "2015-04-27" "2015-04-24"
## [5696] "2015-04-25" "2015-04-26" "2015-04-14" "2015-04-10" "2015-04-15"
## [5701] "2015-05-11" "2015-05-06" "2015-05-20" "2015-03-29" "2015-05-05"
## [5706] "2015-05-15" "2015-05-14" "2015-05-18" "2015-05-19" "2015-05-12"
## [5711] "2015-05-22" "2015-05-13" "2015-05-25" "2015-05-26" "2015-05-27"
## [5716] "2015-05-28" "2015-05-29" "2015-05-21" "2015-05-02" "2015-05-01"
## [5721] "2015-05-04" "2015-04-30" "2015-05-07" "2015-05-09" "2015-05-08"
## [5726] "2015-05-03" "2015-02-01" "2015-06-15" "2015-06-12" "2015-06-13"
## [5731] "2015-06-14" "2015-06-11" "2015-06-16" "2015-06-09" "2015-06-08"
## [5736] "2015-06-10" "2015-06-24" "2015-06-23" "2015-06-22" "2015-06-26"
## [5741] "2015-06-30" "2015-06-29" "2015-06-25" "2015-06-18" "2015-06-17"
## [5746] "2015-06-19" "2015-06-03" "2015-06-02" "2015-06-05" "2015-06-04"
## [5751] "2015-06-01" "2015-03-08" "1998-02-19" "2006-11-26" "2006-04-16"
## [5756] "2006-04-30" "2014-12-27" "2007-04-28" "2004-12-04" "2015-07-03"
## [5761] "2005-12-03" "2005-12-25" "2013-01-05" "2005-08-06" "2015-07-16"
## [5766] "2010-12-10" "2010-12-17" "2015-07-22" "2011-01-11" "2010-09-03"
## [5771] "2011-05-25" "2011-05-26" "2011-04-12" "2010-04-18" "2010-03-07"
## [5776] "2010-02-20" "2015-07-27" "2010-07-21" "2010-07-10" "2010-05-16"
## [5781] "2010-05-23" "2010-06-06" "2011-11-27" "2008-05-11" "2008-08-16"
## [5786] "2008-09-13" "2008-07-20" "2007-12-02" "2007-12-09" "2007-12-08"
## [5791] "2008-03-29" "2008-04-05" "2008-03-22" "2015-07-30" "2010-03-13"
## [5796] "2009-06-27" "2009-05-15" "2009-04-24" "2009-02-22" "2009-11-28"
## [5801] "2009-11-09" "2010-01-24" "2014-11-30" "2010-01-31" "2009-07-31"
## [5806] "2009-08-02" "2009-10-04" "2015-07-21" "2000-01-15" "2000-06-16"
## [5811] "2015-07-10" "2001-04-15" "2008-04-19" "2011-09-11" "2000-08-15"
## [5816] "2000-11-25" "1997-01-25" "1997-01-23" "1997-01-03" "1997-02-22"
## [5821] "1996-10-22" "1996-11-30" "2005-07-31" "1997-04-19" "1997-04-26"
## [5826] "1997-03-19" "1997-06-16" "1997-06-05" "1995-12-16" "1995-11-14"
## [5831] "1996-01-25" "1995-12-01" "1995-06-16" "1995-07-24" "1996-02-15"
## [5836] "1995-04-26" "1995-08-03" "1995-08-07" "1995-08-02" "1995-07-07"
## [5841] "1996-09-16" "1996-07-31" "1996-05-13" "1996-08-06" "1996-08-16"
## [5846] "1996-08-20" "1996-07-04" "1996-02-07" "1996-03-07" "2006-04-13"
## [5851] "1996-02-14" "1996-02-21" "1996-02-01" "1996-03-01" "1996-03-23"
## [5856] "1998-08-04" "1998-08-24" "1998-07-28" "1999-03-13" "1999-01-23"
## [5861] "1999-01-20" "1998-01-17" "2014-04-05" "2010-09-12" "2013-05-11"
## [5866] "2015-07-20" "2012-12-25" "2014-03-29" "2012-04-01" "2012-06-02"
## [5871] "2015-07-01" "2013-11-01" "2015-07-31" "2015-01-04" "2015-07-26"
## [5876] "2015-07-25" "2015-07-28" "2015-07-23" "2015-07-24" "2015-07-09"
## [5881] "2015-07-29" "2015-06-28" "2015-07-07" "2015-07-08" "2015-07-06"
## [5886] "2015-07-02" "2015-07-05" "2015-07-04" "2015-05-23" "2015-07-15"
## [5891] "2015-07-17" "2015-07-13" "2015-07-12" "2015-07-11" "2015-07-14"
## [5896] "2015-07-18" "2015-07-19" "2015-08-04" "2015-08-08" "2015-08-24"
## [5901] "2015-08-28" "2015-08-13" "2015-08-06" "2015-08-05" "2015-08-07"
## [5906] "2015-08-10" "2015-08-09" "2015-08-11" "2015-08-26" "2015-08-25"
## [5911] "2015-08-29" "2015-08-30" "2015-08-31" "2015-08-27" "2015-08-12"
## [5916] "2015-08-17" "2015-08-16" "2015-08-15" "2015-08-14" "2015-08-21"
## [5921] "2015-08-20" "2015-08-23" "2015-08-22" "2015-08-18" "2015-08-19"
## [5926] "2015-08-03" "2015-08-01" "2015-08-02" "2015-09-08" "2015-09-02"
## [5931] "2015-09-15" "2015-09-21" "2015-09-03" "2015-09-29" "2015-09-22"
## [5936] "2015-09-07" "2015-09-18" "2015-09-23" "2015-09-16" "2015-09-17"
## [5941] "2015-09-28" "2015-09-10" "2015-09-30" "2015-09-27" "2015-09-11"
## [5946] "2015-09-04" "2015-09-24" "2015-09-14" "2015-09-09" "2015-09-06"
## [5951] "2015-09-05" "2015-09-12" "2015-09-13" "2015-09-25" "2015-09-26"
## [5956] "2015-09-20" "2015-09-19" "2015-09-01" "2015-10-09" "2015-10-12"
## [5961] "2015-10-28" "2015-10-27" "2015-10-14" "2015-10-16" "2015-10-10"
## [5966] "2015-10-08" "2015-10-15" "2015-10-13" "2015-10-11" "2015-10-02"
## [5971] "2015-10-05" "2015-10-04" "2015-10-03" "2015-10-01" "2015-10-18"
## [5976] "2015-10-07" "2015-10-06" "2015-10-26" "2015-10-29" "2015-10-23"
## [5981] "2015-10-25" "2015-10-24" "2015-10-30" "2015-10-19" "2015-10-20"
## [5986] "2015-10-17" "2015-10-22" "2015-10-21" "2015-11-11" "2015-11-23"
## [5991] "2015-11-10" "2015-11-05" "2015-11-16" "2015-11-02" "2015-11-03"
## [5996] "2015-11-09" "2015-11-20" "2015-11-18" "2015-11-27" "2015-11-01"
## [6001] "2015-10-31" "2015-11-19" "2015-11-21" "2015-11-17" "2015-11-28"
## [6006] "2015-11-29" "2015-11-26" "2015-11-25" "2015-11-30" "2015-11-24"
## [6011] "2015-11-22" "2015-11-06" "2015-11-04" "2015-11-08" "2015-11-07"
## [6016] "2015-11-12" "2015-11-13" "2015-11-15" "2015-11-14" "2013-01-20"
## [6021] "2015-12-11" "2015-12-09" "2015-12-29" "2015-12-10" "2015-12-28"
## [6026] "2015-12-16" "2015-12-03" "2015-12-21" "2015-12-02" "2015-12-31"
## [6031] "2015-12-08" "2015-12-20" "2015-12-01" "2015-12-07" "2015-12-15"
## [6036] "2015-12-14" "2015-12-17" "2015-12-18" "2015-12-30" "2015-12-13"
## [6041] "2015-12-12" "2015-12-26" "2015-12-25" "2015-12-24" "2015-12-27"
## [6046] "2015-12-22" "2015-12-19" "2015-12-23" "2015-12-04" "2015-12-06"
## [6051] "2015-12-05" "2016-01-25" "2016-01-20" "2016-01-18" "2016-01-28"
## [6056] "2016-01-23" "2016-01-08" "2016-01-26" "2016-01-27" "2016-01-29"
## [6061] "2016-01-22" "2016-01-24" "2016-01-21" "2016-01-12" "2016-01-11"
## [6066] "2016-01-13" "2016-01-14" "2016-01-09" "2016-01-07" "2016-01-10"
## [6071] "2016-01-19" "2016-01-15" "2016-01-17" "2016-01-16" "2016-01-04"
## [6076] "2016-01-05" "2016-01-06" "2016-01-02" "2016-01-01" "2016-01-03"
## [6081] "2016-02-29" "2016-02-04" "2016-02-11" "2016-02-28" "2016-02-15"
## [6086] "2016-02-16" "2016-02-21" "2016-02-14" "2016-02-13" "2016-02-18"
## [6091] "2016-02-19" "2016-02-17" "2016-02-09" "2016-02-10" "2016-02-08"
## [6096] "2016-02-12" "2016-02-22" "2016-02-26" "2016-02-27" "2016-02-23"
## [6101] "2016-02-20" "2016-02-25" "2016-02-24" "2016-02-03" "2016-02-02"
## [6106] "2016-02-07" "2016-02-06" "2016-02-05" "2016-01-30" "2016-01-31"
## [6111] "2016-02-01" "2016-03-02" "2016-03-21" "2016-03-10" "2016-03-04"
## [6116] "2016-03-15" "2016-03-16" "2016-03-28" "2016-03-17" "2016-03-31"
## [6121] "2016-03-30" "2016-03-29" "2016-03-01" "2016-03-03" "2016-03-23"
## [6126] "2016-03-19" "2016-03-18" "2016-03-20" "2016-03-27" "2016-03-26"
## [6131] "2016-03-25" "2016-03-22" "2016-03-24" "2016-03-07" "2016-03-08"
## [6136] "2016-03-09" "2016-03-05" "2016-03-06" "2016-03-12" "2016-03-13"
## [6141] "2016-03-11" "2016-03-14" "2016-04-27" "2016-04-08" "2016-04-04"
## [6146] "2016-04-01" "2016-04-02" "2016-04-03" "2016-04-11" "2016-04-07"
## [6151] "2016-04-06" "2016-04-09" "2016-04-05" "2016-04-26" "2016-04-28"
## [6156] "2016-04-22" "2016-04-23" "2016-04-24" "2016-04-21" "2016-04-25"
## [6161] "2016-04-29" "2016-04-13" "2016-04-12" "2016-04-14" "2016-04-15"
## [6166] "2016-04-18" "2016-04-10" "2016-04-20" "2016-04-19" "2016-04-17"
## [6171] "2016-04-16" "2016-05-28" "2016-05-13" "2016-05-18" "2016-05-22"
## [6176] "2016-05-31" "2016-05-19" "2016-05-03" "2016-05-06" "2016-05-26"
## [6181] "2016-05-05" "2016-05-10" "2016-05-16" "2016-05-24" "2016-05-25"
## [6186] "2016-05-12" "2016-05-14" "2016-05-11" "2016-05-17" "2016-05-15"
## [6191] "2016-05-07" "2016-05-08" "2016-05-04" "2016-05-09" "2016-05-27"
## [6196] "2016-05-30" "2016-05-29" "2016-05-20" "2016-05-23" "2016-05-21"
## [6201] "2016-05-01" "2016-04-30" "2016-05-02"
## 
## [1] "Unique values for antiguedad:"
##   [1]      35      27      NA      34       9      33       7      21
##   [9]       1      28      22      15      29      32       8      17
##  [17]      10      36      11      12      31      38       6      37
##  [25]      39       4      18      24      26      19      25      16
##  [33]       3      23      30      13       0      47      46      45
##  [41]      41      44      57      50      58      43      56      53
##  [49]      51      52      59      55      54      49      62      60
##  [57]      61      63      42       5      48      40      20       2
##  [65]      14     165     137     128     160     102     157     108
##  [73]      92     121     134     120     162      99     100     164
##  [81]     163     166     124     141     154     148     144      88
##  [89]     139     140      84      77     232     125     113      69
##  [97]      81     150      79     149      94     127     114     101
## [105]     109     172     143     167     146     135     126      76
## [113]     107     159      91      80     168     178     156     122
## [121]     153     138     158      95     117     169      93     145
## [129]     183      89     131     118     133      66     161     151
## [137]     152     115      74     116     136     190      87      70
## [145]     147      85      78     176     111     110      90     155
## [153]     208     123     104      97     132     129      68      73
## [161]     171      98      86     130     142     170      64      83
## [169]     103     174     186     173     112     177     180      67
## [177]     188     212     184     119     206     224     210      82
## [185]      65     106      75      72     105      96      71     235
## [193]     233     217     196     189     191     202     209     211
## [201]     185     199     192     194     201     213     179     216
## [209]     182     203     207     220     200     193     205     197
## [217]     214     204     242     215     240     181     198     231
## [225]     187     175     195     237     223     236     234     230
## [233]     222     219     228     243     221     225     218     229
## [241]     238     226     227     241     239     244     246     245
## [249] -999999     247     248     249     250     251     252     253
## [257]     254     255     256
## 
## [1] "Unique values for ult_fec_cli_1t:"
##   [1] ""           "2015-07-21" "2015-07-06" "2015-07-07" "2015-07-03"
##   [6] "2015-07-01" "2015-07-20" "2015-07-10" "2015-07-17" "2015-07-08"
##  [11] "2015-07-14" "2015-07-13" "2015-07-09" "2015-07-15" "2015-07-22"
##  [16] "2015-07-24" "2015-07-27" "2015-07-16" "2015-07-28" "2015-07-30"
##  [21] "2015-07-29" "2015-07-23" "2015-07-02" "2015-08-24" "2015-08-19"
##  [26] "2015-08-27" "2015-08-03" "2015-08-06" "2015-08-25" "2015-08-14"
##  [31] "2015-08-26" "2015-08-20" "2015-08-07" "2015-08-11" "2015-08-04"
##  [36] "2015-08-21" "2015-08-13" "2015-08-05" "2015-08-17" "2015-08-12"
##  [41] "2015-08-18" "2015-08-28" "2015-08-10" "2015-09-18" "2015-09-09"
##  [46] "2015-09-11" "2015-09-21" "2015-09-17" "2015-09-14" "2015-09-16"
##  [51] "2015-09-24" "2015-09-04" "2015-09-15" "2015-09-01" "2015-09-25"
##  [56] "2015-09-08" "2015-09-22" "2015-09-10" "2015-09-28" "2015-09-02"
##  [61] "2015-09-03" "2015-09-23" "2015-09-07" "2015-09-29" "2015-10-16"
##  [66] "2015-10-01" "2015-10-19" "2015-10-15" "2015-10-14" "2015-10-08"
##  [71] "2015-10-05" "2015-10-13" "2015-10-21" "2015-10-20" "2015-10-07"
##  [76] "2015-10-22" "2015-10-09" "2015-10-02" "2015-10-28" "2015-10-26"
##  [81] "2015-10-23" "2015-10-27" "2015-10-06" "2015-10-29" "2015-11-03"
##  [86] "2015-11-25" "2015-11-19" "2015-11-27" "2015-11-18" "2015-11-23"
##  [91] "2015-11-11" "2015-11-17" "2015-11-09" "2015-11-10" "2015-11-24"
##  [96] "2015-11-13" "2015-11-04" "2015-11-16" "2015-11-05" "2015-11-02"
## [101] "2015-11-12" "2015-11-26" "2015-11-06" "2015-11-20" "2015-12-24"
## [106] "2015-12-04" "2015-12-11" "2015-12-03" "2015-12-22" "2015-12-23"
## [111] "2015-12-09" "2015-12-17" "2015-12-15" "2015-12-16" "2015-12-21"
## [116] "2015-12-30" "2015-12-02" "2015-12-10" "2015-12-28" "2015-12-18"
## [121] "2015-12-29" "2015-12-14" "2015-12-01" "2015-12-07" "2016-01-14"
## [126] "2016-01-05" "2016-01-20" "2016-01-12" "2016-01-26" "2016-01-27"
## [131] "2016-01-28" "2016-01-25" "2016-01-08" "2016-01-22" "2016-01-15"
## [136] "2016-01-11" "2016-01-18" "2016-01-07" "2016-01-21" "2016-01-19"
## [141] "2016-01-04" "2016-01-13" "2016-02-15" "2016-02-26" "2016-02-11"
## [146] "2016-02-02" "2016-02-17" "2016-02-22" "2016-02-01" "2016-02-12"
## [151] "2016-02-16" "2016-02-08" "2016-02-09" "2016-02-10" "2016-02-23"
## [156] "2016-02-03" "2016-02-04" "2016-02-19" "2016-02-18" "2016-02-05"
## [161] "2016-02-24" "2016-02-25" "2016-03-21" "2016-03-24" "2016-03-09"
## [166] "2016-03-03" "2016-03-14" "2016-03-29" "2016-03-18" "2016-03-16"
## [171] "2016-03-10" "2016-03-08" "2016-03-11" "2016-03-02" "2016-03-15"
## [176] "2016-03-23" "2016-03-07" "2016-03-01" "2016-03-22" "2016-03-17"
## [181] "2016-03-30" "2016-03-28" "2016-03-04" "2016-04-01" "2016-04-06"
## [186] "2016-04-19" "2016-04-12" "2016-04-25" "2016-04-13" "2016-04-27"
## [191] "2016-04-08" "2016-04-18" "2016-04-04" "2016-04-07" "2016-04-20"
## [196] "2016-04-14" "2016-04-28" "2016-04-21" "2016-04-26" "2016-04-05"
## [201] "2016-04-22" "2016-04-15" "2016-04-11" "2016-05-27" "2016-05-05"
## [206] "2016-05-02" "2016-05-09" "2016-05-20" "2016-05-19" "2016-05-18"
## [211] "2016-05-16" "2016-05-24" "2016-05-06" "2016-05-23" "2016-05-30"
## [216] "2016-05-10" "2016-05-17" "2016-05-04" "2016-05-11" "2016-05-03"
## [221] "2016-05-26" "2016-05-12" "2016-05-25" "2016-05-13"
## 
## [1] "Unique values for indrel_1mes:"
##  [1] "1"   "1.0" ""    "3"   "3.0" "P"   "2"   "2.0" "4.0" "4"  
## 
## [1] "Unique values for tiprel_1mes:"
## [1] "I" "A" ""  "P" "R"
## 
## [1] "Unique values for indresi:"
## [1] "S" ""  "N"
## 
## [1] "Unique values for indext:"
## [1] "N" "S" "" 
## 
## [1] "Unique values for conyuemp:"
## [1] ""  "N"
## 
## [1] "Unique values for canal_entrada:"
##   [1] "KHD" "KHE" "KFA" "KFC" "KAT" "KAZ" ""    "KHK" "KHC" "KHM" "RED"
##  [12] "KHL" "KEH" "KFL" "KAE" "KAB" "KAR" "KGX" "KGY" "KAA" "KFP" "KGV"
##  [23] "KFG" "KCC" "KFN" "KFD" "KAQ" "KAP" "KAH" "KFS" "KFF" "KAJ" "KAG"
##  [34] "KFK" "KFU" "KFJ" "KAI" "K00" "KHF" "KHN" "KAK" "KBG" "KDY" "KBZ"
##  [45] "KAY" "KDE" "KDO" "KBU" "KBQ" "KCL" "KDR" "KCG" "KAS" "KEC" "KCA"
##  [56] "KBO" "KAC" "007" "KDU" "KCB" "KDT" "KDA" "KCK" "KAD" "KEA" "013"
##  [67] "KES" "KEY" "KDC" "KBL" "KAW" "KDQ" "KCM" "KBH" "KAF" "KFT" "KEI"
##  [78] "KCS" "KDZ" "KCN" "KBF" "KBR" "KEZ" "KCD" "KCH" "KDP" "KBV" "KBD"
##  [89] "KBY" "KBW" "KBX" "KCF" "KDD" "KCO" "KCE" "KDV" "KDF" "KDX" "KEF"
## [100] "KCU" "KEB" "KDS" "KBB" "KCI" "KEV" "KDW" "KEW" "KEG" "KDM" "KAM"
## [111] "KEQ" "KFM" "KAU" "KEL" "004" "KAL" "KAO" "KEJ" "KBM" "KFH" "KEN"
## [122] "KFB" "KEO" "KGW" "KFI" "KFR" "KED" "KAN" "KCR" "KCQ" "KBJ" "KEK"
## [133] "KBS" "KCJ" "KHO" "KCT" "KCV" "KDN" "KDH" "KDG" "KHQ" "KHP"
## 
## [1] "Unique values for indfall:"
## [1] "N" ""  "S"
## 
## [1] "Unique values for nomprov:"
##  [1] "ZARAGOZA"               "CIUDAD REAL"           
##  [3] "BARCELONA"              "TOLEDO"                
##  [5] "MADRID"                 "LUGO"                  
##  [7] "BADAJOZ"                "SALAMANCA"             
##  [9] "VALENCIA"               "CORUÑA, A"             
## [11] "ALICANTE"               "GUADALAJARA"           
## [13] "SEGOVIA"                "TERUEL"                
## [15] "CUENCA"                 "VALLADOLID"            
## [17] "CACERES"                "HUESCA"                
## [19] "CORDOBA"                "LERIDA"                
## [21] "PONTEVEDRA"             "LEON"                  
## [23] "JAEN"                   "PALENCIA"              
## [25] "BALEARS, ILLES"         "GRANADA"               
## [27] "NAVARRA"                "CASTELLON"             
## [29] "HUELVA"                 "MALAGA"                
## [31] "ASTURIAS"               "BIZKAIA"               
## [33] "CANTABRIA"              "TARRAGONA"             
## [35] "SEVILLA"                "CADIZ"                 
## [37] "OURENSE"                "ALBACETE"              
## [39] "GIRONA"                 "SORIA"                 
## [41] "ZAMORA"                 ""                      
## [43] "MURCIA"                 "PALMAS, LAS"           
## [45] "SANTA CRUZ DE TENERIFE" "RIOJA, LA"             
## [47] "MELILLA"                "BURGOS"                
## [49] "GIPUZKOA"               "ALAVA"                 
## [51] "AVILA"                  "ALMERIA"               
## [53] "CEUTA"                 
## 
## [1] "Unique values for segmento:"
## [1] "03 - UNIVERSITARIO" "02 - PARTICULARES"  "01 - TOP"          
## [4] ""

3.4.2. Summary Note

  1. fecha_dato:
    • 날짜를 기록하는 fecha_dato는 “년-월-일” 형태이다. 2015-01-28~2016-05-28까지 매달 28일에 기록된 월별 데이터임을 확인할 수 있다.
  2. ind_empleado:
    • 고용 지표인 ind_empleado는 4가지의 값과 결측값인 ’NaN’을 포함하고 있다.
  3. pais_residencia:
    • 고객 거주 국가를 나타내는 pais_residencia는 대문자 알파벳 두 글자 형태를 취하고 있다.
  4. sexo:
    • 성별을 나타내는 sexo는 2개의 값(‘H’, ‘V’)과 결측값을 갖고 있다.
  5. age:
    • 나이를 나타내는 age는 218개의 값과 결측값을 갖고 있다. 나이가 많은 사람도 보인다.
  6. fecha_alta:
    • 고객이 은행과 첫 계약을 체결한 날짜를 나타내는 fecha_alta는 6,756개의 값과 결측값을 갖고 있다.
  7. antiguedad:
    • 은행 누적 기간을 나타내는 antiguedad는 506개의 값과 결측값을 갖고 있다. 일로 기록되어 있다.
  8. ult_fec_cli_1t:
    • 1등급 고객으로서 마지막 날짜를 나타내는 ult_fec_cli_1t는 223개의 값과 결측값을 갖고 있다. 영업일 기준으로 기록되고 있다.
  9. indrel_1mes:
    • 월초 기준 고객 등급인 indrel_1mes는 5개의 범주를 취한다지만 결측값을 포함한 여러 개의 값([‘1’ ‘1.0’ ‘2’ ‘2.0’ ‘3’ ‘3.0’ ‘4’ ‘4.0’ ‘P’ ‘nan’])을 갖고 있다.
  10. tiprel_1mes:
    • 월초 기준 고객 관계 유형을 나타내는 tiprel_1mes는 5개의 값과 결측값을 포함하고 있다.
  11. indresi:
    • 거주 지표(고객의 거주 국가와 은행이 위치한 국가 동일 여부)를나타내는 indresi는 2개의 값(‘N’, ‘S’)과 결측값을 포함하고 있다.
  12. indext:
    • 외국인 지표(고객이 태어난 국가와 은행이 위치한 국가 동일 여부)를 나타내는 indext는 2개의 값(‘N’, ‘S’)과 결측값을 포함하고 있다.
  13. conyuemp:
    • 배우자 지표(은행 직원을 배우자로 둔 고객)를 나타내는 conyuemp는 2개의 값(‘N’, ‘S’)과 결측값을 포함하고 있다.
  14. canal_entrada:
    • 고객 유입 채널을 나타내는 canal_entrada는 162개의 값과 결측값을 포함하고 있다.
  15. indfall:
    • 고객 사망 여부를 나타내는 indfall는 2가지의 값(‘N’, ‘S’)과 결측값을 포함하고 있다.
  16. nomprov:
    • 지방 이름을 나타내는 nomprov는 52개의 값과 결측값을 포함하고 있다.
  17. segmento:
    • 고객을 분류한 segmento는 3가지의 값(‘VIP’, ‘Individuals’, ‘college graduated’)과 결측값을 포함하고 있다.

3.5. Idea note: Variable

idx 변수명 내용 데이터 타입 특징 변수 아이디어
1 fecha_dato 월별 날짜 데이터 object 년도, 월 데이터를 별도로 추출하자.
2 ncodpers 고객 고유 번호 int64 숫자로 되어 있지만, 엄밀히 식별 번호다. 고객 고유 번호는 학습에 사용하지 못한다.
3 ind_empleado 고용 지표 object 5개 고유 값 중 ’N’이 99.9% 빈도로 평중이 높아 변수 중요도가 낮을 것 같다.
4 pais_residencia 고객 거주 국가 object 알파벳 두 글자로 생성된 국가 변수이지만, 암호화가 되어 있어 국가 역추적은 어렵다.
5 sexo 성별 object 성별 변수이다.
6 age 나이 object\[\rightarrow\]int64 정수형이 아니므로 정제가 필요해 보인다.
7 fecha_alta 고객이 은행과 첫 계약을 체결한 날짜 object 1995년~2016년까지 폭넓은 값을 가진다. 장기 고객도 존재하는 것 같다.
8 ind_nuevo 신규 고객 지표 float64\[\rightarrow\]int64 대부분이 0, 소수가 1인 변수이다. 정수로 변환해야 한다.
9 antiguedad 은행 거래 누적 기간 (월) object\[\rightarrow\]int64
10 indrel 고객 등급 (1: 1등급 고객, 99: 해당 달에 고객 1등급이 해제되는 1등급 고객) float64\[\rightarrow\]int64 대부분이 1, 소수가 99인 변수이다. 정수로 변환해야 한다.
11 ult_fec_cli_1t 1등급 고객으로서 마지막 날짜 object 2015년 7월~ 2016년 5월까지의 데이터이다.
12 indrel_1mes 월초 기준 고객 등급 (1: First/Primary customer, 2: co-owner, P : Potential, 3: former primary, 4: former co-owner) object\[\rightarrow\]int64 ’1’과 ’1.0’이 다른 값으로 존재한다. ‘P’를 정수로 변환하고, ’1’, ’1.0’이 동일한 1 값을 갖도록 정수로 변환하자.
13 tiprel_1mes 월초 기준 고객 관계 유형 (A: active, I: inactive, P: former customer, R: Potential) object
14 indresi 거주 지표 (고객의 거주 국가와 은행이 위치한 국가 동일 여부, S: Yes or N: No) object
15 indext 외국인 지표 (고객이 태어난 국가와 은행이 위치한 국가 동일 여부, S: Yes or N: No) object
16 conyuemp 배우자 지표 (1 : 은행 직원을 배우자로 둔 고객) object
17 canal_entrada 고객 유입 채널 object 알파벳 세글자로 암호화된 유입 경로 변수이다.
18 indfall 고객 사망 여부 (S: Yes or S: No) object
19 tipodom 주소 유형 (1: primary address) float64 모든 값이 1. 변수로서 무의미하다. 변수를 제거하자.
20 cod_prov 지방 코드 (고객 주소 기반) float64\[\rightarrow\]int64 1~52 사이 갑슬 고르게 가지는 값이다. 굳이 소수일 필요가 없으니, 정수로 변환하자.
21 nomprov 지방 이름 object 스페인 지역 이름을 나타낸다.
22 ind_actividad_cliente 활동 지표 (1: active customer, 0: inactive customer) float64\[\rightarrow\]int64 0과 1의 값을 가지는 변수이다. 정수로 변환하자.
23 renta 가구 총수입 float64\[\rightarrow\]int64 10^3~2*10^7의 값을 가지며, 정확한 단위를 알 수 없다(달러 혹은 유로) 정수로 변환하자.
24 segmento 분류 (01: VIP, 02: Individuals, 03: college graduated) object

4. Preprocessing

4.1. Reshape data type: datetime

각 개인이 현재 소유하고 있는 상품에 대한 인구 통계 정보를 보유하고 있다. Test dataset을 만드려면 Training dataset과 지난 달을 분리하고 새로 구입했는지 여부를 나타내는 변수를 만들어야 한다. 먼저 날짜를 변환하겠다. ID 식별자인 fecha_dato와 고객이 가입한 날짜인 fecha_alta가 있다.

df$fecha_dato <- as.POSIXct(strptime(df$fecha_dato,format="%Y-%m-%d"))
df$fecha_alta <- as.POSIXct(strptime(df$fecha_alta,format="%Y-%m-%d"))
unique(df$fecha_dato)
##  [1] "2015-01-28 KST" "2015-02-28 KST" "2015-03-28 KST" "2015-04-28 KST"
##  [5] "2015-05-28 KST" "2015-06-28 KST" "2015-07-28 KST" "2015-08-28 KST"
##  [9] "2015-09-28 KST" "2015-10-28 KST" "2015-11-28 KST" "2015-12-28 KST"
## [13] "2016-01-28 KST" "2016-02-28 KST" "2016-03-28 KST" "2016-04-28 KST"
## [17] "2016-05-28 KST"

날짜를 표준 년-월-일 형식으로 두 번 확인하기 위해 값을 출력했다. 고객이 연중 특정 개월(성과금이 나오는 크리스마스 시즌)에 제품을 살 가능성이 더 많을 것으로 기대하므로 월 열을 추가할 것이다.

df$month <- month(df$fecha_dato)

4.2. Data Cleaning

Missing values

- 결측치 확인하기

  • True일 경우 결측치 존재, False일 경우 결측치 없음
sapply(df,function(x)any(is.na(x)))
##            fecha_dato              ncodpers          ind_empleado 
##                 FALSE                 FALSE                 FALSE 
##       pais_residencia                  sexo                   age 
##                 FALSE                 FALSE                  TRUE 
##            fecha_alta             ind_nuevo            antiguedad 
##                  TRUE                  TRUE                  TRUE 
##                indrel        ult_fec_cli_1t           indrel_1mes 
##                  TRUE                 FALSE                 FALSE 
##           tiprel_1mes               indresi                indext 
##                 FALSE                 FALSE                 FALSE 
##              conyuemp         canal_entrada               indfall 
##                 FALSE                 FALSE                 FALSE 
##               tipodom              cod_prov               nomprov 
##                  TRUE                  TRUE                 FALSE 
## ind_actividad_cliente                 renta              segmento 
##                  TRUE                  TRUE                 FALSE 
##     ind_ahor_fin_ult1     ind_aval_fin_ult1      ind_cco_fin_ult1 
##                 FALSE                 FALSE                 FALSE 
##     ind_cder_fin_ult1      ind_cno_fin_ult1     ind_ctju_fin_ult1 
##                 FALSE                 FALSE                 FALSE 
##     ind_ctma_fin_ult1     ind_ctop_fin_ult1     ind_ctpp_fin_ult1 
##                 FALSE                 FALSE                 FALSE 
##     ind_deco_fin_ult1     ind_deme_fin_ult1     ind_dela_fin_ult1 
##                 FALSE                 FALSE                 FALSE 
##     ind_ecue_fin_ult1     ind_fond_fin_ult1      ind_hip_fin_ult1 
##                 FALSE                 FALSE                 FALSE 
##     ind_plan_fin_ult1     ind_pres_fin_ult1     ind_reca_fin_ult1 
##                 FALSE                 FALSE                 FALSE 
##     ind_tjcr_fin_ult1     ind_valo_fin_ult1      ind_viv_fin_ult1 
##                 FALSE                 FALSE                 FALSE 
##       ind_nomina_ult1     ind_nom_pens_ult1       ind_recibo_ult1 
##                  TRUE                  TRUE                 FALSE 
##                 month 
##                 FALSE

Data Cleaning 1: age (고객 나이)

** - 고객 나이 분포 시각화**

ggplot(data=df,aes(x=age)) + 
  geom_bar(alpha=0.75,fill="tomato",color="black") +
  ggtitle("Age Distribution") + 
  my_theme

결측값(NA) 외에도 매우 작고 매우 높은 연령대의 사람들이 있다. 분포가 bimodal(쌍봉)인 것도 흥미롭다. 수 많은 대학생들이 있으며, 중년기에 또 다른 피크가 있다. 분포를 분리하고 특이치를 가장 가까운 값의 평균으로 변형할 것이다.

df$age[(df$age < 18)]  <- mean(df$age[(df$age >= 18) & (df$age <=30)],na.rm=TRUE)
df$age[(df$age > 100)] <- mean(df$age[(df$age >= 30) & (df$age <=100)],na.rm=TRUE)
df$age[is.na(df$age)]  <- median(df$age,na.rm=TRUE)
df$age                 <- round(df$age)

df$age[(df$age < 18)]  <- mean(df$age[(df$age >= 18) & (df$age <=30)],na.rm=TRUE)
df$age[(df$age > 100)] <- mean(df$age[(df$age >= 30) & (df$age <=100)],na.rm=TRUE)
df$age[is.na(df$age)]  <- median(df$age,na.rm=TRUE)
df$age                 <- round(df$age)

Data Cleaning 2: ind_nuevo (신규 고객 지표)

- Check missing values

ind_nuevo는 고객이 신규인지 아닌지를 나타낸다. 얼마나 많은 누락 된 값이 있는지 확인해보겠다.

sum(is.na(df$ind_nuevo))
## [1] 2773

고객에게 몇 개월 동안의 기록이 있는지 살펴봄으로써 누락된 값을 채울 수 있는지 알아보겠다.

months.active <- df[is.na(df$ind_nuevo),] %>%
  group_by(ncodpers) %>%
  summarise(months.active=n())  %>%
  select(months.active)
max(months.active)
## [1] 6

이들은 모두 새로운 고객인 것처럼 보이므로 적절하게 교체하겠다.

df$ind_nuevo[is.na(df$ind_nuevo)] <- 1 

Data Cleaning 3: antiguedad (은행 거래 누적 기간(월))

- Check missing values

sum(is.na(df$antiguedad))
## [1] 2773

아마 위의 사람들은 새로운 고객이었을 것이다.

summary(df[is.na(df$antiguedad),]%>%select(ind_nuevo))
##    ind_nuevo
##  Min.   :1  
##  1st Qu.:1  
##  Median :1  
##  Mean   :1  
##  3rd Qu.:1  
##  Max.   :1
summary(df[is.na(df$antiguedad),]%>%select(ind_nuevo))
##    ind_nuevo
##  Min.   :1  
##  1st Qu.:1  
##  Median :1  
##  Mean   :1  
##  3rd Qu.:1  
##  Max.   :1

그들에게 최소한의 서열을 부여한다.

df$antiguedad[is.na(df$antiguedad)] <- min(df$antiguedad,na.rm=TRUE)
df$antiguedad[df$antiguedad<0]      <- 0

일부 항목은 체결한 날짜가 없다. 중앙값으로 채워넣어야 한다.

df$fecha_alta[is.na(df$fecha_alta)] <- median(df$fecha_alta,na.rm=TRUE)

Data Cleaning 4: indrel (고객등급)

얼핏 보기에 주요 피쳐로 보인다. 기본 상태(디폴트 등급)가 고객이 선택한 것이지 혹은 회사가 지정하는 항목인지는 확실하지 않지만, 떨어지는 고객이 다른 구매 행동과 다를 가능성이있는 직관적인 것으로 보이는 경우가 있다.

table(df$indrel)
## 
##       1      99 
## 1420386    2625

- Imputation missing values: 결측치를 일반적인 상태로 채우기

df$indrel[is.na(df$indrel)] <- 1

Data Cleaning 5: tipodom, cod_prov (주소 유형, 지방 코드)

- Deletion: 유용하지 않은 데이터를 제거

tipodom과 cod_prov는 유용하지 않은 것처럼 보인다. 지방의 이름이 nomprov에 있기 때문에 지방 코드가 필요하지 않다.

df <- df %>% select(-tipodom,-cod_prov)

- Check missing values

sapply(df,function(x)any(is.na(x)))
##            fecha_dato              ncodpers          ind_empleado 
##                 FALSE                 FALSE                 FALSE 
##       pais_residencia                  sexo                   age 
##                 FALSE                 FALSE                 FALSE 
##            fecha_alta             ind_nuevo            antiguedad 
##                 FALSE                 FALSE                 FALSE 
##                indrel        ult_fec_cli_1t           indrel_1mes 
##                 FALSE                 FALSE                 FALSE 
##           tiprel_1mes               indresi                indext 
##                 FALSE                 FALSE                 FALSE 
##              conyuemp         canal_entrada               indfall 
##                 FALSE                 FALSE                 FALSE 
##               nomprov ind_actividad_cliente                 renta 
##                 FALSE                  TRUE                  TRUE 
##              segmento     ind_ahor_fin_ult1     ind_aval_fin_ult1 
##                 FALSE                 FALSE                 FALSE 
##      ind_cco_fin_ult1     ind_cder_fin_ult1      ind_cno_fin_ult1 
##                 FALSE                 FALSE                 FALSE 
##     ind_ctju_fin_ult1     ind_ctma_fin_ult1     ind_ctop_fin_ult1 
##                 FALSE                 FALSE                 FALSE 
##     ind_ctpp_fin_ult1     ind_deco_fin_ult1     ind_deme_fin_ult1 
##                 FALSE                 FALSE                 FALSE 
##     ind_dela_fin_ult1     ind_ecue_fin_ult1     ind_fond_fin_ult1 
##                 FALSE                 FALSE                 FALSE 
##      ind_hip_fin_ult1     ind_plan_fin_ult1     ind_pres_fin_ult1 
##                 FALSE                 FALSE                 FALSE 
##     ind_reca_fin_ult1     ind_tjcr_fin_ult1     ind_valo_fin_ult1 
##                 FALSE                 FALSE                 FALSE 
##      ind_viv_fin_ult1       ind_nomina_ult1     ind_nom_pens_ult1 
##                 FALSE                  TRUE                  TRUE 
##       ind_recibo_ult1                 month 
##                 FALSE                 FALSE

Data Cleaning 6: ind_actividad_cliente (활동 지표)

- Check missing values

sum(is.na(df$ind_actividad_cliente))
## [1] 2773

2,773개의 결측값을 중앙값으로 채워넣었다.

df$ind_actividad_cliente[is.na(df$ind_actividad_cliente)] <- median(df$ind_actividad_cliente,na.rm=TRUE)

Data Cleaning 7: nomprov (지방 이름)

unique(df$nomprov)
##  [1] "ZARAGOZA"               "CIUDAD REAL"           
##  [3] "BARCELONA"              "TOLEDO"                
##  [5] "MADRID"                 "LUGO"                  
##  [7] "BADAJOZ"                "SALAMANCA"             
##  [9] "VALENCIA"               "CORUÑA, A"             
## [11] "ALICANTE"               "GUADALAJARA"           
## [13] "SEGOVIA"                "TERUEL"                
## [15] "CUENCA"                 "VALLADOLID"            
## [17] "CACERES"                "HUESCA"                
## [19] "CORDOBA"                "LERIDA"                
## [21] "PONTEVEDRA"             "LEON"                  
## [23] "JAEN"                   "PALENCIA"              
## [25] "BALEARS, ILLES"         "GRANADA"               
## [27] "NAVARRA"                "CASTELLON"             
## [29] "HUELVA"                 "MALAGA"                
## [31] "ASTURIAS"               "BIZKAIA"               
## [33] "CANTABRIA"              "TARRAGONA"             
## [35] "SEVILLA"                "CADIZ"                 
## [37] "OURENSE"                "ALBACETE"              
## [39] "GIRONA"                 "SORIA"                 
## [41] "ZAMORA"                 ""                      
## [43] "MURCIA"                 "PALMAS, LAS"           
## [45] "SANTA CRUZ DE TENERIFE" "RIOJA, LA"             
## [47] "MELILLA"                "BURGOS"                
## [49] "GIPUZKOA"               "ALAVA"                 
## [51] "AVILA"                  "ALMERIA"               
## [53] "CEUTA"

- Imputation : 공백칸 채워 넣기

df$nomprov[df$nomprov==""] <- "UNKNOWN"

Data Cleaning 8: renta (가구 총 소득)

- Check missing values

sum(is.na(df$renta))
## [1] 292921

- Imputation: 조금 더 과학적으로 접근하기

단순히 중앙값으로 채우기 보다는 지역별로 세분화해서 지역별 수입(median)을 살펴보고 채워 넣겠다.

task1 <- df %>%
  filter(!is.na(renta)) %>%
  group_by(nomprov) %>%
  summarise(med.income = median(renta)) %>%
  arrange(med.income) %>%
  mutate(city=factor(nomprov,levels=nomprov)) 
p4 <- df %>%
  filter(!is.na(renta)) %>%
  group_by(nomprov) %>%
  summarise(med.income = median(renta)) %>%
  arrange(med.income) %>%
  mutate(city=factor(nomprov,levels=nomprov)) %>% # the factor() call prevents reordering the names
  ggplot(aes(x=city,y=med.income)) + 
  geom_point(color="#c60b1e") + 
  guides(color=FALSE) + 
  xlab("City") +
  ylab("Median Income") +  
  my_theme + 
  theme(axis.text.x=element_blank(), axis.ticks = element_blank()) + 
  geom_text(aes(x=city,y=med.income,label=city),angle=90,hjust=-.25) +
  theme(plot.background=element_rect(fill="#c60b1e"),
        panel.background=element_rect(fill="#ffc400"),
        panel.grid =element_blank(),
        axis.title =element_text(color="#ffc400"),
        axis.text  =element_text(color="#ffc400"),
        plot.title =element_text(color="#ffc400",size=32)) +
  ylim(c(50000,200000)) +
  ggtitle("Income Distribution by City")

p4
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_text).

Data Cleaning 9: nomprov (지방 이름)

new.incomes <-df %>%
  select(nomprov) %>%
  merge(df %>%
  group_by(nomprov) %>%
  summarise(med.income=median(renta,na.rm=TRUE)),by="nomprov") %>%
  select(nomprov,med.income) %>%
  arrange(nomprov)
df <- arrange(df,nomprov)
df$renta[is.na(df$renta)] <- new.incomes$med.income[is.na(df$renta)]
rm(new.incomes)

df$renta[is.na(df$renta)] <- median(df$renta,na.rm=TRUE)
df <- arrange(df,fecha_dato)

Alava의 모든 항목에는 가구 총 수입이 없다.

Data Cleaning 10: ind_nomina_ult1 (급여)

- Check missing values

sum(is.na(df$ind_nomina_ult1))
## [1] 1479

이전 달을 보고 제품에 결측치를 채울 수 있지만, 값이 너무 적으므로 효율적인 방법을 사용하겠다.

df[is.na(df)] <- 0

모든 결측치들을 처리했다. 빈 문자열을 포함할 수 있는 문자열이 많은데 대부분 빈 문자열을 가진 항목은 알 수 없는 범주형으로 변환된다. 이를 처리해야 한다.

str(df)
## 'data.frame':    1425784 obs. of  47 variables:
##  $ fecha_dato           : POSIXct, format: "2015-01-28" "2015-01-28" ...
##  $ ncodpers             : int  1052813 1054808 1043828 1043931 1064079 1067230 1059828 1058355 1016405 1106596 ...
##  $ ind_empleado         : chr  "N" "N" "N" "N" ...
##  $ pais_residencia      : chr  "ES" "ES" "ES" "ES" ...
##  $ sexo                 : chr  "H" "H" "V" "H" ...
##  $ age                  : num  26 24 27 23 46 25 49 22 62 52 ...
##  $ fecha_alta           : POSIXct, format: "2012-08-20" "2012-08-30" ...
##  $ ind_nuevo            : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ antiguedad           : num  35 35 35 35 34 34 34 34 38 32 ...
##  $ indrel               : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ ult_fec_cli_1t       : chr  "" "" "" "" ...
##  $ indrel_1mes          : chr  "1" "1.0" "1" "1" ...
##  $ tiprel_1mes          : chr  "I" "I" "I" "I" ...
##  $ indresi              : chr  "S" "S" "S" "S" ...
##  $ indext               : chr  "N" "N" "N" "N" ...
##  $ conyuemp             : chr  "" "" "" "" ...
##  $ canal_entrada        : chr  "KHE" "KHE" "KHE" "KHE" ...
##  $ indfall              : chr  "N" "N" "N" "N" ...
##  $ nomprov              : chr  "ALAVA" "ALAVA" "ALAVA" "ALAVA" ...
##  $ ind_actividad_cliente: int  0 0 0 1 1 1 1 1 1 1 ...
##  $ renta                : num  74454 74454 74454 74454 74454 ...
##  $ segmento             : chr  "03 - UNIVERSITARIO" "03 - UNIVERSITARIO" "03 - UNIVERSITARIO" "03 - UNIVERSITARIO" ...
##  $ ind_ahor_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_aval_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_cco_fin_ult1     : int  1 1 1 1 1 0 1 1 1 1 ...
##  $ ind_cder_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_cno_fin_ult1     : int  0 0 0 0 0 1 0 0 0 0 ...
##  $ ind_ctju_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_ctma_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_ctop_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_ctpp_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_deco_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_deme_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_dela_fin_ult1    : int  0 0 0 0 1 0 0 0 0 0 ...
##  $ ind_ecue_fin_ult1    : int  0 0 0 0 1 0 0 0 0 0 ...
##  $ ind_fond_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_hip_fin_ult1     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_plan_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_pres_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_reca_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_tjcr_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_valo_fin_ult1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_viv_fin_ult1     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_nomina_ult1      : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_nom_pens_ult1    : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ ind_recibo_ult1      : int  0 0 0 0 0 1 0 0 0 0 ...
##  $ month                : num  1 1 1 1 1 1 1 1 1 1 ...
##  - attr(*, ".internal.selfref")=<externalptr>

Data Cleaning 11: Empty strings (빈 문자열 전처리)

char.cols <- names(df)[sapply(df,is.character)]
for (name in char.cols){
  print(sprintf("Unique values for %s:", name))
  print(unique(df[[name]]))
  cat('\n')
  }
## [1] "Unique values for ind_empleado:"
## [1] "N" "B" "A" "F" "S" "" 
## 
## [1] "Unique values for pais_residencia:"
##  [1] "ES" ""   "AT" "GB" "MX" "DO" "CO" "CH" "HN" "FR" "IT" "GT" "MA" "SN"
## [15] "BE" "CN" "RO" "BR" "BG" "DE" "PT" "AR" "IE" "US" "RU" "EC" "KE" "MD"
## [29] "IL" "TR" "AO" "PA" "DK" "CA" "CU" "GE" "PE" "CR" "BO" "VE" "QA" "JP"
## [43] "SK" "GR" "TH" "FI" "SE" "NL" "NG" "CL" "PY" "GW" "AE" "PL" "CZ" "KR"
## [57] "UY" "IN" "PR" "TW" "BA" "NO" "ZA" "KZ" "LT"
## 
## [1] "Unique values for sexo:"
## [1] "H" "V" "" 
## 
## [1] "Unique values for ult_fec_cli_1t:"
##   [1] ""           "2015-07-09" "2015-07-17" "2015-07-10" "2015-07-15"
##   [6] "2015-07-21" "2015-07-24" "2015-07-03" "2015-07-07" "2015-07-20"
##  [11] "2015-07-29" "2015-07-01" "2015-07-06" "2015-07-14" "2015-07-30"
##  [16] "2015-07-08" "2015-07-13" "2015-07-28" "2015-07-22" "2015-07-27"
##  [21] "2015-07-02" "2015-07-16" "2015-07-23" "2015-08-12" "2015-08-14"
##  [26] "2015-08-27" "2015-08-25" "2015-08-18" "2015-08-07" "2015-08-24"
##  [31] "2015-08-20" "2015-08-06" "2015-08-13" "2015-08-10" "2015-08-04"
##  [36] "2015-08-19" "2015-08-03" "2015-08-17" "2015-08-26" "2015-08-28"
##  [41] "2015-08-05" "2015-08-11" "2015-08-21" "2015-09-01" "2015-09-14"
##  [46] "2015-09-24" "2015-09-17" "2015-09-16" "2015-09-15" "2015-09-28"
##  [51] "2015-09-22" "2015-09-02" "2015-09-21" "2015-09-11" "2015-09-18"
##  [56] "2015-09-09" "2015-09-29" "2015-09-08" "2015-09-25" "2015-09-04"
##  [61] "2015-09-03" "2015-09-07" "2015-09-10" "2015-09-23" "2015-10-08"
##  [66] "2015-10-16" "2015-10-02" "2015-10-23" "2015-10-20" "2015-10-07"
##  [71] "2015-10-26" "2015-10-21" "2015-10-22" "2015-10-06" "2015-10-01"
##  [76] "2015-10-09" "2015-10-27" "2015-10-15" "2015-10-05" "2015-10-13"
##  [81] "2015-10-19" "2015-10-14" "2015-10-28" "2015-10-29" "2015-11-13"
##  [86] "2015-11-26" "2015-11-16" "2015-11-09" "2015-11-27" "2015-11-20"
##  [91] "2015-11-03" "2015-11-18" "2015-11-23" "2015-11-05" "2015-11-10"
##  [96] "2015-11-11" "2015-11-19" "2015-11-06" "2015-11-04" "2015-11-02"
## [101] "2015-11-24" "2015-11-12" "2015-11-25" "2015-11-17" "2015-12-03"
## [106] "2015-12-22" "2015-12-16" "2015-12-24" "2015-12-17" "2015-12-29"
## [111] "2015-12-18" "2015-12-21" "2015-12-02" "2015-12-09" "2015-12-01"
## [116] "2015-12-28" "2015-12-14" "2015-12-30" "2015-12-07" "2015-12-23"
## [121] "2015-12-04" "2015-12-10" "2015-12-11" "2015-12-15" "2016-01-21"
## [126] "2016-01-18" "2016-01-19" "2016-01-11" "2016-01-28" "2016-01-05"
## [131] "2016-01-14" "2016-01-07" "2016-01-27" "2016-01-12" "2016-01-15"
## [136] "2016-01-13" "2016-01-08" "2016-01-26" "2016-01-22" "2016-01-20"
## [141] "2016-01-04" "2016-01-25" "2016-02-02" "2016-02-22" "2016-02-18"
## [146] "2016-02-01" "2016-02-19" "2016-02-17" "2016-02-08" "2016-02-09"
## [151] "2016-02-25" "2016-02-26" "2016-02-16" "2016-02-23" "2016-02-04"
## [156] "2016-02-11" "2016-02-15" "2016-02-03" "2016-02-24" "2016-02-05"
## [161] "2016-02-12" "2016-02-10" "2016-03-11" "2016-03-09" "2016-03-01"
## [166] "2016-03-15" "2016-03-14" "2016-03-04" "2016-03-18" "2016-03-10"
## [171] "2016-03-08" "2016-03-28" "2016-03-29" "2016-03-02" "2016-03-22"
## [176] "2016-03-03" "2016-03-24" "2016-03-30" "2016-03-21" "2016-03-23"
## [181] "2016-03-17" "2016-03-16" "2016-03-07" "2016-04-12" "2016-04-01"
## [186] "2016-04-08" "2016-04-26" "2016-04-27" "2016-04-07" "2016-04-19"
## [191] "2016-04-15" "2016-04-11" "2016-04-05" "2016-04-18" "2016-04-06"
## [196] "2016-04-21" "2016-04-25" "2016-04-04" "2016-04-13" "2016-04-20"
## [201] "2016-04-22" "2016-04-28" "2016-04-14" "2016-05-11" "2016-05-02"
## [206] "2016-05-24" "2016-05-23" "2016-05-18" "2016-05-19" "2016-05-20"
## [211] "2016-05-05" "2016-05-26" "2016-05-16" "2016-05-12" "2016-05-03"
## [216] "2016-05-30" "2016-05-10" "2016-05-27" "2016-05-13" "2016-05-04"
## [221] "2016-05-09" "2016-05-06" "2016-05-17" "2016-05-25"
## 
## [1] "Unique values for indrel_1mes:"
##  [1] "1"   "1.0" "3"   ""    "3.0" "2"   "P"   "2.0" "4.0" "4"  
## 
## [1] "Unique values for tiprel_1mes:"
## [1] "I" "A" "P" ""  "R"
## 
## [1] "Unique values for indresi:"
## [1] "S" ""  "N"
## 
## [1] "Unique values for indext:"
## [1] "N" "S" "" 
## 
## [1] "Unique values for conyuemp:"
## [1] ""  "N"
## 
## [1] "Unique values for canal_entrada:"
##   [1] "KHE" "KAT" "KFC" "KHD" "KFA" "KHK" "KAY" "KAQ" "KGX" "KAI" "KEY"
##  [12] "KAP" "KDW" "KAZ" "KEH" "RED" "KAG" "KCH" "KFU" "KAR" "KFI" "KHC"
##  [23] "KHF" "KHL" "KDZ" "KES" "KCM" "KEW" "013" "KAS" "007" "KAA" "KFH"
##  [34] "KAE" "KAF" "KFD" "KBO" "KCC" "KAW" "KBZ" "KFS" "KFF" "KFK" "KHM"
##  [45] "KBQ" "KAB" "KAJ" "KAH" "KCI" "KAO" "KAK" "KBH" "KBM" "KCG" "KFN"
##  [56] "KDE" "KDA" "KDC" "KCS" "KDF" "KCU" "KEZ" "KAM" ""    "KEN" "KCD"
##  [67] "KEV" "KCB" "KFR" "KED" "KBF" "KHN" "KGW" "KDR" "KAD" "KEJ" "KBG"
##  [78] "KDQ" "KAN" "KFJ" "KDM" "KEQ" "KFL" "KAL" "KEC" "KCK" "KGY" "KGV"
##  [89] "KDD" "KBU" "KCA" "KBL" "KFT" "KDU" "KCL" "KBR" "KBV" "KBD" "KBY"
## [100] "KBW" "KBX" "KCF" "KCE" "KBB" "KFM" "KEL" "004" "KEO" "KFG" "KBJ"
## [111] "K00" "KBS" "KFB" "KDY" "KAC" "KDX" "KDO" "KDP" "KEA" "KEB" "KCJ"
## [122] "KFP" "KEG" "KEK" "KEF" "KEI" "KDS" "KDT" "KCO" "KDV" "KAU" "KCN"
## [133] "KCR" "KCQ" "KHO" "KCT" "KCV" "KDH" "KDG" "KDN" "KHQ" "KHP"
## 
## [1] "Unique values for indfall:"
## [1] "N" "S" "" 
## 
## [1] "Unique values for nomprov:"
##  [1] "ALAVA"                  "ALBACETE"              
##  [3] "ALICANTE"               "ALMERIA"               
##  [5] "ASTURIAS"               "AVILA"                 
##  [7] "BADAJOZ"                "BALEARS, ILLES"        
##  [9] "BARCELONA"              "BIZKAIA"               
## [11] "BURGOS"                 "CACERES"               
## [13] "CADIZ"                  "CANTABRIA"             
## [15] "CASTELLON"              "CEUTA"                 
## [17] "CIUDAD REAL"            "CORDOBA"               
## [19] "CORUÑA, A"              "CUENCA"                
## [21] "GIPUZKOA"               "GIRONA"                
## [23] "GRANADA"                "GUADALAJARA"           
## [25] "HUELVA"                 "HUESCA"                
## [27] "JAEN"                   "LEON"                  
## [29] "LERIDA"                 "LUGO"                  
## [31] "MADRID"                 "MALAGA"                
## [33] "MELILLA"                "MURCIA"                
## [35] "NAVARRA"                "OURENSE"               
## [37] "PALENCIA"               "PALMAS, LAS"           
## [39] "PONTEVEDRA"             "RIOJA, LA"             
## [41] "SALAMANCA"              "SANTA CRUZ DE TENERIFE"
## [43] "SEGOVIA"                "SEVILLA"               
## [45] "SORIA"                  "TARRAGONA"             
## [47] "TERUEL"                 "TOLEDO"                
## [49] "UNKNOWN"                "VALENCIA"              
## [51] "VALLADOLID"             "ZAMORA"                
## [53] "ZARAGOZA"              
## 
## [1] "Unique values for segmento:"
## [1] "03 - UNIVERSITARIO" "02 - PARTICULARES"  "01 - TOP"          
## [4] ""

각 변수에 정의된 고유 값을 보고, 가장 일반적인 값(평균, 최빈값, 중앙값)으로 채우거나, 합리적이라고 생각하는 것에 따라 값을 채워넣을 수 있다.

df$indfall[df$indfall==""]                 <- "N"
df$tiprel_1mes[df$tiprel_1mes==""]         <- "A"
df$indrel_1mes[df$indrel_1mes==""]         <- "1"
df$indrel_1mes[df$indrel_1mes=="P"]        <- "5" # change to just numbers because it currently contains letters and numbers
df$indrel_1mes                             <- as.factor(as.integer(df$indrel_1mes))
df$pais_residencia[df$pais_residencia==""] <- "UNKNOWN"
df$sexo[df$sexo==""]                       <- "UNKNOWN"
df$ult_fec_cli_1t[df$ult_fec_cli_1t==""]   <- "UNKNOWN"
df$ind_empleado[df$ind_empleado==""]       <- "UNKNOWN"
df$indext[df$indext==""]                   <- "UNKNOWN"
df$indresi[df$indresi==""]                 <- "UNKNOWN"
df$conyuemp[df$conyuemp==""]               <- "UNKNOWN"
df$segmento[df$segmento==""]               <- "UNKNOWN"

모든 피쳐를 더미로 변환해야 한다.

features          <- grepl("ind_+.*ult.*",names(df))
df[,features]     <- lapply(df[,features],function(x)as.integer(round(x)))
df$total.services <- rowSums(df[,features],na.rm=TRUE)

고객이 늘어나거나 줄어드는 경향성을 파악하기 위해 고객이 해당 주기(billing cycle)에 서비스를 추가, 삭제 또는 유지했는지 여부를 나타내는 각 제품 및 월별 레이블을 만들 것이다. 고유한 time stamp에 ID를 할당한 다음 각 항목을 이전 달의 ID와 일치시켜 작업을 수행한다. 각각의 금융 상품에 대한 척도(indicator)는 우리가 원하는 값이다.

- Trick

  • as.numeric(factor)를 사용해서 고유한 ID 번호를 날짜로 변환한다.
  • 날짜 순으로 정렬해야 한다.
df               <- df %>% arrange(fecha_dato)
df$month.id      <- as.numeric(factor((df$fecha_dato)))
df$month.next.id <- df$month.id + 1

이제 월별 차이를 의미 있는 레이블로 변환하는 함수를 만들 것이다. 매월 고객은 특정 상품의 최근 상태를 유지하거나 추가하거나 뺄 수도 있다.

status.change <- function(x){
  if ( length(x) == 1 ) { # if only one entry exists, I'll assume they are a new customer and therefore are adding services
    label = ifelse(x==1,"Added","Maintained")
  } else {
    diffs <- diff(x) # difference month-by-month
    diffs <- c(0,diffs) # first occurrence will be considered Maintained, which is a little lazy. A better way would be to check if the earliest date was the same as the earliest we have in the dataset and consider those separately. Entries with earliest dates later than that have joined and should be labeled as "Added"
    label <- rep("Maintained", length(x))
    label <- ifelse(diffs==1,"Added",
                    ifelse(diffs==-1,"Dropped",
                           "Maintained"))
  }
  label
}

lapply와 ave를 사용하여 각 피쳐에 적용할 것이다.

df[,features] <- lapply(df[,features], function(x) return(ave(x,df$ncodpers, FUN=status.change)))

사람들이 서비스(금융 상품)을 추가하거나 제거하는데 어떤 영향을 미치는지 보는 것에 관심이 있다. 따라서 “유지됨”의 인스턴스를 제거할 것이다. 이 작업은 느려질 수 있으므로 완전히 제거해야하는 행을 확인한 다음 다른 행들을 제거할 것이다.

interesting <- rowSums(df[,features]!="Maintained")
df          <- df[interesting>0,]
df          <- df %>%
                gather(key=feature,
                value=status,
                ind_ahor_fin_ult1:ind_recibo_ult1)
df          <- filter(df,status!="Maintained")
head(df)
##   fecha_dato ncodpers ind_empleado pais_residencia sexo age fecha_alta
## 1 2015-02-28    53273            N              ES    V  43 2000-04-06
## 2 2015-05-28   186769            N              ES    V  49 2000-08-03
## 3 2015-02-28   179350            N              ES    H  43 2000-06-21
## 4 2016-02-28   179350            N              ES    H  43 2000-06-21
## 5 2015-02-28   135415            N              ES    H  54 1999-06-18
## 6 2015-02-28  1263335            N              ES    H  42 2015-01-19
##   ind_nuevo antiguedad indrel ult_fec_cli_1t indrel_1mes tiprel_1mes
## 1         0        183      1        UNKNOWN           1           A
## 2         0        180      1        UNKNOWN           1           A
## 3         0        181      1        UNKNOWN           1           A
## 4         0        188      1        UNKNOWN           1           A
## 5         0          9      1        UNKNOWN           1           A
## 6         0          6      1        UNKNOWN           1           A
##   indresi indext conyuemp canal_entrada indfall   nomprov
## 1       S      N  UNKNOWN           KAT       N BARCELONA
## 2       S      N  UNKNOWN           KAT       N    MADRID
## 3       S      N  UNKNOWN           KAT       N    MADRID
## 4       S      N  UNKNOWN           KAT       N    MADRID
## 5       S      N  UNKNOWN           KAT       N     ALAVA
## 6       S      N  UNKNOWN           KAT       N     ALAVA
##   ind_actividad_cliente     renta          segmento month total.services
## 1                     1 121920.30          01 - TOP     2              6
## 2                     1 138068.19          01 - TOP     5              8
## 3                     1 190182.24          01 - TOP     2              6
## 4                     1 190182.24          01 - TOP     2              5
## 5                     1  74453.79          01 - TOP     2              2
## 6                     1  74453.79 02 - PARTICULARES     2              1
##   month.id month.next.id           feature  status
## 1        2             3 ind_ahor_fin_ult1   Added
## 2        5             6 ind_ahor_fin_ult1 Dropped
## 3        2             3 ind_aval_fin_ult1   Added
## 4       14            15 ind_aval_fin_ult1 Dropped
## 5        2             3  ind_cco_fin_ult1   Added
## 6        2             3  ind_cco_fin_ult1 Dropped

5. Exploratory Data Analysis : Visualization

5.1. EDA 1: weekdays (고객이 은행과 첫 계약한 요일)

selectrow <- c("fecha_dato", "fecha_alta", "pais_residencia") # Rows that I want to analize
train <- fread("./input/train_ver2.csv", select = selectrow, showProgress =F)


train$fecha_dato <- ymd(train$fecha_dato) # Format date
train$fecha_alta <- ymd(train$fecha_alta)
train$year_dato <- year(train$fecha_dato) # Extract year
train$year_alta <- year(train$fecha_alta)
train$month_dato <- month(train$fecha_dato,label=T) # Extract month
train$month_alta <- month(train$fecha_alta,label=T)
train$weekday_alta <- wday(train$fecha_alta,label=T)
train<-as.data.table(train)

ggplot(train[,.N,by=weekday_alta],aes(x=weekday_alta, y=N, fill=weekday_alta)) +
  geom_bar(stat="identity", fill = fillColor2) +
  geom_text(aes(x = weekday_alta, y = 0.05, label = paste0("(",N, ")",sep="")),
            hjust=0.5, vjust=.5, size = 4, colour = 'black',
            fontface = 'bold') +
  labs(x = 'Weekday',
       y = 'Freq',
       title = "Number of customers that became 'first holder' by day of week") +
  theme_minimal()

5.2. EDA 2: Year & Month (고객이 은행과 첫 계약한 년월)

ggplot(train[year_alta>2009,.N,by=.(month_alta,year_alta)],aes(x = month_alta,y=N,fill=month_alta)) +
  geom_bar(stat="identity", fill = fillColor2) + 
  ggtitle("Number of customers that became 'first holder' by month and year") +
  facet_wrap(~year_alta) + 
  theme_minimal()

5.3. EDA 3: age (고객 나이 분포)

ggplot(data=df,aes(x=age)) + 
  geom_bar(alpha=0.75,fill="tomato",color="black") +
  ggtitle("Age Distribution") + 
  my_theme

5.4. EDA 4: renta (도시별 가구 총 소득 평균)

편차가 너무 많아서 결측값(소득)을 도시별로 그룹화하고 중간값으로 채워 넣는 것이 좋다. 도시명으로 그룹화되어 집계된 중앙 소득을 누락된 값으로 채워 넣는다.

p4

5.5. EDA 5 : Service Changes by Month

금융 상품(서비스)의 비율이 월별로 어떻게 변화하는지 추이 살펴보기

Relative Service Changes by Month

totals.by.feature <- df %>%
  group_by(month,feature) %>%
  summarise(counts=n())

df %>% 
  group_by(month,feature,status) %>%
  summarise(counts=n())%>%
  ungroup() %>%
  inner_join(totals.by.feature,by=c("month","feature")) %>%

  mutate(counts=counts.x/counts.y) %>%
  ggplot(aes(y=counts,x=factor(month.abb[month],levels=month.abb[seq(12,1,-1)]))) +
  geom_bar(aes(fill=status), stat="identity") +
  facet_wrap(facets=~feature,ncol = 6) +
  coord_flip() +
  my_theme_dark + 
  ylab("Count") +
  xlab("") + 
  ylim(limits=c(0,1)) +
  ggtitle("Relative Service \nChanges by Month") +
  theme(axis.text   = element_text(size=10),
        legend.text = element_text(size=14),
        legend.title= element_blank()      ,
        strip.text  = element_text(face="bold")) +
  scale_fill_brewer(palette="Set1")

Average Service Changes by Month

month.counts              <- table(unique(df$month.id)%%12)
cur.names                 <- names(month.counts)
cur.names[cur.names=="0"] <- "12"
names(month.counts) <- cur.names
month.counts              <- data.frame(month.counts) %>%
  rename(month=Var1,month.count=Freq) %>% mutate(month=as.numeric(month))

df %>% 
  group_by(month,feature,status) %>%
  summarise(counts=n())%>%
  ungroup() %>%
  inner_join(month.counts,by="month") %>%

  mutate(counts=counts/month.count) %>%
  ggplot(aes(y=counts,x=factor(month.abb[month],levels=month.abb[seq(12,1,-1)]))) +
  geom_bar(aes(fill=status), stat="identity") +
  facet_wrap(facets=~feature,ncol = 6) +
  coord_flip() +
  my_theme_dark + 
  ylab("Count") +
  xlab("") + 
  ggtitle("Average Service \nChanges by Month") +
  theme(axis.text    = element_text(size=10),
        legend.text  = element_text(size=14),
        legend.title = element_blank()      ,
        strip.text   = element_text(face="bold")) +
  scale_fill_brewer(palette="Set1")

5.6. EDA 6 : Service Changes by Gender

df %>%
  filter(sexo!="UNKNOWN") %>%
  ggplot(aes(x=sexo)) +
  geom_bar(aes(fill=status)) +
  facet_wrap(facets=~feature,ncol = 6) +
  my_theme_dark + 
  ylab("Count") +
  xlab("") +
  ggtitle("Service Changes by Gender") +
  theme(axis.text    = element_text(size=10),
        legend.text  = element_text(size=14),
        legend.title = element_blank()      ,
        strip.text   = element_text(face="bold")) +
  scale_fill_brewer(palette="Set1")

5.7. EDA 7 : Visualize stacked histograms as absolute values

- 월별 금융 상품 보유 여부를 누적 막대 그래프로 시각화

이 데이터는 월별 고객의 금융 상품 구매 이력을 기록하고 있다. 앞선 막대 그래프 시각화는 시계열성을 고려하지 않고, 1년 6개월치 데이터를 하나로 뭉쳐 시각화를 한 것이다. 그러나 시계열 데이터를 올바르게 분석하려면 EDA 과정에서도 시간에 따른 변화 척도를 눈에 볼 수 있도록 분석해야 한다.

예를 들어, 고객 유입 채널을 의미하는 canal_entrada 변수도 계절에 따라, 방학/입학 시즌에 따라 데이터의 분포가 변할 수 있으나, 앞선 기초 통계 및 시각화에서는 그러한 시계열성 변화를 전혀 포착하지 못한다.

특히, 이진 변수인 24개의 상품 변수에 대해서는 앞선 막대 그래프 시각화로는 큰 의미를 도출해 내기가 어려운 것이 사실이다. 각 상품 변수에 대해 0과 1의 분포를 볼 수 있을 뿐, 데이터 전처리 혹은 피처 엔지니어링에 큰 도움이 될만한 아이디어를 도출하기가 어려웠다. 이번 프로젝트의 목표는 고객 맞춤형 금융 상품 추천이다. 예측해야하는 정답, 즉 24개의 상품 변수에 대한 이해를 높이는 것은 매우 중요하다.

시계열성을 포함한 시각화 기법을 통하여 24개의 상품 변수를 살펴보고자 한다. 0과 1의 이진 변수로 구성된 24개의 상품 변수는 고객이 해당 상품을 보유하고 있을 때는 값이 1이고, 보유하고 있지 않을 때에는 값이 0이다. 그러므로, 각 상품 변수를 다 더한 값은 상품 보유 수준을 의미한다.

가장 쉽게 접근할 수 있는 방법으로, 월별 제품 변수의 합을 누적 막대 그래프 형태로 시각화하는 것이다. 누적 막대 그래프를 사용하는 이유는 서로 다른 제품 간의 차이를 함께 시각화하기 위함이다. 다음 코드는 월별 금융 상품 보유 여부를 누적 막대 그래프로 시각화하는 코드이다.

시각화 결과물을 보면, 총 제품 보유 수량이 달마다 조금씩 상승하고 있는 것을 확인할 수 있다. 고객의 숫자가 꾸준히 늘어나고 있기 때문으로 보인다.

매달 달라지는 금융 상품 보유 값에 무관하게 시각화를 하기 위하여, 절대값이 아닌 상대값으로 시각화 해야 한다.

5.8. EDA 8 : Visualize stacked histograms as relative values

- 월별 금융 상품 보유 여부를 상대값(Ratio)으로 시각화

상대값 기반의 시각화가 훨씬 분석하기 편하다. 시각화 결과물을 통해서 당좌 예금(“ind_cco_fun_ult1”)의 보유량은 계절에 상관 없이 꾸준히 높은 것을 확인할 수 있고, 다른 상품의 비율도 1년 6개월 간 큰 변화없이 꾸준해 보인다.

시계열성을 포함한 시각화를 시도하면, 데이터에 숨어 있는 패턴을 찾을 수 있으리라 기대했지만 24개의 금웅 제품 보유 누적 막대 그래프를 통해서는 1년 5개월의 기간 중, 눈에 띄는 변화 혹은 패턴을 찾기 어려웠다.

5.9. EDA 9 : Check if User Has Already Purchased Product

Visualize a new purchase stacked bar graph

- 신규 구매 누적 막대 그래프를 시각화하기

프로젝트에서 예측해야 하는 값은 고객이 신규로 구매할 상품이다. 보유 여부가 0에서 1로 변하는 그 순간에 관심이 있는 것이지, 구매 후 지속적으로 해당 제품을 보유하고 있는지에 대해서는 큰 관심이 없다. 그런 의미에서 앞에서 본 누적 막대 그래프는 제품의 총 보유량을 나타내고 있을 뿐, 우리가 원하는 ’신규 구매’에 대한 월별 추이를 나타내고 있지 않다.

우리에게 필요한 시각화는 ‘신규 구매’이지만, 주어진 데이터는 ’월별 보유’이다. 의도하는 바를 시각화하기 위해서는 주어진 데이터에서 우리가 원하는 정보, 즉 ’신규 구매’ 정보를 추출하는 별도의 과정(Preprocessing)이 필요하다.

아래 코드는 제품의 ’신규 구매 여부’를 추출하기 위한 코드이다. 실행하면, input 폴더에 ’labels.csv’라는 파일이 생성된다. 이 파일은 Training data와 같은 row 크기를 가지며, 24개의 column은 각 24개의 금융 상품의 신규 구매 여부를 의미하는 이진 변수이다.

첫 달인 2015-05-28의 신규 구매 숫자가 압도적으로 많은 이유는, 데이터의 첫 달에는 모든 보유 제품이 신규 구매로 인식되기 때문이다. 다른 달의 신규 구매 횟수를 더 자세히 보기 위하여 상대값 기준으로 다시 시각화 하겠다.

5.10. EDA 10 : Visualize a new purchase stacked graph as a relative value

- 신규 구매 여부를 상대값(Ratio)으로 시각화하기

흥미로운 패턴을 몇 가지 발견할 수 있다.

- 당좌예금(ind_cco_fin_ult1, 누적 막대 그래프 중 에서 첫 번째 하늘색 영역)은 8월 여름에 가장 높은 값을 가지며, 겨울에는 축소되는 계절 추이를 보인다.

- 단기예금(ind_deco_fin_ult1, 누적 막대 그래프 중 위에서 다섯 번째 보라색 영역)은 2015-06-28에 특이하게 높은 값을 가지며, 다른 시기에는 값이 매우 낮다.

- 급여, 연금 (ind_nomina_ult1, ind_nom_pens_ult1)은 당좌 예금과 반대로 8월 여름에 가장 낮은 값을 가지며 2016-02-28 겨울에 가장 높은 값을 가지는 추세이다.

- 신규 구매 빈도가 가장 높은 상위 5개 금융 상품은 당좌 예금, 신용 카드, 급여, 연금, 그리고 직불 카드(ind_cco_fin_ult1, ind_tjcr_fin_ult1, ind_nomina_ult1, ind_nom_pens_ult1, ind_recibo_fin_ult1)이다.

단순히 고객의 금융 상품 보유 총합을 나타낸 앞선 금융 상품 누적 그래프에서 보이지 않았던 계절 추이들이 위의 시각화를 통해 더욱 뚜렷하게 관찰할 수 있었다. 데이터가 계절성을 띈다는 것은, Training data를 몇 월로 지정하는가에 따라, 머신러닝 모델의 결과물이 많이 달라질 수 있다는 것을 의미한다. 계절의 변동성을 모델링 하는 하나의 일반적인 모델을 구축할 것인지, 계절에 따라 다수의 모델을 구축하여 혼합해서 사용할지를 결정해야 한다.

이러한 의사결정은 실무에서 흔히 겪는 실질적인 문제이다. 성능이 가장 좋은 방법을 선택하는 것이 최선이라고 생각한다. 실무에서는, 다수의 모델을 계절별로 구축하여 얻는 성능의 개선폭과, 다수의 모델을 실시간으로 운영하는 비용 및 리스크를 비교해보며 결정하게 될 것이다.

6. Baseline

데이터의 용량으로 인해 기계학습은 Python으로 진행

6.1. Introduction

Train / Test dataset description

총 1년 6개월치(2015-01-28 ~ 2016-06-28) 월별 고객 데이터가 제공된다. 첫 1년 5개월치(2015-01-28 ~ 2016-06-28) 월별 고객 데이터가 제공된다. 첫 1년 5개월치(2015-01-28~2016-05-28) 데이터는 훈련 데이터며, 훈련 데이터에는 비식별화된 24개의 고객 변수와 24개의 금융 상품 보유 현황에 대한 정보가 포함되어 있다.

- Summary

데이터를 일차적으로 살펴본 결과(EDA)를 다음과 같이 요약할 수 있다.

- 'age', 'antiguedad', 'indrel_1mes'등의 수치 변수가 object로 표현되어 있어 올바르게 인식되지 않는다. 데이터 정제 작업이 필요하다.

- 대부분의 고객 변수에 결측값이 존재한다. 수치형/범주형 변수의 결측값은 기존 변수에 없는 값(흔히 0, -1 등을 사용)으로 대체한다. 날짜 변수는 어느 날짜로 대체해야할지 고민이 필요하다.

- 두 개의 고유 값을 가지는 이진변수들이 많이 존재한다. 메모리의 효율을 극대화하기 이하여 int64의 0, 1 값으로 변환하자.

- 고객 등급, 고객 관계 유형 등 변수의 각 값이 무엇을 의미하는지 구체적인 설명이 부족하다. 예를 들어 월초 기준 고객 등급을 의미하는 'indrel_1mes'의 '3 : former primary' 값이 정확히 무엇을 의미하는지 자세한 설명이 생략되어 있다.

- 예측하고자 하는 값은 금융 제품 보유 여부가 아닌, 신규 구매이다. 그러므로 제공된 데이터에서 '신규 구매' 여부를 별도로 추출해야 하며, 평가 기준도 '신규 구매' 기준으로 진행되어야 한다(labels.csv).

- 신규 구매 데이터가 계절성을 띄고 있다. 단일 모델로 모든 데이터를 학습시킬지, 특정 월만 추출해서 학습을 진행할지 선택이 필요하다. 다수의 모델을 서로 다른 계절을 기반으로 학습하는 것도 또 하나의 방법이다.

마지막 한 달치(2016-06-28) 데이터는 테스트 데이터로 사용되며, 24개의 고객 변수는 동일하게 제공되나, 금융 상품 보유 현황에 관련한 값이 존재하지 않는다.

6.2. Baseline Model

산탄데르 금융 상품 추천 경진대회에 사용할 Baseline 모델을 구축한다. Baseline 모델은 일반적인 머신러닝 파이프라인의 모든 과정을 포함하는 가장 기초적인 모델이다.

머신러닝 파이프라인의 일반적인 순서는 다음과 같다.

① 데이터 전처리 → ② 피처 엔지니어링 → ③ 머신러닝 모델 학습 → ④ 테스트 데이터 예측 및 캐글 업로드

6.2.1. Preprocessing

Baseline 모델 구축을 위하여 데이터 전처리 과정에서는 다음 작업을 수행한다.

- 제품 변수의 결측값을 0으로 대체한다. 제품 보유 여부에 대한 정보가 없으면, 해당 제품을 보유하고 있지 않다고 가정한다.

- 훈련 데이터와 테스트 데이터를 통합한다. 훈련 데이터와 테스트 데이터는 날짜 변수(fecha_dato)로 쉽게 구분이 가능하다.
동일한 24개의 고객 변수를 공유하고 있으며, 테스트 데이터에 없는 24개의 제품 변수는 0으로 채운다.

- 범주형, 수치형 데이터를 전처리한다. 범주형 데이터는 .factorize()를 통해 Label Encoding을 수행한다.
데이터 타입이 object로 표현되는 수치형 데이터에서는 .unique()를 통해 특이값들을 대체하거나 제거하고, 정수형 데이터로 변환한다.

- 추후, 모델 학습에 사용할 변수 이름을 features 리스트에 미리 담는다.

평가 지표

import numpy as np
import pandas as pd
import xgboost as xgb

def apk(actual, predicted, k=7, default=0.0):
    # MAP@7 이므로, 최대 7개만 사용한다
    if len(predicted) > k:
        predicted = predicted[:k]

    score = 0.0
    num_hits = 0.0

    for i, p in enumerate(predicted):
        # 점수를 부여하는 조건은 다음과 같다 :
        # 예측값이 정답에 있고 (‘p in actual’)
        # 예측값이 중복이 아니면 (‘p not in predicted[:i]’) 
        if p in actual and p not in predicted[:i]:
            num_hits += 1.0
            score += num_hits / (i+1.0)

    # 정답값이 공백일 경우, 무조건 0.0점을 반환한다
    if not actual:
        return default

    # 정답의 개수(len(actual))로 average precision을 구한다
    return score / min(len(actual), k)

def mapk(actual, predicted, k=7, default=0.0):
    # list of list인 정답값(actual)과 예측값(predicted)에서 고객별 Average Precision을 구하고, np.mean()을 통해 평균을 계산한다
    return np.mean([apk(a, p, k, default) for a, p in zip(actual, predicted)]) 
np.random.seed(2018)
# 데이터를 불러온다.
trn = pd.read_csv('../../input/train_ver2.csv')
tst = pd.read_csv('../../input/test_ver2.csv')

## 데이터 전처리 ##

# 제품 변수를 별도로 저장해 놓는다.
prods = trn.columns[24:].tolist()

# 제품 변수 결측값을 미리 0으로 대체한다.
trn[prods] = trn[prods].fillna(0.0).astype(np.int8)

# 24개 제품 중 하나도 보유하지 않는 고객 데이터를 제거한다.
no_product = trn[prods].sum(axis=1) == 0
trn = trn[~no_product]

# 훈련 데이터와 테스트 데이터를 통합한다. 테스트 데이터에 없는 제품 변수는 0으로 채운다.
for col in trn.columns[24:]:
    tst[col] = 0
df = pd.concat([trn, tst], axis=0)

# 학습에 사용할 변수를 담는 list이다.
features = []

# 범주형 변수를 .factorize() 함수를 통해 label encoding한다.
categorical_cols = ['ind_empleado', 'pais_residencia', 'sexo', 'tiprel_1mes', 'indresi', 'indext', 'conyuemp', 'canal_entrada', 'indfall', 'tipodom', 'nomprov', 'segmento']
for col in categorical_cols:
    df[col], _ = df[col].factorize(na_sentinel=-99)
features += categorical_cols

# 수치형 변수의 특이값과 결측값을 -99로 대체하고, 정수형으로 변환한다.
df['age'].replace(' NA', -99, inplace=True)
df['age'] = df['age'].astype(np.int8)

df['antiguedad'].replace('     NA', -99, inplace=True)
df['antiguedad'] = df['antiguedad'].astype(np.int8)

df['renta'].replace('         NA', -99, inplace=True)
df['renta'].fillna(-99, inplace=True)
df['renta'] = df['renta'].astype(float).astype(np.int8)

df['indrel_1mes'].replace('P', 5, inplace=True)
df['indrel_1mes'].fillna(-99, inplace=True)
df['indrel_1mes'] = df['indrel_1mes'].astype(float).astype(np.int8)

# 학습에 사용할 수치형 변수를 features에 추구한다.
features += ['age','antiguedad','renta','ind_nuevo','indrel','indrel_1mes','ind_actividad_cliente']

6.2.2. Feature Engineering

피처 엔지니어링 단계에서는 머신러닝 모델 학습에 사용할 파생 변수를 생성한다. Baseline 모델에서는 전체 24개의 고객 변수와, 4개의 날짜 변수 기반 파생 변수 그리고 24개의 lag-1 변수를 사용한다.

고객이 첫 계약을 맺은 날짜를 의미하는 fecha_alta와 고객이 마지막으로 1등급이었던 날짜를 의미하는 ult_fec_cli_1t 변수에서 각각 연도와 월 정보를 추출한다. 그 외에도 날짜 변수를 활용한 파생 변수는 다양하다. 예를 들어, 두 개의 날짜 변수 간의 차이값을 파생 변수로 생성할 수 있다.

결측값은 임시로 -99로 대체한다. Scikit-learn에서 제공하는 머신러닝 모델은 결측값을 입력값으로 받지 않고 실행 에러가 발생하지만, xgboost 모델에서는 결측값도 정상적인 입력값으로 받는다. 데이터가 결측되었다는 것도 하나의 정보로 인식하고 모델 학습에 활용되지만, 결측값을 -99로 설정하겠다.

시계열 데이터에서는 고객의 과거 데이터를 기반으로 다양한 파생 변수를 생성할 수 있다. 예를 들어, 고객의 나이가 최근 3개월 동안 변동이 있었는지(즉, 3개월 안에 생일을 맞이했는지)를 이진 변수로 생성하거나, 한 달 전에 구매한 제품에 대한 정보를 변수로 사용할 수 있고, 최근 6개월 평균 월급을 계산할 수도 있다.

결론부터 얘기하면, N개월 전에 금융 상품을 보유하고 있었는지 여부를 나타내는 lag 변수가 좋은 파생 변수로 작용했다. 24개의 금융 상품 변수에 대하여 1개월 전, 2개월 전, 3개월 전 보유 여부를 현재 고객 데이터로 활용하는 것이다. Baseline 모델에서는 1개월 전 정보에서 5개월 전 정보까지 가져다 사용하는 lag-1 ~ lag-5 변수를 사용할 것이다.

# (피쳐 엔지니어링) 두 날짜 변수에서 연도와 월 정보를 추출한다.
df['fecha_alta_month'] = df['fecha_alta'].map(lambda x: 0.0 if x.__class__ is float else float(x.split('-')[1])).astype(np.int8)
df['fecha_alta_year'] = df['fecha_alta'].map(lambda x: 0.0 if x.__class__ is float else float(x.split('-')[0])).astype(np.int16)
features += ['fecha_alta_month', 'fecha_alta_year']

df['ult_fec_cli_1t_month'] = df['ult_fec_cli_1t'].map(lambda x: 0.0 if x.__class__ is float else float(x.split('-')[1])).astype(np.int8)
df['ult_fec_cli_1t_year'] = df['ult_fec_cli_1t'].map(lambda x: 0.0 if x.__class__ is float else float(x.split('-')[0])).astype(np.int16)
features += ['ult_fec_cli_1t_month', 'ult_fec_cli_1t_year']

# 그 외 변수의 결측값은 모두 -99로 대체한다.
df.fillna(-99, inplace=True)

# (피쳐 엔지니어링) lag-1 데이터를 생성한다.

# 날짜를 숫자로 변환하는 함수이다. 2015-01-28은 1, 2016-06-28은 18로 변환된다
def date_to_int(str_date):
    Y, M, D = [int(a) for a in str_date.strip().split("-")] 
    int_date = (int(Y) - 2015) * 12 + int(M)
    return int_date

# 날짜를 숫자로 변환하여 int_date에 저장한다
df['int_date'] = df['fecha_dato'].map(date_to_int).astype(np.int8)

# 데이터를 복사하고, int_date 날짜에 1을 더하여 lag를 생성한다. 변수명에 _prev를 추가한다.
df_lag = df.copy()
df_lag.columns = [col + '_prev' if col not in ['ncodpers', 'int_date'] else col for col in df.columns ]
df_lag['int_date'] += 1

# 원본 데이터와 lag 데이터를 ncodper와 int_date 기준으로 합친다. Lag 데이터의 int_date는 1 밀려 있기 때문에, 저번 달의 제품 정보가 삽입된다.
df_trn = df.merge(df_lag, on=['ncodpers','int_date'], how='left')

# 메모리 효율을 위해 불필요한 변수를 메모리에서 제거한다
del df, df_lag

# 저번 달의 제품 정보가 존재하지 않을 경우를 대비하여 0으로 대체한다.
for prod in prods:
    prev = prod + '_prev'
    df_trn[prev].fillna(0, inplace=True)
df_trn.fillna(-99, inplace=True)

# lag-1 변수를 추가한다.
features += [feature + '_prev' for feature in features]
features += [prod + '_prev' for prod in prods]

### Baseline 모델 이후, 다양한 피처 엔지니어링 추가

6.2.3. Training a model on the data

- 교차 검증

좋은 성과를 보기 위해서 가장 중요한 것은 교차 검증이라고 해도 과언이 아니다. 올바른 교차 검증 과정을 통해 제한 없이 다양한 아이디어를 실험하고, 성능 개선 여부를 확인하는 것이 매우 중요하다.

총 1년 6개월치의 데이터(2015-01-28 ~ 2016-05-28)가 훈련 데이터로 제공되고 예측해야 하는 테스트 데이터는 미래의 데이터(2016-06-28)이다. 이러한 경우에는, 내부 교차 검증 과정에서도 최신 데이터(2016-05-28)를 검증 데이터로 분리하고 나머지 데이터를 훈련 데이터로 사용하는 것이 일반적이다. Baseline 모델에서는 모델을 간소화하기 위해 2016-01-28 ~ 2016-04-28 총 4개월치 데이터를 훈련 데이터로 사용하고, 2016-05-28 데이터를 검증 데이터로 사용한다.

Split the data

  • 교차 검증을 위한 데이터 분리하기

훈련 데이터 전체를 사용하지 않고, 2016년도만 사용하도록 추출하는 부분은 피처 엔지니어링에 해당될 수 있다.

## 모델 학습
# 학습을 위하여 데이터를 훈련, 테스트용으로 분리한다.
# 학습에는 2016-01-28 ~ 2016-04-28 데이터만 사용하고, 검증에는 2016-05-28 데이터를 사용한다.
use_dates = ['2016-01-28', '2016-02-28', '2016-03-28', '2016-04-28', '2016-05-28']
trn = df_trn[df_trn['fecha_dato'].isin(use_dates)]
tst = df_trn[df_trn['fecha_dato'] == '2016-06-28']
del df_trn

# 훈련 데이터에서 신규 구매 건수만 추출한다.
X = []
Y = []
for i, prod in enumerate(prods):
    prev = prod + '_prev'
    prX = trn[(trn[prod] == 1) & (trn[prev] == 0)]
    prY = np.zeros(prX.shape[0], dtype=np.int8) + i
    X.append(prX)
    Y.append(prY)
XY = pd.concat(X)
Y = np.hstack(Y)
XY['y'] = Y

# 훈련, 검증 데이터로 분리한다. 
vld_date = '2016-05-28'
XY_trn = XY[XY['fecha_dato'] != vld_date]
XY_vld = XY[XY['fecha_dato'] == vld_date]

Modeling

- Hyperparameter tuning

- max_depth
    - 트리 모델의 최대 깊이를 의미한다. 값이 높을수록 더 복잡한 트리 모델을 생성하며, 과적힙(Overfitting)의 원인이 될 수 있다.
    
    
- eta
    - 딥러닝에서의 learning rate(학습률)과 같은 개념이다. 0과 1사이의 값을 가지며, 값이 너무 높으면 학습이 잘 되지 않을 수 있으며,
      반대로 값이 너무 낮으면 학습이 느릴 수 있다.
    
    
- colsample_bytree
    - 트리를 생성할 때, 훈련 데이터에서 변수를 샘플링해주는 비율이다. 모든 트리는 전체 변수의 일부만을 학습하여 서로의 약점을 보완해주는
      것이다. 보통 0.6~0.9 값을 사용한다.
    
    
- colsample_bylevel
    - 트리의 레벨 별로 훈련 데이터의 변수를 샘플링해주는 비율이다. 보통 0.6~0.9 값을 사용한다.
    
    

시간 대비 투자 효율을 생각했을 때, 파라미터 튜닝 보다는 피처 엔지니어링에 더 많은 시간을 쏟는 것이 좋다. 적당한 수준의 피처 엔지니어링을 통해 얻은 변수와 엄청난 수준의 파라미터 튜닝을 통해 얻은 하나의 완벽한 모댈보다, 적당한 수준의 파라미터 튜닝을 진행한 모델과 많은 시간을 피처 엔지니어링에 투자하여 얻어낸 양질의 변수를 학습한 모델이 보편적으로 더 좋은 성능을 보인다.

# XGBoost 모델 parameter를 설정한다.
param = {
    'booster': 'gbtree',
    'max_depth': 8,
    'nthread': 4,
    'num_class': len(prods),
    'objective': 'multi:softprob',
    'silent': 1,
    'eval_metric': 'mlogloss',
    'eta': 0.1,
    'min_child_weight': 10,
    'colsample_bytree': 0.8,
    'colsample_bylevel': 0.9,
    'seed': 2018,
    }

# 훈련, 검증 데이터를 XGBoost 형태로 변환한다.
X_trn = XY_trn.as_matrix(columns=features)
Y_trn = XY_trn.as_matrix(columns=['y'])
dtrn = xgb.DMatrix(X_trn, label=Y_trn, feature_names=features)

X_vld = XY_vld.as_matrix(columns=features)
Y_vld = XY_vld.as_matrix(columns=['y'])
dvld = xgb.DMatrix(X_vld, label=Y_vld, feature_names=features)

# XGBoost 모델을 훈련 데이터로 학습한다!
watch_list = [(dtrn, 'train'), (dvld, 'eval')]
model = xgb.train(param, dtrn, num_boost_round=1000, evals=watch_list, early_stopping_rounds=20)

# 학습한 모델을 저장한다.
import pickle
pickle.dump(model, open("../model/xgb.baseline.pkl", "wb"))
best_ntree_limit = model.best_ntree_limit

Cross Validation

교차 검증에서는 이번 경진대회의 평가 척도인 MAP@7을 사용하여 성능 수준을 확인한다. 교차 검증에서 실제로 사용되는 평가 척도를 것은 매우 중요하다. 아무리 많은 시간과 노력을 들여 최적화를 한다고 해도, 사용되는 평가 척도가 개선되지 않으면 결국 무의미하기 때문이다.

MAP@7 평가 척도는 최고 점수가 데이터에 따라 변동될 수 있다. Baseline 모델의 검증 데이터에서 얻을 수 있는 최고 점수는 0.042663점이다. 아래 코드에서 검증 데이터의 실제 정답값을 기반으로 mapk(add_vld_list, add_vld)list, 7, 0.0)를 계산하면 위 값이 나온다. 점수가 1점보다 낮은 이유는 검증 데이터의 모든 고객이 신규 구매를 하지 않았기 때문이다. 예를 들어, 100명의 고객 중 10명만이 신규 구매를 했다고 가정한다면, 우리는 그 10명을 정확히 예측해도 결국은 10%의 MAP@7 점수를 받게 된다. 그러므로, 검증 데이터의 MAP@7 최고 점수를 감안하여 학습 모델의 성능을 평가하고자 한다.

# MAP@7 평가 척도를 위한 준비작업이다.
# 고객 식별 번호를 추출한다.
vld = trn[trn['fecha_dato'] == vld_date]
ncodpers_vld = vld.as_matrix(columns=['ncodpers'])
# 검증 데이터에서 신규 구매를 구한다.
for prod in prods:
    prev = prod + '_prev'
    padd = prod + '_add'
    vld[padd] = vld[prod] - vld[prev]    
add_vld = vld.as_matrix(columns=[prod + '_add' for prod in prods])
add_vld_list = [list() for i in range(len(ncodpers_vld))]

# 고객별 신규 구매 정답 값을 add_vld_list에 저장하고, 총 count를 count_vld에 저장한다.
count_vld = 0
for ncodper in range(len(ncodpers_vld)):
    for prod in range(len(prods)):
        if add_vld[ncodper, prod] > 0:
            add_vld_list[ncodper].append(prod)
            count_vld += 1
            
# 검증 데이터에서 얻을 수 있는 MAP@7 최고점을 미리 구한다. (0.042663)
print(mapk(add_vld_list, add_vld_list, 7, 0.0))

# 검증 데이터에 대한 예측 값을 구한다.
X_vld = vld.as_matrix(columns=features)
Y_vld = vld.as_matrix(columns=['y'])
dvld = xgb.DMatrix(X_vld, label=Y_vld, feature_names=features)
preds_vld = model.predict(dvld, ntree_limit=best_ntree_limit)

# 저번 달에 보유한 제품은 신규 구매가 불가하기 때문에, 확률값에서 미리 1을 빼준다
preds_vld = preds_vld - vld.as_matrix(columns=[prod + '_prev' for prod in prods])

# 검증 데이터 예측 상위 7개를 추출한다.
result_vld = []
for ncodper, pred in zip(ncodpers_vld, preds_vld):
    y_prods = [(y,p,ip) for y,p,ip in zip(pred, prods, range(len(prods)))]
    y_prods = sorted(y_prods, key=lambda a: a[0], reverse=True)[:7]
    result_vld.append([ip for y,p,ip in y_prods])
    
# 검증 데이터에서의 MAP@7 점수를 구한다. (0.036466)
print(mapk(add_vld_list, result_vld, 7, 0.0))

Predict test data

- 테스트 데이터 예측 및 캐글 업로드

교차 검증에서 훈련 데이터의 일부를 도려내어 검증 데이터로 사용했다. 조금 번거로울 수 있지만, 테스트 데이터에 대하여 조금이라도 좋은 성능을 내기 위하여, 훈련 데이터와 검증 데이터를 합친 전체 데이터에 대하여 XGBoost 모델을 다시 학습한다. XGBoost 모델의 파라미터는 교차 검증을 통해 찾아낸 최적의 파라미터를 사용하되, XGBoost 모델에 사용되는 트리의 개수를 늘어난 검증 데이터만큼 증가시킨다.

전체 훈련 데이터에 대하여 학습한 모델의 변수 중요도(Feature Importance)를 출력한다. XGBoost 모델이 자체적으로 지원하는 get_fscore()를 통해 확인할 수 있다. 가장 식별력이 높은 변수는 무엇일까?

캐글 제출을 위하여 제출 파일을 생성한다. 규칙에 따라 제출 파일에는 고객 식별 번호(ncodpers)와 7개 제품 변수 이름을 공백 기준으로 띄워 직접 입력한다.

# XGBoost 모델을 전체 훈련 데이터로 재학습한다!
X_all = XY.as_matrix(columns=features)
Y_all = XY.as_matrix(columns=['y'])
dall = xgb.DMatrix(X_all, label=Y_all, feature_names=features)
watch_list = [(dall, 'train')]
# 트리 개수를 늘어난 데이터 양만큼 비례해서 증가한다.
best_ntree_limit = int(best_ntree_limit * (len(XY_trn) + len(XY_vld)) / len(XY_trn))
# XGBoost 모델 재학습!
model = xgb.train(param, dall, num_boost_round=best_ntree_limit, evals=watch_list)

# 변수 중요도를 출력해본다. 예상하던 변수가 상위로 올라와 있는가?
print("Feature importance:")
for kv in sorted([(k,v) for k,v in model.get_fscore().items()], key=lambda kv: kv[1], reverse=True):
    print(kv)

# 캐글 제출을 위하여 테스트 데이터에 대한 예측 값을 구한다.
X_tst = tst.as_matrix(columns=features)
dtst = xgb.DMatrix(X_tst, feature_names=features)
preds_tst = model.predict(dtst, ntree_limit=best_ntree_limit)
ncodpers_tst = tst.as_matrix(columns=['ncodpers'])
preds_tst = preds_tst - tst.as_matrix(columns=[prod + '_prev' for prod in prods])

# 제출 파일을 생성한다.
submit_file = open('../model/xgb.baseline.2018-10-29', 'w')
submit_file.write('ncodpers,added_products\n')
for ncodper, pred in zip(ncodpers_tst, preds_tst):
    y_prods = [(y,p,ip) for y,p,ip in zip(pred, prods, range(len(prods)))]
    y_prods = sorted(y_prods, key=lambda a: a[0], reverse=True)[:7]
    y_prods = [p for y,p,ip in y_prods]
    submit_file.write('{},{}\n'.format(int(ncodper), ' '.join(y_prods)))

캐글에서 Public Score는 테스트 데이터의 70%에 대한 평가 점수를, Private Score에서는 나머지 30%에 대한 평가 점수를 의미한다(비율은 경진대회마다 다르다). 경진 대회가 현재 진행형인 경우, 참가자에게는 Public Score만 공개된다. Public Score를 기준으로 자신의 머신러닝 파이프라인의 성능을 확인할 수 있다. 경진대회가 끝나는 날에는 Private Score가 공개되며, 경진대회 최종 순위는 Private Score를 기준으로 정해진다.

6.2.4. Summary

제공된 전체 훈련 데이터 중, 2016년도 데이터만을 학습에 사용하였고, 파생 변수로는 2개의 날짜 데이터의 연도와 월을 추출하고, 24개의 제품 변수에 대한 lag-1 변수만을 사용했다(1차 Baeline Model).

XGBoost 모델 학습 과정에서 경진대회의 평가 척도인 MAP@7를 직접적으로 사용할 수 없었다. XGBoost는 mlogloss를 통해 학습하였지만, 모델 파라미터를 선정하는데 있어서는 자체 구현한 mapk()를 통하여 검증 데이터에서의 MAP@7를 사용하였다.

제출한 결과 상위 50% 수준의 점수(1000/1700)를 얻었다. lag-5 변수까지 사용하고, 창의적인 피처 엔지니어링을 더한다면, 상위 10% 수준의 점수를 얻는 것도 가능하다(Baseline 모델 전체 코드는 4CPU, 16GB 메모리의 MacBook Pro에서 실행하는데 30분 가량 소요된다).