유사도 기반 군집화 및 추천 알고리즘으로 살펴본 Chopin Competition 2015

유사도 기반 군집화 및 추천 알고리즘으로 살펴본 Chopin Competition 2015

2015, Nov 06    

(이미지 출처: Chopin Competition 2015)

##유사도 기반 군집화 및 추천 알고리즘으로 살펴본 Chopin Competition 2015</h2>

##들어가며

얼마전 페이스북과 인터넷 커뮤니티에서 피아니스트 조성진 군의 쇼팽 콩쿠르 우승이 큰 화제가 되었습니다. 최고 권위의 피아노 대회에서 압도적인 실력으로 우승을 거머쥔 것도 이슈였지만, 특히 심사위원 중 한명이었던 필립 앙트르몽 (Philippe Entremont)과의 불편한(?) 관계도 주목을 받았습니다. 1차 본선에서 조성진에게 좋은 점수를 줬던 앙트르몽은 2차때부터 조성진에게 낮은 점수를 주었고, 특히 마지막 최종 스테이지에서는 호평 일색이었던 다른 심사위원들과 다르게 최저점인 1점을 부여했습니다. 이에 대해서 국내 언론뿐만 아니라 해외언론이나 포럼에서는 조성진의 스승과 경쟁관계에 있는 앙트르몽이 일부러 낮은 점수를 준 것이 아닌가 하고 의혹을 제기했습니다. 페이스북에서 봤던 칼럼은 한발 더 나아가 앙트르몽의 심사를 어린 천재의 탄생을 시기 혹은 질투로 추정하기도 했네요. 정말 필립 앙트르몽은 조성진에게만 편향된 심사를 했을까요? 아니면 다른 심사위원들에 비해 전반적으로 더 높은 기준으로 연주자들을 평가했던 걸까요?

이번 대회와 관련하여 또 한가지 이슈는 2000년에 열린 쇼팽 콩쿠르의 우승자인 Yundi였습니다. 이번 콩쿠르의 심사위원으로 위촉된 Yundi는 지인의 결혼식으로 인해 콩쿠르를 5일간 비우며 본선 1차와 2차 예선을 절반정도 불참했습니다. 다행히 본선 3차와 결선에서는 정상적인 심사를 했습니다. Yundi의 3차와 결선 평점을 기반으로 그와 유사한 성향을 가진 심사위원들을 찾을 수 있다면, 그들의 평점으로 Yundi가 놓친 연주들에 대한 그의 평점을 예측해볼 수 있지 않을까요? 최근 패스트캠퍼스 머신러닝을 이용한 추천엔진제작 CAMP를 통해 배운 유사도 분석과 추천 알고리즘을 응용하여 간단한 분석과 예측을 돌려봤습니다.

쇼팽콩쿠르 2015 조성진 군 연주장면 / 출처: telegraph.co.uk

##데이터 소스와 분석 환경 분석에 활용한 심사위원 점수 원본데이터는 쇼팽 콩쿠르 홈페이지에서 pdf 형태로 열람할 수 있었습니다. 이를 수작업으로 스프레드 시트에 옮겨 csv로 변환하였습니다. 데이터 분석은 ipython notebook 환경에서 수행하였으며, 이를 위해 python library 중 numpy, pandas, scipy(유사도 계산 및 덴드로그램 구현), seaborn(시각화) 라이브러리를 사용하였습니다. seaborn 라이브러리는 이번 분석을 통해 처음으로 사용해봤는데, 그전에 사용하던 matplotlib보다 훨씬 예쁘고 쉽게 차트를 그려줘서, 앞으로도 계속 애용할 듯 합니다. 유사도 및 추천 알고리즘 구현과 관련된 내용은 뒤에서 간단히 다루겠습니다.

##쇼팽 콩쿠르에 대한 몇가지 기초 통계 정리 2015년 10월 3일부터 21일까지 열린 이번 콩쿠르에서 총 78명의 참가자가 본선 1라운드를 시작했습니다. 매 라운드마다 심사위원 평가를 통해 다음 라운드 진출자가 결정되는 방식으로 진행되었는데요, 각 라운드의 연주자 수와 통과율은 다음과 같습니다.

  • 78명의 본선 1차 연주자 중 55.1%가 본선 2차에 진출함
  • 43명의 본선 2차 연주자 중 46.5%가 본선 3차에 진출함
  • 20명의 본선 3차 연주자 중 50.0%가 최종 라운드에 진출함

다른 콩쿠르도 비슷하겠지만, 이번 대회는 대략 매 라운드 당 절반 정도의 참가자가 탈락하는 매우 빡센 콩쿠르로 보입니다. 어렸을 때부터 인생을 걸고 갈고 닦은 피아노 실력을 2주동안 압축해서 증명해야 하는 자리에서, 참가자들의 평균 평점은 어떤 패턴을 그렸을까요. 각 라운드별 심사위원들의 평균 평점 분포를 통해 살펴보았습니다.

각 라운드별 심사위원들의 평균 평점 분포

본선 1차에서 3차까지는 25점 만점을, 최종 라운드에서는 10점 만점으로 점수가 매겨지기에, 이를 최저 0점에서 최고 1점으로 표준화시킨 후, 박스플롯으로 분포를 그려봤습니다. 그 결과 본선 1라운드부터 3라운드까지는 대략 0.6에서 0.95 사이로 높은 분포를 유지하나, 최종 라운드에서는 중간값이 0.45점 부근으로 추락하며 박스가 아래로 죽 늘어집니다. 심사위원들이 최종라운드에서는 점수를 박하게 주었을 가능성도 있으나, 한편으로는 최종라운드의 중압감이 일부 연주자들의 컨디션에 영향을 미쳤을 수도 있다고 해석할 수 있겠습니다. 각 라운드별 중앙값과 표준편차는 다음과 같습니다.

  • 본선 1차 - 중앙값: 0.74 / 표준편차: 0.071
  • 본선 2차 - 중앙값: 0.74 / 표준편차: 0.069
  • 본선 3차 - 중앙값: 0.79 / 표준편차: 0.074
  • 결선 - 중앙값: 0.45 / 표준편차: 0.205

본선 라운드동안 0.07점 부근에 있던 표준편차는 최종라운드에서 0.2까지 치솟습니다. 과연 어떤 참가자들이 끝까지 평정을 유지했을까요? seaborn의 factorplot으로 결선 진출자들의 평균 점수 이동추이를 그려봤습니다.

각 라운드별 결선진출자들의 평균 평점 분포

본선 1차에서 3차까지는 0.7점 이상을 기록하던 참가자들이 최종라운드에서 3그룹으로 나뉩니다. 먼저 우승을 차지한 조성진님(빨강), 2위인 Charles Richard-Hamelin(파랑), 3위인 Kate Liu(녹색)가 선두 그룹으로 분류됩니다. 이분들은 최종라운드까지 평균 점수 0.7점 이상을 유지하면서 콩쿠르에 입선했습니다. 다음 그룹은 4위인 Eric Lu입니다. 본선 1차에서 3위로 출발한 Eric은 3차에서도 3위를 기록했으나 마지막 라운드에서 0.7점에 미치지 못하면서 입선하지 못했습니다. 마지막 그룹은 결전에서 멘탈이 무너진 참가자 그룹입니다. 특히 분홍색 선인 Yike (Tony) Yang은 3차까지 줄곧 4~5위로 선두그룹을 바짝 쫓아갔으나, 결선 라운드에서 뒷심이 부족했습니다. 반면 3위로 입상한 Kate Liu는 파이널리스트 중 본선 1차 성적이 가장 좋지 않았으나, 계속 평점이 올라 3차에서는 2위를, 결선에서는 3위에 올랐습니다. 즉, 예선 1차에서 탑3에 오르지 못했다하더라도 향후 실력을 안정적으로 증명하면 충분히 입선이 가능한 것으로 보입니다. 본선 1차에서 1위로 산뜻하게 콩쿠르를 시작한 조성진님은 2차, 3차에서는 Richard-Hamelin에 살짝 밀렸으나, 결선 라운드에서 앞서며 우승을 따냈습니다.

반대로 78명 중 본선 1라운드의 탑 10안에 들었던 연주자들은 어떻게 되었을까요?

각 라운드별 본선 1차 탑10 연주자들의 평균 평점 분포

본선 1차에서 0.82점 이상을 받으며 좋은 출발을 알린 연주자들의 라운드별 분포 차트입니다. 10명 중 6명은 최종라운드까지 살아남았지만, 3명은 본선 2차에서, 나머지 1명은 본선 3차에 그쳤습니다.

##선생별 기록 이번 쇼팽 콩쿠르에는 17명의 심사위원이 위촉되었습니다. 본선 진출자들 중에는 이들 심사위원들과 사제관계인 연주자들이 있었는데요, 쇼팽 콩쿠르에서는 심사의 공정성을 위해 스승이 제자에게 평점을 부여하지 못하게 되어있습니다. 실제로 스코어시트를 보면 점수 대신 ’s’가 기입되어 있습니다(‘a’는 absent). 국가별 기록에 이어, 이번에는 어떤 스승의 가르침을 받은 학생들이 본선에서 두각을 보였는지 살펴보겠습니다. 본선 참가자 중 19명이 심사위원과의 사제관계로 인해 점수 대신 ’s’를 받았는데요, 과연 결선까지 도달한 제자들을 길러낸 스승들은 누굴까요?

본선 심사위원들 / 출처: 쇼팽콩쿠르 2015

각 라운드별 제자들의 수

라운드별 제자수로 살펴본 결과, 6명을 배출한 KP(Katarzyna Popowa-Zydroń)와 4명을 배출한 TD(Thai Son Dang)가 눈에 띕니다. 특히 TD는 4명 중 3명을 결선에 진출시키는 기염을 토했습니다. 이번 콩쿠르를 통해 TD 선생님의 초빙료가 꽤 오르지 않았을까 조심스럽게 추측해봅니다.


##앙트르몽의 심사 이번에는 본론으로 돌아와서, 필립 앙트르몽의 심사 데이터를 살펴보겠습니다. 앙트르몽이 결선에서 준 1점은 정말 심사 외적인 부분에 의한 것이었을까요? 먼저 결선 연주자들에 대한 앙트르몽의 점수 추이를 살펴봅시다.

결선 연주자들에 대한 앙트르몽의 심사

본선 3차까지 앙트레몽은 0.5점 이하, 즉 절반 이하의 점수를 주지 않았습니다. 하지만 결선에서는 거의 1점당 1명씩을 배분하는 심사를 했습니다. 빨간색의 조성진군은 본선 1차에서 앙트르몽으로부터 23점(즉, 표준점수 0.92)를 받았으나, 2차때부터 14점을, 3차에서는 18점을 받고 결선에서는 최하점인 1점을 받았습니다. 또한 본선에서는 심사위원들이 연주자의 다음 라운드 진출에 대해 yes or no로 답했는데, 필립 앙트르몽만 no 의견을 제시했습니다.

과연 이러한 앙트르몽의 심사는 다른 심사위원들과는 확연히 다른 행보였을까요? 이를 확인하기 위해 유사도 기반 계층적 군집화를 사용해보았습니다.

##유사도, 그리고 계층적 군집화 유사도(similarity or distance)는 말 그대로 두 개 이상의 변수간 유사성을 지표화한 것입니다. similarity는 1에 가까울수록 유사하고, distance는 0에 가까울수록 유사한 개념입니다. 상황에 따라 선택해서 쓰면 되는데, 여기서는 distance를 사용해 유사도를 분석했습니다. 0에 가까울수록 유사하다고 정의하겠습니다.

그럼 유사도는 무엇을 기준으로 계산할 수 있을까요? 이번에 수강한 머신러닝을 이용한 추천엔진제작 CAMP에서는 Euclidean Distance, Cosine Distance, Jaccard Distance, Correlation Distance를 다양한 예제에 적용시켜 보았는데요, 쇼팽 콩쿠르 분석에서는 Euclidean Distance를 사용해보았습니다.

각 유사도의 정확한 성질과 활용방향에 있어 수학적으로 완전히 이해하지는 못했으나, 간단히 이해하고 있는 개념은 다음과 같습니다. n차원 공간에 2개의 벡터 A, B가 있을 때… 이들 사이의 거리를 직선으로 그은 것이 Eucliean Distance, 이 점들이 원점과 만들어내는 각도의 크기를 Cosince Distance 라고 합니다. 이번 쇼팽 콩쿠르 분석에서는 모든 심사점수를 0에서 1까지의 값으로 정규화했기 때문에, 각도보다는 표준화된 공간상에서의 벡터간 거리가 더 유용할 것으로 보고 Euclidean Distance를 유사도 판별 기준으로 삼았습니다.

보다 더 자세한 유사도에 대한 정의는 Wikipedia에서 확인해보세요 ㅠ

계층적 군집화는 예전 블로그 포스팅에서 자주 소개한 (제가 제일 좋아하는.. 왠지 모르게 k-means는 그닥..) 클러스터링 방법입니다. n개의 벡터가 있을 때 각 벡터간의 거리가 가장 가까운 것들끼리 묶어가면서 최종적으로 그룹이 1이 될까지, 즉 모든 벡터가 묶일때까지 연산을 반복합니다. 이번에는 그 거리의 개념을 앞서 채택한 Euclidean Distance로 설정하여 군집화를 수행해보았습니다.

##계층적 군집화 - 앙트르몽은 어디에 속할까 각 스테이지별 연주자들에 대한 정규화된 평점(컬럼)을 기반으로 심사위원들(레코드)를 군집화해보았습니다. 여기서 로데이터에 한가지 변형을 가했습니다. 연주자가 심사위원과 학연관계에 있거나, 심사위원이 평가에 불참한 경우, 점수가 아닌 ‘s’나 ‘a’가 기록됩니다. 이러한 string값들이 NaN값으로 변환되는데, NaN값과의 거리는 계산할 수 없기에 에러가 납니다. 이를 보정하기 위해 심사위원의 결측값에는 그 연주자에 대한 전체 심사위원의 평균값을 대입하였습니다.

먼저 심사위원들의 평균 유사도 분포를 통해 심사위원들의 채점이 스테이지별로 얼마나 서로 비슷하고 달랐는지 확인해봅시다.

본선 1차 ~ 결선까지 심사위윈들의 평균 유사도

먼저 선들이 중첩된 굵은 묶음 하나와 그 위에 카키색 선이 하나 눈에 띕니다. 그렇습니다. 떨어져 있는 하나의 선은 앙트르몽의 선입니다. 대체로 stage1에서 stage3에 갈수록 심사위원간 거리가 줄어듭니다. 대부분이 동의하는 우수한 연주자들이 본선에서 계속 살아남기에 심사위원들의 판정이 수렴하는 것으로 추정됩니다. 그러나 다시 결선 라운드에서는 유사도가 급증합니다. 결국 누가 우승하고 이름을 남기느냐에 있어서 다시 심사위원들의 선택이 갈리는 모양입니다.

자 이제 앙트르몽의 심사를 더 자세히 파악하기 위해 본선 1차부터 결선까지 계층적 군집화 결과를 살펴봅시다.

본선 1차 ~ 결선까지 심사위윈 계층적 군집화 결과

본선 1차부터 결선까지 전체 데이터를 돌린 덴드로그램입니다. 가장 가까이 묶인 심사위원들끼리 가장 유사하며, 디스턴스가 올라가면 올라갈수록 이질성이 심화됩니다. 파이썬 scipy가 자동으로 비슷한 심사위원들끼리 색깔로 구분해줬네요. 맨 왼측에 홀로 파란색으로 분류된 PE가 눈에 띕니다. 그렇습니다. 필립 앙트레몽입니다. 디스턴스가 2.0을 넘어서야 겨우 다른 모든 사람들과 하나로 묶입니다. 혹시 다른 심사위원들과 달리 조성진에게 혹평을 했기 때문에 이러한 결과가 나왔을까요? 이번에는 각 스테이지별로 분류해봅시다.

본선 1차 심사위윈 계층적 군집화 결과

본선 2차 심사위윈 계층적 군집화 결과

본선 3차 심사위윈 계층적 군집화 결과

결선 심사위윈 계층적 군집화 결과

필립 앙트르몽은 모든 스테이지에서 꾸준히 맨 왼쪽에 자리하며 가장 나중에 하나의 군집에 합쳐지고 있습니다. 하지만 맨 처음 전체 데이터를 돌렸을 때와 다른 점은, 본선 1차부터 3차까지는 (여전히 혼자 디스턴스가 가장 높지만) 다른 심사위원들과 한 그룹으로 묶인다는 점입니다. 그런데 마지막 결선 군집화를 살펴보면 다른 심사위원들은 골고루 뭉쳐지는데 반해 앙트르몽은 혼자 남았습니다. 아마도 결선 라운드에서 점수를 고루 나눠서 준 점, 다른 심사위원들이 호평한 조성진에 1점을 준 점이 영향을 미친 듯 합니다.

정말 조성진의 점수때문에 앙트르몽이 혼자 분류된걸까요? 그러면 마지막 결선라운드의 데이터에서 조성진 점수를 제외하고 군집화를 다시 돌려봅시다.

결선 심사위윈 계층적 군집화 결과 (조성진 제외)

앙트르몽 선생님 어디가셨나요? 맨 왼쪽에 계속 등장하던 앙트르몽이 중앙 부근에서 DA(디미트리 알렉시브)와 가장 가깝게 묶였습니다. 계층적 군집화 결과 하나만으로 앙트르몽은 조성진에게만 유독 혹평했다를 확정짓기에는 무리가 따를지도 모르겠습니다. 하지만 논란이 되었던 조성진에 대한 평점을 제거했을 때 다른 심사위원들과 앙트르몽간의 유사도가 대폭 줄어들었다는 점에서, 앙트르몽의 조성진에 대한 심사는 눈에 띌 만큼 독특했다라고 판단할 수 있을 듯 합니다.

마지막으로 seaborn 라이브러리에서 제공하는 Heatmap 기능을 유사도 매트릭스에 적용하여 뿌려봅니다. (seaborn은 진리입니다..)

본선 1차 ~ 결선 심사위원 간 유사도 매트릭스

붉을수록 거리가 멀어집니다. 앙트레몽(PE) 레코드와 컬럼이 붉은 십자가를 그리고 있네요.


##유사도를 이용한 Yundi를 위한 평점 예측 앞서 소개했던 것처럼 2000년도 쇼팽 콩쿠르 우승자이자 이번 콩쿠르 심사위원에 위촉된 Yundi는 지인의 결혼식을 이유로 대회를 중도에 이탈했습니다. 그로 인해 절반 가량의 본선 1차와 2차 연주에 대한 평가를 하지 못했습니다. 다행히 본선 3차와 결선 라운드에는 모두 참여를 했는데요, 마지막 두 라운드에서 Yundi와 비슷한 심사를 한 심사위원을 선별하고, 유사도 거리가 짧으면 짧을수록 가중치를 매겨서, 놓쳤던 본선 1차와 2차 라운드에 Yundi의 평점을 예측해보면 어떨까요? 그리고 그 추천 알고리즘의 대한 성능평가는 결혼식 출발전 남겼던 Yundi의 본선 1/2차 평점과의 RMSE로 해볼 수 있지 않을까요? 뭔가 우연찮게 완벽한(레코드 값이 적다는 것만 빼고) 데이터를 얻게 되어 설렙니다…

추천 알고리즘을 구현한 방법은 아래와 같습니다.

  1. 트레이닝 데이터셋 준비: 본선 3차와 결선 라운드의 NaN값을 컬럼 평균으로 보충하고, 이들을 0~1 사이로 정규화합니다. 그리고 트레이닝 데이터셋은 본선 3차, 결선, 본선3차와 결선 이렇게 3벌을 준비합니다.
  2. Yundi(Y)와의 유사도 계산 및 탑n 도출: Euclidean 유사도를 사용하며, Y와의 유사도 거리가 가장 작은 Top N과 그들의 거리를 테이블로 저장해둡니다.
  3. 유사도 기준 가중치 계산: 가장 가까울수록 평점 예측을 위한 무게를 더 실어야 겠지요? 이를 위해서 1) 가중치에 역수를 취한 후 퍼센트를 구하는 방법, 2) 가중치의 제곱에 역수를 취한 후 퍼센트를 구하는 방법으로 2가지를 준비합니다. 2안은 1안보다 유사도가 가까운 심사위원에게 힘을 실어줍니다.
  4. 테스트 데이터셋 준비: 본선 1차와 2차를 정규화한 후, Yundi컬럼을 제외하고 NaN값을 보정해줍니다.
  5. 트레이닝 데이터셋(3벌) * 가중치(2벌) * 심사위원 Top N(16벌)로 돌려서 본선 1차와 2차 Yundi의 컬럼 옆에 Y_predicted 컬럼으로 집어넣습니다. 또한 RMSE 비교를 위해 가중치를 반영하지 않은, Yundi 제외 전체 심사위원의 평균 평점값을 Y_mean으로 집어넣습니다. 그리고 이들과 실제 관측값간의 RMSE를 구합니다.
  6. Y_predicted의 RMSE값이 Y_mean의 RMSE보다 낮으며 RMSE가 가장 작은 값을 모델로 선정합니다.

자, 결과를 봅시다.

생각보다 높은 예측값의 RMSE..(일부 출력 결과)

가중치를 부여할 심사위원의 수를 가장 유사한 사람부터 한명씩 늘려가면서 가중치를 넣고 예측을 한 후, 전체 평균의 RMSE와 비교해 쓸지 말지를 판정합니다. 끝없이 Nope. Do it again.이 출력됩니다…

초기에는 가장 유사도 거리가 짧은 3명, 5명을 대상으로 예측을 했는데, 모두 단순 평균보다 RMSE가 높았습니다. 그래서 1명부터 16명까지 모두를 넣은 iteration을 돌려 RMSE가 낮은 조합을 찾았습니다. 그 결과..

본선 1차 / 가중치 1 (단순 역수) 전체 단순 평균 값(벤치마크 대상,연분홍 라인)보다 낮은 값이 본선 3차를 트레이닝 셋으로 사용하고 단순 역수를 취한 조합에서 나왔습니다! 어떤 조합인지 볼까요~

본선 3차 / 가중치 1 / 심사위원 15명 조합

나왔습니다! PREDICTION SUCCESSFUL! 심사위원 명단 중에… 역시 PE 선생님이 보이지 않으시네요. PE선생님을 제외한 15분을 유사도를 기반으로 가중치를 부여한 후 평균을 내면, 전체 단순 평균보다 RMSE값을 줄일 수 있는, 즉 더 실제값이 가까운 예측을 할 수 있습니다. 이 예측값을 사용해서 본선 1차에서 Yundi가 가장 높은 점수를 주었을 연주자를 꼽아보면.. (위의 그림)

  1. Mr Seong-Jin Cho / 표준화점수: 0.902400 / 22.56점
  2. Mr Charles Richard-Hamelin / 표준화점수: 0.870400 / 21.76점
  3. Mr Eric Lu / 표준화점수: 0.861787 / 21.54점

이 되겠네요!

평균보다 더 정확한 예측에 성공했으나, 더 유사한 심사위원에 가중치를 더 부여하는 역수제곱 결과를 봅시다.

본선 1차 / 가중치 2 (역수 제곱)

역수 제곱으로 산출해본 결과, 몇몇 iteration에서 단순 평균을 하회했으나, 아쉽게도 단순 역수로 뽑은 RMSE 수준에는 이르지 못했네요.

그럼 같은 방식으로 본선 2차를 예측해봅시다.

본선 2차 / 가중치 1 (단순 역수) 본선 2차 / 가중치 2 (역수 제곱)

아.. 나름 성공적이었던 본선 1차 예측과는 달리, 어떤 방식으로도 단순 평균보다 더 좋은 성능을 기록하지는 못했습니다. 이 경우 그냥 단순평균으로 Yundi의 평점을 예측하는 것이 합리적입니다. 물론 단순 역수와 역수 제곱이 아닌 다른 방식으로 가중치를 매긴다면 무언가 더 나은 방법이 있을수도 있겠지요.


##마치며 이로서 유사도를 활용한 간단한 분석과 평점 예측이 마무리되었습니다. 최근 듣던 수업이 추천엔진 제작에 관한 것이라 개인용 프로젝트를 위해 어떤 데이터를 구할 수 있을까 고민이 많았는데, 그러던 차에 쇼팽콩쿠르와 조성진님을 알게되어 참 행운이라 생각합니다.

이번 분석은 유사도라는 수학적 개념과 알고리즘 구현이라는 프로그래밍적 측면에서 많은 배움을 얻기도 했으나, 데이터에 대해서 새롭게 돌아보는 계기가 되기도 했습니다. 데이터를 깊게 보다보면 어느 순간에는 이것이 무엇을 의미하는지 잊을 때가 있는 것 같습니다. 쉽게 구할 수 없는 콩쿠르 데이터에 들뜬 어느 밤, 요걸 이렇게 돌려볼까 저렇게 돌려볼까 궁리하다, 문득 내가 보는 이 0.67이라는 숫자는 어느 꿈많은 젊은 피아니스트의 10여년 세월이 응축된 그런 숫자가 아닌가하는 생각이 들었습니다. 비록 1에는 닿지 못했지만 그 숫자를 만들기 위해 얼마나 많은 노력을 했을지를 백분지일이라도 상상해보니 마음이 무거워졌습니다. 조성진님과 함께 콩쿠르에 나간 우리나라 일곱명의 젊은이와 또 순위에 오르지 못했지만 무대위에서 열정을 불사른 모든 연주자분들에게 감사의 마음을 보내며 이만 블로그 글을 마칩니다.