2014년 8월 16일 토요일

수도권 지하철 역별 시간대별 혼잡도 Visualization (2)

수도권 지하철 역별 시간대별 혼잡도 Visualization (1) 에 이어 데이터로 혼잡도 패턴에 따른 클러스터링을 해보기로 했다.
역별, 시간대별로 유사한 패턴이 일어나는 곳은 주거지역, 업무지역, 유흥가, 대학가 등등으로 분류가 될 것으로 예상했다.
우선 kmeans clustering시 클러스터간 거리의 합이 유의하게 줄어드는 지점을 찾기 위해 아래와 클러스터 개수별 거리의 합을 그래프로 그렸다.

# Data Import
d <- read.csv("subway_congestion.csv", header=FALSE, encoding="utf-8")
head(d)

# 3행을 header로 사용, 소문자로 변환
colnames(d) <- apply(d[2, ], 1, print)
colnames(d) <- tolower(colnames(d))

# 1,2행을 날리고 column명을 재지정하자
d <- d[c(-1,-2), ]

# 평일 데이터만 추리기
d <- d[d$day_of_wk == "평일", ]
head(d)

# 기준년도도 2013으로 동일하니 날리자.
d$year <- NULL

# 상/하행, 내/외선 이름 합치기
d$stn_nm <- paste(d$stn_nm, d$train_cs, sep=".")
d$train_cs <- NULL

head(d)

d3 <- d
# data frame의 column을 숫자 형태로 바꾸고, 데이터를 정규화
d3[, 1:20] <- sapply(d3, as.numeric)
d3 <- scale(d3) 
wss <- 0

# 그래프에서 거리의 제곱합이 최소가 되는 지점 (클러스터의 개수) 을 찾아야 한다. 
for(i in 1:15) wss[i] <- sum(kmeans(d3, centers=i)$withinss)
plot(1:15, wss, type="b", xlab="Number of Clusters", ylab="Within group sum of squares")

약 4~5개 정도부터 유의하게 줄어드는 것으로 보고, 클러스터링 수행. 

#### Clustering
d3 <- d
d3$day_of_wk <- NULL
d3$line_no <- NULL
d3$stn_nm <- NULL

# k=5로 kmeans clustering 수행
kc <- kmeans(d3, 5)
d3 <- cbind(d3, kc$cluster)
d3 <- cbind(d3, d$stn_nm)
head(d3)
colnames(d3) <- c("cluster", "stn_nm")
d3[d3$cluster==1, 2]  # 클러스터 1
d3[d3$cluster==2, 2]  # 클러스터 2

아래는 각 클러스터별 해당 역 리스트.
내선, 외선의 구분도 필요하고 하지만, 모여있는 역들을 보면 왠지 클러스터4가 주요 업무 지역인 것으로 예측된다.
강남, 종로, 삼성, 을지로3가, ...

클러스터별 무슨 의미인지는 클러스터 개수도 변화를 주고, 시간대별로 잘라보기도 하고 등등을 더 해야할 것 같지만 귀찮으니 패스.

> d3[d3$cluster==1, 2]
 [1] 동대문.하선             동묘앞.하선             신설동.하선          
 [4] 제기동.하선             청량리(지하).하선       교대.외선            
 [7] 낙성대.외선             당산.내선               도림천.외선          
[10] 문래.내선               방배.외선               봉천.외선            
[13] 사당.외선               서울대입구.외선         서초.외선            
[16] 신도림.내선             신림.외선               신정네거리.외선      
[19] 신천.내선               신촌.내선               아현.내선            
[22] 양천구청.외선           영등포구청.내선         이대입구.내선        
[25] 잠실.내선               종합운동장.내선         충정로.내선          
[28] 합정.내선               홍대입구.내선           경복궁.하선          
[31] 녹번.하선               독립문.하선             무악재.하선          
[34] 불광.하선               안국.하선               종로3가.하선        
[37] 홍제.하선               길음.하선               동대문.하선          
[40] 동대문역사문화공원.하선 미아.하선               미아사거리.하선      
[43] 성신여대.하선           수유.하선               한성대입구.하선      
[46] 혜화.하선  

> d3[d3$cluster==2, 2]
 [1] 서울역.상선             서울역.하선             시청.상선            
 [4] 시청.하선               종각.상선               청량리(지하).상선    
 [7] 강변.내선               강변.외선               건대입구.내선        
[10] 건대입구.외선           구의.내선               구의.외선            
[13] 동대문역사문화공원.내선 뚝섬.내선               뚝섬.외선            
[16] 상왕십리.내선           상왕십리.외선           성내.내선            
[19] 성내.외선               성수.내선               성수.외선            
[22] 시청.내선               신당.내선               신당.외선            
[25] 신정네거리.내선         왕십리.내선             왕십리.외선          
[28] 을지3가.외선            을지입구.내선           을지입구.외선        
[31] 잠실.외선               한양대.내선             한양대.외선          
[34] 남부터미널.하선         녹번.상선               도곡.상선            
[37] 매봉.상선               매봉.하선               불광.상선            
[40] 양재.상선               양재.하선               연신내.하선          
[43] 지축.상선               지축.하선               동작.상선            
[46] 동작.하선               명동.하선               미아.상선            
[49] 사당.상선               사당.하선               삼각지.상선          
[52] 삼각지.하선             서울역.상선             서울역.하선          
[55] 수유.상선               숙대입구.상선           숙대입구.하선        
[58] 신용산.상선             신용산.하선             쌍문.하선            
[61] 이촌.상선               이촌.하선               총신대입구.상선      
[64] 총신대입구.하선         충무로.하선             회현.상선            
[67] 회현.하선      

> d3[d3$cluster==3, 2]
 [1] 동대문.상선             동묘앞.상선             신설동.상선          
 [4] 제기동.상선             종로3가.상선            종로5가.상선        
 [7] 강남.내선               교대.내선               낙성대.내선          
[10] 당산.외선               도림천.내선             방배.내선            
[13] 봉천.내선               사당.내선               삼성.외선            
[16] 서울대입구.내선         서초.내선               선릉.외선            
[19] 시청.외선               신도림(지선).내선       신천.외선            
[22] 신촌.외선               아현.외선               양천구청.내선        
[25] 이대입구.외선           종합운동장.외선         충정로.외선          
[28] 합정.외선               홍대입구.외선           경복궁.상선          
[31] 금호.상선               독립문.상선             동대입구.상선        
[34] 무악재.상선             신사.상선               안국.상선            
[37] 압구정.상선             약수.상선               옥수.상선            
[40] 을지3가.상선            종로3가.상선            충무로.상선          
[43] 홍제.상선               길음.상선               남태령.하선          
[46] 동대문.상선             동대문역사문화공원.상선 명동.상선            
[49] 미아사거리.상선         성신여대.상선           충무로.상선          
[52] 한성대입구.상선         혜화.상선  

> d3[d3$cluster==4, 2]
 [1] 종각.하선           종로3가.하선        종로5가.하선        강남.외선        
 [5] 구로디지털단지.내선 구로디지털단지.외선 대림.내선           대림.외선        
 [9] 문래.외선           삼성.내선           선릉.내선           신대방.내선      
[13] 신대방.외선         신도림.외선         신림.내선           역삼.내선        
[17] 역삼.외선           영등포구청.외선     고속터미널.상선     고속터미널.하선  
[21] 교대.상선           교대.하선           금호.하선           남부터미널.상선  
[25] 동대입구.하선       신사.하선           압구정.하선         약수.하선        
[29] 옥수.하선           을지3가.하선        잠원.상선           잠원.하선        
[33] 충무로.하선         남태령.상선

> d3[d3$cluster==5, 2]
 [1] 까치산.내선             까치산.외선             동대문역사문화공원.외선
 [4] 성수(지선).내선         성수(지선).외선         신답.내선            
 [7] 신답.외선               신도림(지선).외선       신설동.내선          
[10] 신설동.외선             용답.내선               용답.외선            
[13] 용두.내선               용두.외선               을지3가.내선        
[16] 을지4가.내선            을지4가.외선            가락시장.상선        
[19] 가락시장.하선           경찰병원.상선           경찰병원.하선        
[22] 구파발.상선             구파발.하선             대청.상선            
[25] 대청.하선               대치.상선               대치.하선            
[28] 도곡.하선               수서.상선               수서.하선            
[31] 연신내.상선             오금.상선               오금.하선            
[34] 일원.상선               일원.하선               학여울.상선          
[37] 학여울.하선             노원.상선               노원.하선            
[40] 당고개.상선             당고개.하선             상계.상선            
[43] 상계.하선               쌍문.상선               창동.상선            
[46] 창동.하선      

댓글 없음:

댓글 쓰기