데이터과학을 위한 수학 복습(1)

수학 지식 없이 데이터과학을 배울 수 있다는 주장은 거짓이다. 하지만 다행스런 점은 대다수의 데이터과학자들에게 높은 수준의 수학이 꼭 필요한 것은 아니라는 사실이다. 대부분의 실무자들에게는 모형이나 알고리즘을 이해하는 정도의 수학이 필요한 데 그것은 고등학교 수준의 수학을 잘 기억하고 있으면 대체로 충분하다.

뭐니뭐니 해도 데이터과학에 꼭 필요한 수학 지식은 선형대수(linear algebra)이다. 즉, 벡터(vector)와 행렬(matrix)이다. 그 중 아마도 벡터가 기본일 것이다.

많은 문과 전공자들에게 벡터는 넘사벽이다. 그게 일반적인 수(number)의 세계가 아니기 때문이다. 일반적인 수가 크기만을 나타내는데 비해 벡터는 ‘크기’와 ‘방향’을 가진 특별한 수이며, 순서와 의미를 지닌 숫자의 목록(list of numbers)이다. 다시 말해 벡터는 기하적 성격(geometric expression)을 갖고 있다. 그래서 벡터를 공부할 때 수적 표현의 기하적 의미(좌표상의 표시)를 새기면서 하면 크게 도움이 된다.

예컨대 학생들의 성적을 매기는데 국어와 영어 과목이 있다고 하자. 한 학생이 취득한 점수를 (국어 점수, 영어 점수)라는 벡터로 표현하기로 약속하자.  만약  학생 A의 성적이 국어=80, 영어=90이라면, 열벡터로 나타내면 이라고 표기될 것이다. 그것은 과는 전혀 다른 의미를 갖는다. 이를 좌표상에 표시하면 아래 <그림 1>과 같다.

<그림 1> 좌표 평면(혹은 공간) 사례

선형대수에서는 거의 항상 벡터의 시작점은 원점(영점)이다(<그림 2>).

<그림 2> 원점(origin)이 영점인 벡터들

 

<그림 3>에서 좌표상의 점은, 점(point)으로 표현할 때는 (-2,3), 벡터로 표현하면 , x축에서 음으로 2만큼 가고 y축에서 양으로 3만큼 간 점이다(이하는 3Blue1Brown의 동영상 강의를 인용하였음). -2는 x성분, 3은 y성분이다.

<그림 3> 좌표상에서 벡터의 예

 

3차원 벡터라면 여기에 z축을 추가하면 된다.예컨대  는 x축에서 음으로 2, y축에서 양으로 3, z축에서 양으로 4만큼 간 벡터(점)이다.

벡터의 합()을 좌표의 이동으로 설명해 보자. 벡터 가 이고, 벡터 일 때 숫자상으로 이 두 벡터의 합()은  이다. 좌표상에서 벡터는 이동으로 볼 수 있다. 원점에서 만큼 이동하고(x축으로 1만큼 가서 y축으로 2만큼 간 점), 다음에 의 종점에서 만큼 이동(x축으로 3만큼 가서 y축으로 -1만큼 간다)해서 원점에서 새로운 벡터 (x축으로 4만큼 가서 y축으로 1만큼 간 점)이 생성된 것으로 볼 수 있다. 이는 원점을 영점에 고정시켜 놓아서 얻는 이점이다.

<그림 4> 벡터의 덧셈

 

이번에는 벡터에 수(scalar: 스칼라, 영어발음으로 스케일러)를 곱하는 셈(실수배임)을 좌표의 이동으로 설명해 보자. 아래 예들에서처럼 벡터에 수를 곱하면 벡터가 그 수의 곱만큼 늘어나거나 줄어든다(즉, scaling, 스케일링된다).

,  

<그림 5> 실수배의 사례

이와 같이 벡터, 벡터의 덧셈, 실수배 등을 좌표 평면(혹은 좌표 공간)에서의 이동으로 생각해보면 벡터의 계산이 훨씬 더 잘 이해될 것이다. 좌표를 상상하면서 아래 설명을 보자.

벡터의 상등: 두 벡터가 같다는 말로 각각의 성분이 동일하다는 의미. 그럴려면 벡터의 순서와 차원이 모두 같아야 한다.

벡터의 덧셈과 뺄셈:

 라고 할 때,

벡터 가 덧셈이 가능할 때 벡터의 덧셈에는 다음 성질들이 있다.

(1) 교환법칙: 

(2) 결합법칙: 

(3) 덧셈의 항등원 (영벡터)가 존재한다. 어떤 벡터에 를 더하면 자기 자신이 된다. 2차원 벡터의 항등원은 , 3차원 벡터의 항등원은 

(4) 의 덧셈에 대한 역원 가 존재: 

벡터 가 덧셈이 가능할 때 벡터의 실수배에는 다음과 같은 성질이 있다.

(1) 분배법칙: 

(2) 결합법칙: 

(3) 임의 실수와 영벡터의 곱은 영벡터: 

(4) 1은 벡터의 실수배의 항등원:

(5) -1과 주어진 벡터의 곱은 그 벡터의 역벡터(덧셈의 역원): 

Excel로 하는 미래 예측(4): 시계열 예측

지수평활화법(FORECAST.ETS)는 3차 평활화를 수행한다. 데이터 추동 예측에서 소개한 지수평활화가 1차 평활화라고 한다면 두 차례 더 평활화를 거치는 함수이다. ETS는 Exponential Triple Smoothing의 머리글자이다. 지수평활화(exponential smoothing)가 백색 소음을 잡아주는 평활화라고 한다면 2차 평활화는 추세(trend)를 반영하고, 3차 평활화는 계절성(seasonality)을 반영한다. 수식으로 표현하면 다음과 같다.

1차 지수 평활화는,

는 측정된 시계열 데이터이고, 는 예측된 시계열 데이터(시간 t에서 평활화된 값)이다. 전 시구간에서 예측된 값의 오류를 다음 시구간 값을 예측할 때 일정한 비율()로 반영해 주는 식이다.

2차 지수 평활화는 다음과 같이 표현될 수 있다.

 시점 t에서의 추세(trend)에 대한 최적의 추정치

는 기본 요인(base factor) 혹은 데이터 평활화 요인(data smoothing factor)으로 불리며  이다. 는 추세 평활화 요인(trend smoothing factor)라고 불리며  이다. 를 넘어서 예측하려면 다음 공식을 사용한다.

3차 지수평활화(multiplicative의 경우)는 아래와 같이 계산된다.

: 계절적 조정 요인의 시퀀스(the sequence of seasonal correction factors). 그것은 관찰이 진행 중인 사이클에서 어느 시점 t mod L에서 예측된 추세의 예상된 비율이다.

L: 계절적 변동 주기(cycle)의 길이

는 계절적 변동 평활화 요인(the seasonal change smoothing factor)이며,  를 넘어서 예측하려면 다음 공식을 사용한다.

지수평활법을 이론적으로 이해하기는 다소 어렵지만 엑셀로 실행하는 것은 쉽다. 아래 그림에서처럼 예측값을 넣으려는 셀에 =FORECAST.ETS를 치고, 예측시점(여기서는 A38), 표적변수 데이터(B2:B37), 관찰한 시점들(A2:A37)을 넣어주면 된다.

그 이후 여러 시점들에 대해 예측하려면 그 수식을 복사하면 된다.  값을 구하려면, 셀에 =FORECAST.ETS.STAT(B2:B37,A2:A37,1)을 넣으면 된다.  값은 =FORECAST.ETS.STAT(B2:B37,A2:A37,2)을,  값은 =FORECAST.ETS.STAT(B2:B37,A2:A37,3)을 넣으면 된다. 계절성 주기(L)를 알아내려면 =FORECAST.ETS.SEASONALITY(D2:D51,A2:A51)을 넣으면 된다. 이렇게 계산된 계절성 주기는 6이고, 알파 값은 0.126, 베타는 0.001, 감마도 0.001이다.

이상으로 표적변수의 시계열 데이터만으로 예측하는 시계열 예측(time series forecasting)의 다양한 모형과 함수를 이해하면서 엑셀로 구현해 보았다. 아마도 그 정도만 구현할 수 있으면 현업의 실무적 요구에 잘 대응할 수 있으리라 생각된다.

미래 예측이 어렵다면 그것은 도구의 문제가 아니라 상상력, 혹은 이론과 학습의 부족에서 먼저 그 원인을 찾아야 하지 않을까. 다행한 점은 고등학교 정도의 수학만 잘 구사할 수 있으면 대부분의 문헌과 강의를 이해할 수 있다는 것이다.

엑셀이 시계열 예측만 도와주는 것이 아니다. 선형회귀와 같은 지도학습모형에 의한 예측도 수행하게 해준다. 추가기능(add-ins)을 이용하면 유용한 미래 예측을 해낼 수 있다. 다음에는 그 가능성을 살펴보겠다.

Excel로 하는 미래 예측(3): 시계열 예측

지난 포스팅에서 시계열 예측 중 데이터 추동 예측을 소개했다. 이번에는 모형 추동 예측을 살펴보자. 표적 변수의 과거 데이터에 의존해서 미래를 예측한다는 점은 데이터 추동 예측의 경우와 동일하지만 모형 추동 예측은 단지 개별적 데이터들의 집합에만 의존하는 것이 아니라 데이터들로 만들어지는 변동의 형태를 미래 예측에 반영하는 방법이다. 예컨대 변동이 선형(linear)이라는 점을 고려할 수도 있고 아니면 변동의 주기성–계절적 부침이라고 한다–이나 상향적 경향–추세라고 한다–을 고려할 수도 있다.

아래 그림들을 보면, (a)의 경우는 주기성이 분명해 보이고 (b)의 경우는 주기성이나 트렌드가 보이지 않는다. (A)의 경우는 주기성을 반영해서 미래를 예측한다면 오류를 줄일 수 있을 것이다.

모형 추동 예측에서 가장 널리 쓰이는 것은 선형회귀 모형이다. 시계열 예측의 선형회귀 모형은 크게 두 가지를 생각할 수 있다. 하나는 시간(시구간)을 예측변수로 갖는 모형–단순회귀모형, 다른 하나는 표적변수의 과거값을 독립변수로 갖는 모형–자기회귀모형이다.

데이터에 계절성(seasonality)이 있으면 단순회귀모형의 적합 결과가 좋지 않다(위 그림 참조).  단순회귀모형의 그런 단점을 개선하는 데는 두 가지 방법이 있다. 하나는 다항회귀(polynomial regression)를 사용하는 방법이다. 시구간의 2차항이나 3차항을 추가하거나 사인, 코사인 함수를 포함한 항을 추가하여 다항회귀모형을 만든다.

다른 하나는 계열 데이터의 각 시구간에 더미변수를 도입하는 방법이다. 만약 12개의 시구간이 있다면 11개의 더미변수를 도입하면 된다(12월은 기준 범주가 되어 더미변수가 생략된다). 시간 변수를 포함해서 모두 12개의 독립변수를 지닌 회귀모형이 되며 각 더미변수는 계절성을 포착한다. (아래 그림 2개 참조)

자기회귀모형(Autoregressive model, AR 모형)은 지연 계열(lag series)에 적용되는 회귀모형이다. 측정된 데이터가 1년씩 미룬 지연(lag) 데이터 혹은 2년 지연 계열, 3년 지연 계열 등과 상당한 정도의 상관관계를 가지는 경우 자기상관관계(autocorrelation)이라고 부르며 예측과정에 활용할 수 있다. 자기상관이 존재할 때 자기회귀모형을 적용하는 것이 하나의 해법이 된다. 자기회귀 모형의 일반식은 다음과 같이 표시될 수 있다.

1차 지연계열 데이터만을 가진 자기회귀모형을 AR(1), 2차 지연계열 데이터를 가진 자기회귀모형은 AR(2) 등으로 표시한다(아래 그림 참조).

지연계열 데이터를 만드는 방법은 간단하다. 아래 그림에서처럼 원 데이터를 복사해서 한 칸(여기서는 1개월)을 아래로 내리거나(Lag_1), 두 칸을 내리거나(Lag_2), 세 칸을 내리면 된다(Lag_3). 아래 사진에서처럼 공통의 데이터(노란색 부분)를 가지고 상관관계를 구하거나 회귀모형을 적합하면 된다.

아래 그림에서 보듯이 Yt와 Lag_1의 자기상관은 0.487451, Yt와 Lag_2의 자기상관은 -0.13216, Yt와 Lag_3의 자기상관은 -0.45576으로, 자기회귀모형의 적합이 필요함을 시사한다. 상관분석과 회귀분석은 모두 엑셀의 데이터-데이터분석 기능을 사용해서 수행하였다. 회귀분석 결과를 보면, 결정계수가 0.7557로 위에서 본 단순회귀모형의 결정계수 0.1798보다 크게 향상되었다.

AR 모형은 정상 시계열 데이터(stationary time series data)인 경우에만 사용 가능하다. 정상 시계열 데이터란 추세(trend)와 계절성(seasonality)이 없고 백색 소음(white noise)만 있는 시계열 데이터이다(아래 그림 참조).

이 조건이 충족되기가 보기만큼 까다롭지는 않다. 약간의 변형만 가하면 비정상 시계열 데이터를 정상 시계열 데이터로 전환할 수 있기 때문이다.

정상성(stationarity)을 확보하는 흔한 방법은 차분(differencing)을 이용하는 것이다. 차분이란 아래 식처럼 금년도 값에서 전년도 값을 뺀 것을 말한다.

만약 그렇게 차분을 해서도 정상성을 확보하지 못하면  아래 식처럼 다시 한번 차분을 할 수 있다(제2차 차분, 차분 차수가 2).

비정상 시계열 데이터의 경우 차분을 사용하지 않고 엑셀이 제공하는 지수평활법 함수를 사용해도 좋다. 2016 엑셀은 예측 함수를 4가지 제공한다. 시구간만을 독립변수로 갖는 단순선형회귀 예측을 계산하는 함수인FORECAST.LINEAR, 지수평활법 예측을 계산하는 함수 FORECAST.ETS, 지수평활법의 95% 신뢰구간을 보여주는 FORECAST.ETS.CONFINT, 계절성의 주기를 보여주는 FORECAST.ETS.SEASONALITY, 세 가지 계수를 보여주는 FORECAST.ETS.STAT를 제공한다.

사용법은 간단하다. 단순선형예측의 경우 예측하려는 셀에 =FORECAST.LINEAR를 치고, 예측하는 날짜(여기서는 A38), 표적변수 데이터(여기서는 B2:B37), 데이터가 있는 날짜(여기서는 A2:A37)를 입력하면 된다. 그리고 그 이후 날짜에 대한 예측을 추가하려면 그 수식을 복사하면 된다. 지수평활법도 마찬가지이다.

FORECAST.ETS는 편리한 함수이나 약간 자세한 설명이 필요함으로 다음 포스팅에서 독립해서 다루겠다.

Excel로 하는 미래 예측(2): 시계열 예측

미래 예측에는 다양한 유형이 있을 것이다. 우선 미래를 하나의 가능성으로 바라보는 경우 — 예측(forecasting)과, 미래를 여러 가지의 가능성으로 바라보는 경우 — 시나리오 플래닝(scenario planning)이라는 유형으로 나눌 수 있을 것이다. (미래 예측에 관한 본 블로그의 다른 글을 참조할 것) 그리고 예측은 단기 예측장기 예측으로 나눌 수 있을 것이며, 예측 변수(predictors)가 몇 개냐에 따라서 나눌 수도 있다. 예측되는 표적 변수(target)의 과거 데이터만을 가지고 하는 시계열 예측(time sceries forecasting)과, 하나 이상의 예측 변수를 사용하는 지도학습 모형 예측(supervised learning model forecasting)으로 나눌 수도 있을 것이다. 그 밖에도 선형예측(linear forecasting)비선형 예측(non-linear forecasting), 시뮬레이션(simulation)실데이터 예측(real data based forecasting)으로 나눌 수도 있을 것이다.

이번 포스팅에서는 엑셀을 가지고 표적 변수의 과거 데이터만으로 수행하는 시계열 예측을 시도해 보자. 시계열 예측은 특정한 변수의 값이 과거의 시간의 흐름에 따라 어떻게 변화했는지를 알고 있다는 가정 아래 그 변수가 미래에 가질 값을 예측하는 데 관심을 둔다. 때문에 시간적 요소가 중요하다. 예컨대 주가나 날씨가자주 그러한 방법으로 예측된다.

시계열 예측에는 데이터 추동 예측(data-driven forecasting)과 모형 추동 예측(model-driven forecasting)이 있다. 데이터 추동 예측은 예측 변수와 표적 변수 사이의 구분이 없는 시계열 분석 방법이다. 예측변수는 동시에 표적 변수이다. 데이터 추동 예측에는 평균화(averaging) 또는 평활화(smoothing) 같은 기법이 사용된다. 모형 추동 예측은 독립변수와 종속변수를 포함한다. 그런데 독립변수가 시간(time). 가장 간단한 방법은 다음과 같은 형식을 지닌 선형회귀모형이다.


위의 식에서 y(t)는 시간 t에서의 표적변수의 값이다. 학습용 데이터가 주어지면 미래의 y 값을 예측하기 위해서 계수 a와 b를 추정한다.

먼저 데이터 추동 예측부터 알아보자. 엑셀로 구현하기 전에 개념적인 설명이 필요하다.

기본 개념: 시계열 예측에서는 시구간(time period)이라는 개념이 중심이다. 시구간은 문제에 따라 초, 일, 주, 월, 분기, 년 따위의 단위를 갖는다. 그리고 시구간에 대응하는 데이터 계열(time series)인 이 있고, 또한 시계(horizon)에 대한 예측(forecast)으로 라고 표기하며, n 이후 h번째 시구간에 대한 예측을 의미한다. 보통 h=1인데 그것은 마지막 데이터 포인트 직후의 시구간을 말한다. 그러나 h는 1보다 클 수 있다. 끝으로 주어진 시간 t에 대하여 예측 오류(forecast error)  가 있다.

(1) 단순 예측(naive forecast): 계열의 다음 시구간에 대한 예측 즉, 은 계열에서 마지막 데이터 포인트 와 같다고 추정된다. 식으로 표시하면,

(2) 단순 평균: 다음 시구간의 데이터 포인트를 계열의 모든 데이터 포인트의 평균으로 계산한다.

1월부터 12월까지 월간 데이터가 있다면, 다음 해 1월(n+1)의 값을 예측하기 위하여, 간단하게 1월(n=1)부터 12월(n=12)까지의 값을 평균한다.

(3) 단순이동평균(simple moving average, SMA): 단순 평균은 한 시점에서 측정치들의 평균을 가리키나 시간이 들어간 측정치들의 평균에는 이동평균을 사용한다. 시간이 흐름에 따라 측정치가 어떻게 변화되었는지를 알고 싶기 때문이다. 동일한 시구간을 잡아서 각 기간에서의 측정값들의 평균을 구한다. 이것을 단순이동평균이라고 부른다. 2일 이동평균, 5일 이동평균, 10일 이동평균, 50일 이동평균 등등. 시구간이 짧아지면 원 데이터와의 차이가 없어진다. 

만약 5일 이동평균을 계산한다면, 첫 4일은 이동평균이 없고, 5일째 되는 날 측정값의 첫 이동평균을 갖는다. 그 다음부터는 하루씩 더해진 날짜들에 해당되는 측정값들의 이동평균을 갖게 된다. 만약 25일 동안의 5일 이동평균을 구하면, 20개의 이동평균을 갖게 될 것이다.

(4) 가중이동평균(Weighted Moving Average, WMA): SMA에는 항상 현재의 측정값과의 차이가 존재한다. 이 차이를 줄이는 대안이 WMA이다. 어떤 경우에는 가장 최근의 값이 이전의 값들보다 더 큰 영향을 미친다. 대부분의 지수적 증가가 이러한 효과 때문에 발생한다. 다음 구간의 예측은 다음과 같은 모형으로 계산할 수 있다.

위 식에서 이며, 일반적으로 이다. 

(5) 지수이동평균(Exponential Moving Average, EMA): EMA는 WMA의 한 유형이다. EMA에서는 가중승수(weighting multiplier)를 사용한다.  가중승수는 로 구할 수 있다. n은 시구간의 크기이다. 만약 2일 이동평균이라면 가중승수는 2/3(2+1)이다. 시구간이 길어지면 가중승수가 작아진다.

EMA는 다음 공식으로 구할 수 있다.

  • EMA={(금일 종가 – 어제의 EMA)*가중승수}+어제의 EMA

이 식을 곰곰히 살펴보면, 어제 범한 예측오류(금일 종가 빼기 어제의 EMA)에 가중 승수를 곱하고, 그것을 어제의 예측값(EMA)에 더해 오늘에 대한 예측(EMA)로 사용한다는 의미이다.

  • 최초 EMA = 첫 계산 기간의 SMA

(6) 지수 평활화(exponential smoothing): 평활화(smoothing)의 정신은, 어떤 변수의 매일 매일의 변동에는 신호와 소음이 함께 포함되어 있기 때문에 트렌드를 발견하기 위해서는 소음을 제거함이 바람직하다는 것이다. 그런 의미에서 앞에서 서술한 이동평균들도 평활화 기법이다. 그런데 지수 평활화는 아예 평활화를 이름으로 달고 있다.

 지수평활화는 다음 시구간의 값을 예측하기 위해 이전 시구간의 예측값을 사용한다. 그런데 이전 시구간 예측에서 예측오류가 났으면 그 오류를 다음 시구간 예측에 일정 정도 반영해 주는 방법이다. 만약 예측이 지나쳤으면 이번 예측에 일정한 값을 감해서 다음 번 예측에 투입하고, 예측이 낮았으면 이번 예측에 일정한 값을 더해서 다음 번 예측에 투입한다.

 

(1)식을 아래와 같이 바꾸어 쓸 수 있다. 그러면 다음 시구간 값()이 전년도의 예측값()에, 전년도의 예측오류()에 가중치()를 곱한 값을 더한 결과라는 점이 분명해진다.   

지수평활화를 이용해서 월간 예측을 한다면, 2월의 예측값을 구하기 위하여 1월의 실제값뿐 아니라 1월에 대한 예측값을 사용한다.  위의 식에서 가중치  는 일반적으로 0과 1 사이의 값을 갖는다. 가 0에 가까우면 다음 시구간의 예측값은 이전 예측값과 유사하고, 가 1에 가까우면 다음 시구간의 예측값은 이전 실제값과 유사해 진다. 가 1이라면 위에서 소개한 단순예측이 된다. 에 대한 일반적인 값은 경험적으로 0.2부터 0.4 사이의 값이다.

엑셀을 사용해서 데이터 추동 예측 다섯 가지 방법(단순 평균 제외)을 하나의 사례에 적용해 보자. 아래 엑셀 자료는 어느 기업이 13개월 동안 달성한 월별 매출액(단위 백만원)이다. 

단순예측은 금월 매출액을 다음 달 예상 매출액으로 잡는다. 12월의 실제 매출액 720억4천5백만원(B3)이 1월의 예상 매출액(C4)가 되었으며, 1월의 실제 매출액(B4)은 2월의 예상 매출액(C5)가 되었다. 이하 마찬가지이다.

D열에 있는 3월 이동평균(SMA(3))은 12월, 1월, 2월의 실제 매출액을 평균하는 값(=AVERAGE(B3:B5))으로 63,304.33(D6)이다. 4월 SMA(3)(D7)은 (=AVERAGE(B4:B6))이고, 5월 SMA(3)(D8)은 (=AVERAGE(B5:B7)이며, 이하 동일한 방식으로 계산된다.

E열의 3월 가중이동평균(WMA)을 구하는 데는 세 개의 가중치가 필요하다. 시구간의 첫월에 대한 가중치는 0.2, 둘째월에 대한 가중치는 0.3, 셋째월에 대한 가중치는 0.5이다. 현재에 가까워질수록 더 큰 가중치를 주고 있다. 3월 WMA(3)(E6)은 (=B5*$E$19+B4*$E$18+B3*$E$17)로 계산된다. 4월 WMA(3)(E7)은 (=B6*$E$19+B5*$E$18+B4*$E$17)로 구할 수 있다. 이하 동일한 방식으로 계산된다.

F열의 3월 지수이동평균(EMA)을 구하려면 먼저 가중승수를 구해야 한다. 시구간이 3이므로 가중승수는 2/(3+1)=0.5이다. 첫번째 EMA(3) 값(F6)은 3월의 SMA(3) 값과 동일하다. 두번째 EMA(3) 값(F7)은 (=0.5*(B7-F6)+F6)로 구해진다. 실제값에서 예측값을 뺀 예측오류에 가중승수 0.5를 곱하고 그것을 예측값에 더하면 된다. 세번째 EMA(3) 값(F8)은 (=0.5*(B8-F7)+F7)로 구하면 된다. 이하 동일한 방식으로 계산된다. 

G열의 지수평활화(exponential smoothing)를 구하려면 가중치 Alpha가 필요하다. 여기서는 임의로 Alpha=0.3이라고 하자. 첫번째 지수평활화의 1월 예측값(G7)은 12월의 실제 매출액을 가져온다. 2월 예측값(G5)은 ( =$G$17*B4+(1-$G$17)*G4)로 구해진다. 3월 예측값(G9)은 (=$G$17*B5+(1-$G$17)*G5)로 구할 수 있다. 이하 동일한 방식으로 구해진다.

이 서로 다른 예측 평활화들을 어떻게 평가할까? 한 가지 방법은 오류를 비교하고 가장 작은 오류를 낸 기법이 이 데이터에 가장 잘 맞는 방법으로 간주될 수 있을 것이다.

통계학의 분산분석이나 회귀분석에서 오류를 실제값과 예측값의 차이(즉, 오차)의 제곱(보다 정확히는 오차 제곱의 평균)을 이용하여 모형 검정값을 측정한다. 마찬가지로 시계열 예측에서도 오류의 크기를 예측오류의 제곱의 평균(Mean Squared Errors, MSE)로 측정할 수 있다. 위 다섯가지 예측 평활화의 MSE가 아래와 같다.

MSE의 크기가 SMA(3)가 가장 크고(95,175,919), EMA(3)가 가장 작음(23,599,945.7)을 알 수 있다. 즉, 이 사례에서는 EMA(3)가 가장 정확한 예측값을 내고 있다는 것이다. 흥미 있는 사실은 금년도 실제 매출액으로 내년도 매출액을 예상하는 단순예측의 성능도 그다지 나쁘지 않다는 점이다.

Excel로 하는 미래 예측(1): 가상분석(What-If Analysis)

미래 시나리오(scenarios) 자체가 ‘이론(theory)’ 없이 데이터만으로 고안될 수는 없다. 예컨대 내년도 경기 전망 시나리오는 경제 이론에 기반해서 만들어지고 남북한 관계 시나리오는 정치 이론에 기반해서 만들어 진다. 아직까지 어떤 컴퓨터 소프트웨어도 그러한 시나리오를 개발하지 못한다. 언젠가 도메인 이론, 시나리오 개발 방법론, 그리고 데이터를 충분히 입력해주면 AI가 그러한 시나리오를 개발해 낼 수 있겠지만 아직 시나리오 개발은 인간의 영역이다.

하지만 일단 시나리오가 주어지면 그것에 기반한 예측은 엑셀로 구현된다. 엑셀 상단 메뉴 중 ‘데이터’ 하위 메뉴에 가상분석(what-if analysis)을 이용하면 된다.

어떤 서점이 있다고 하자. 그 서점에 A라는 책 100권이 들어왔다. 그 책은 모두 정가에 팔릴 수도 있고 일부가 세일 가격에 팔릴 수도 있다. 그에 따라 기대 수익이 달라질 것이다. 만약 60%가 정가에 팔리고 그 때 권당 수익이 3천원이며, 나머지 40%가 세일 가격에 팔리고 그 때 권당 수익이 1천원이라면 A를 판매한 총수익은 22만원일 것이다. 그런데 정가에 판매되는 비율을 70%, 80%, 90%, 100%로 올리면 총수익이 어떻게 달라질까? 이러한 다양한 시나리오를 엑셀을 가지고 보여줄 수 있다.

먼저 기본 정보와 계산식을 가지고 데이터 시트를 작성한다(아래 그림 참조). 그림에서 C6 셀에는 =B3*C3을 넣고, C7 셀에는 =B3*(1-C3)를 넣는다. 총수익이 표시되는 D9에는 =(C6*D6)+(C7*D7)을 넣는다. 그런 다음 상단 메뉴에서 데이터-가상분석-시나리오 관리자를 연다.

위 창이 열리면 오른편 상단의 추가 단추를 눌러서 시나리오를 정의한다. 먼저 60%가 정가로 팔리는 시나리오를 “60% 정가”로 이름 붙이자. 변경 셀은 $C$3를 넣는다. 고정주소로 표기하자. 그리고 확인 단추를 누르면 변경 셀에 해당하는 값을 입력하라는 메시지가 뜬다. 0.6을 넣고 확인. 그러면 아래 그림처럼 60% 정가라는 시나리오가 정의되어 있을 것이다.

동일한 방식으로 70% 정가, 80% 정가, 90% 정가, 100% 정가 시나리오를 추가한다. 그러면 아래처럼 다섯가지 다른 시나리오가 정의될 것이다.

위 창에서 표시를 누르면 선택된 시나리오에 따라 계산 총수익이 표시된다. 예컨대 70% 정가를 선택하고 표시를 누르면 원래의 데이터 시트가 아래처럼 변할 것이다. 70%가 정가에 팔리면 총수익이 24만원이 된다.

이 시나리오들에 의해 예상되는 총수익을 한꺼번에 보여줄 수 있는 기능이 ‘요약’이다. 시나리오 관리자 창에 있는 요약 버튼을 누르고 시나리오 요약 창이 뜨면 보고서 종류를 선택하고 결과 셀에 $D$9을 넣는다. 그러면 아래 그림처럼 새 시트에 요약 보고서가 뜰 것이다. 정말 사용이 쉽다.

내친 김에 가상분석에 있는 ‘목표값 찾기’도 사용해 보자. 그 기능은 여러가지로 사용될 수 있지만 여기서는 위 사례에서 수익 28만원이 나려면 몇 %를 정가에 팔아야 하는가 하는 문제에 답을 찾아보자. 목표값 찾기를 클릭하여 나타난 창에 아래 그림과 같이 해당 값을 넣는다.

그러면 원 데이터 시트에서 C3 셀이 90%로 바뀔 것이다. 정가로 90%를 팔아야 28만원이 남는다는 말이다.

가상분석에서 다른 하나의 기능은 ‘데이터 표’이다. 이는 엑셀에게 계산식을 알려주고 입력값을 변경하면 결과값이 어떻게 달라지는 지를 보여달라는 명령이다. 예컨대 가격이 100원인 품목를 판매한다고 하자. 다양한 판매 개수에 따른 매출액을 제시할 수 있다. 5개를 팔면 500원이 나오는 계산식 =B1*B2을 E2에 넣는다. 그런 다음 계산을 원하는 품목 B의 개수를 D 열에 나열한다. 이제 D2부터 E6까지를 모두 선택한다. 메뉴에서 데이터-데이터표를 연다. 그리고 아래 그림처럼 B 품목의 개수가 있는 셀인 $B$1을 열에 넣는다. 그러면 원 데이터 시트의 E3부터 E6에 각 개수에 따른 판매액이 표시된다.

이상으로 엑셀의 가상분석(What-If Analysis)의 세 가지 기능을 살펴보았다. 이는 간단하지만 현업에 유용한 기능으로 생각된다. 이제 엑셀에 있는 좀 더 심각한 미래 예측 기능에 대해 알아보자.

Excel, 흔한, 그러나 편하고 강력한 데이터 분석 tool

세 해째 통계와 데이터과학 수업에 마이크로소프트 엑셀을 사용하면서 여러가지로 느끼는 게 많다. 아쉬운 점이 없지 않지만 이렇게 좋은 도구가 또 있을까 싶다. 어차피 업무에서 엑셀을 사용하니 소프트웨어를 구입해야 하는 비용 부담도 없고, 배우기 쉬울 뿐 아니라 업무에 필요한 기능을 대부분 갖추고 있다. 대규모 데이터를 다루는데 불편하고 종종 찾는 기능이 없어 당황하곤 하지만 말이다(비주얼 베이직 프로그래밍을 할 수 있다면 그런 경우가 훨 적을 것이다). 뭐 값비싼 다른 통계 전문 패키지를 사용한다고 해서 그런 불편이 없는 것도 아니니 그것이 꼭 엑셀만의 문제라고 할 수는 없다. 파이썬이나 R로 스스로 프로그래밍을 하지 않은 다음에야 피할 수 없는 문제이리라.

그렇게 놓고 보면 엑셀을 배우는데 들이는 투자는 가성비가 아주 높다. 그래서 데이터 분석에 엑셀을 어떻게 사용할 수 있는 지를 조금 소개해 볼까 한다.

먼저 미래 예측에 대한 기능을 보자. 미래 예측이라면 거창한 것 같지만 사실 현업에서는 알게 모르게 늘 하는 일이다. 다음 달(혹은 다음 분기나 내년도 좋다) 매출이 얼마나 될까? 투자액에 따라 성과가 얼마나 달라질까? 다음 주 A기업의 주가는? 향후 6개월 간 A기업의 주가는 어떻게 변할까? 뭐 그런 의문에 대해 답하는 일이 미래 예측에 다름 아니다.

놀랍게도 그 정도의 예측은 엑셀 가지고 훌륭히 해낼 수 있다. 내 수업에서 다룬 시나리오 예측, 선형회귀 모형 예측, 시계열 예측을 소개한다.

대학에서의 통계 교육

금년에 처음으로 기초 통계와 중급 통계를 두 학기에 걸쳐서 가르쳤다. 기초 과목에서는 기술통계를, 중급 과목에서는 추리통계를 다루었다. 기술통계에서는 데이터의 개념과 측정 수준 등에서부터 확률분포까지 수업했고, 추리통계에서는 기술통계를 복습하고 확률이론, 모수 추정, 가설 검증, 분산분석, 상관분석, 회귀분석까지 수업했다.

통상 사회과학 전공에서는 한 학기에 그 모든 내용을 다루는데 그것은 학생들과 교수자 모두에게 버거운 일이다. 두 학기로 나누어서 수업을 하니 절대 다수의 학생들이 수업에 따라 올 수 있도록 지도할 수 있었다. 거의 매주 퀴즈를 보고 다수의 학생들이 수업 내용을 이해하지 못한다고 판단이 들면 몇 번이고 반복해서 강의했다. 한 학기에 몰아서 할 때는 상상할 수 없었던 현상이다.

공적 생활을 마감하며…

time to retire public engagement에 대한 이미지 검색결과

나는 인간의 삶에는 ‘때’가 있다고 생각한다.

지구 행성에서의 여정은 길지 않다. 기껏해야 1백년 미만이다. 그나마 독립적인 인격체로서 보내는 활동적인 기간만 계산한다면 길어야 50년을 넘지 않는다. 정말 눈 깜박할 사이이다.

지구에는 오기도 어렵고 떠나기도 쉽지 않다. 이 행성에 오려면 반드시 누군가의 자궁(혹은 그와 유사한 인공환경)에서 아이로 태어나야 하고 적어도 20년은 부모의 품에서 자란다. 떠날 때도 훌쩍 가는 경우는 드물고 대체로 늙고 병들어서 외롭고 힘든 세월을 보낸 후에야 다른 별로 갈 수 있다. 당연히 나도 그렇다.

내게는 이제 늙고 병든 때가 왔다. 활동적인 시기에 하던 여러 가지 일들을 남은 생에서도 계속 해야 하는가에 대해 냉정히 새겨보아야 한다. 얼마나 남았는지는 모르겠지만 여생에서는 그동안 내가, 하고 싶었지만 하지 못했던 일들을 하고 가면 지구 여행이 잘 마무리 될 것이다.

나는 이 세상을 좀 더 나은 세상으로 만드는데 기여하겠다는 생각을 내려 놓는다. 한국전쟁 이후 가난과 혼란 속에 태어난 우리 세대는 가난과 혼란을 벗어나는 과제의 일부를 떠맡아야 했다. 사회적으로나 가정적, 혹은 개인적으로 그러했다. 절대적 가난에서 벗어나야 했고, 보다 민주적이고 평화로운 세상을 만들어야 했다.

우리 사회의 가난과 혼란을 극복하는 데 있어 나는 결코 남보다 더 기여하지 못했다. 하지만 유신 독재에 저항하다 어려운 대학 시절을 보냈고, 대학 교수가 된 이후에도 내 시간과 능력의 3분의 1을, 돈을 버는 목적이 아닌,  순수하게 사회적으로 가난과 혼란을 극복하는 데 사용하겠다는 원칙을 지키며 20여년을 보냈다.

최근에 건강 상태가 내게 지속적으로 신호를 보낸다. 이제 그러한 공적, 정치적 삶을 마무리하고 여생을 온전히 나와 가족, 그리고 가까운 이웃을 위해 보내라는 신호로 해석된다. 진정한 의미의 은퇴를 의미하는 그 시그날을 나는 진지하게 받아들이기로 했다.

세상은 쉬이 변하지 않는다. 각 세대에게는 그 세대가 짊어져야할 짐(과제)이 주어진다. 한 세대가 모든 문제를 다 풀겠다는 것은 망상에 불과하다. 다음 세대가 져야할 짐은 과감하게 다음 세대에게 넘겨야 한다. 아쉬움은 많지만 아쉬움에 붙들리면 미련이 되고 집착이 된다.

“여보, 당신 요즘 산책하면서 정치 얘기를 통 하지 않네요.” 며칠 전 아내가 궁금한 표정으로 내게 운을 건넸다. 산책 중 수학 얘기를 계속하다 아내에게서 심한 나무람을 들은 후였다.

이상이 아내의 의문에 대한 간략한 답변이다. 은둔자의 삶이 시작된다.  그 삶이 낯설기는 하지만 지구에서 보내는 여정의, 또 하나의 소중한, 그리고 마지막 부분이 될 것이다. (윤영민, 2018/11/12)

세상에 관한 몇 가지 진실(1): 일과 잉여

매월 급여 명세서를 읽을 때마다 나는 화를 누르기 쉽지 않다. 정부가 가져가는 세금 때문이다.

오해하지 말라. 세금이 많아서가 아니다. 내 몸에 빨대를 꽂고 있는 잉여들, 세금 도둑들 때문이다.

세상에 관한 가장 중요한 진실은 “쓸데없는 일은 ‘일’이 아니라 ‘잉여’다” 라는 명제이다. 적어도 정부 부문에 관한 한 “쓸데없는 일”는 형용모순이다. 쓸데없는 일은 일이 아니다.

정부에 관해서 ‘쓸모’에 대한 판단 기준은 딱 두 가지이다. 하나는 국민 혹은 주민의 입장에서 도움이 되는가, 둘째는 그 일을 직접 수행하는가이다. 이 두가지 기준을 충족하지 않으면 잉여이다.  실내에서 하는가 실외에서 하는가, 기획인가 집행인가 따위와는 근본적으로 관련이 없다.

(일과 잉여의 구분에 대한 예시)

1. 환경미화

일: 동네 쓰레기통에 버려진 쓰레기의 수거 행위

잉여:  쓰레기를 치우라고 지시하는 행위, 쓰레기 수거를 민간 업체에게 용역을 주고 관리하는 행위

2. 재난 예방

일: 태풍이 몰아 닥칠 때, 취약 지역, 취약 가구를 방문하여 피해가 일어날 요인을 줄이는 작업

잉여: 면사무소 안에서 확성기를 통해서 피해 방지에 유념하라고 방송하는 행위

3. 사회복지

일: 취약 가구를 방문하여 노약자를 살피고 도와주는 행위

잉여: 사회복지정보시스템을 개발하기 위해 외부 업체에 용역을 주는 행위

4. 교육

일: 학생을 지도하는 행위

잉여: 교사나 학교 운영을 감독하는 행위

5. 범죄 예방

일: 동네와 마을 순찰을 도는 행위

잉여: 마을 CCTV 설치와 관리 업무를 외부업체에게 용역 주는 행위

6. 정책 수립과 예산

일: 정책을 기획하고 예산을 수립하는 행위

잉여: 정책 기획과 예산 수립을 용역화 하는 행위

몇 가지 사례를 보았다. 어떤 공무원의 업무가 일인가 잉여인가를 판단하는 업무는 잉여이다. 그것은 머슴(공무원)의 역할이 아니라 주인(국민 혹은 주민)의 역할에 해당된다.

우리나라 정부는 수백년 묵은 잘못된 공무원 제도 때문에 발생하는 잉여가 너무 많다. 왕정과 독재정은 오래 전에 종식되었지만 그 시대에 형성된 관료 제도와 문화가 온존되어 왔다. 더구나 안정성 중심의 관료체제는 21세기 급속히 변화하는 세상과 너무 맞지 않다.

지금과 같은 신분보장=정년보장이라는 등식이 성립되는 직업공무원제도 아래에서는 세상이 빨리 변할수록 정부 내에 잉여의 비중이 급격히 증가한다. 신분보장=정년보장이 신분보장=임기보장이라는 원칙으로 바뀌어야 한다. 약간의 예외를 둘 수는 있겠지만 공무원제도의 기본틀이 임기제 혹은 계약제로 바뀌어야 한다는 말이다.

그렇지 않으면 우리 정부는 ‘용역’ 국가로 전락해 버릴 것이다. 현재도 정부의 일 중 상당 부분이 용역화된다. 공무원은 용역 관리자이고 외부 업체가 실제 일을 수행하는 방식이다.

용역을 법으로 금지해야 한다.  대신에 그 정책이 꼭 필요하다면 그 정책을 잘 수행할 수 있는 사람들을 공무원으로 채용해야 한다. 아예 해당 정책을 수행하는 부서 전체를 모듈식으로 꾸릴 수도 있을 것이다.

그것은 현재의 관료 체제에서는 불가능한 대안이다. 하지만 법적으로 한 가지만 손질하면 가능하다. 정년보장이라는 제도를 없애고 모든 공무원을 임기제 혹은 계약제로 바꾸는 것이다. 만약 전문성이 필요해서 장기 계약이 필요한 경우라면 그런 자리는 보수를 낮게 책정하고, 반대로 계약 기간이 짧은 자리는 보수를 더 많이 주어서 보상에 균형을 맞춰야 할 것이다. 지금처럼 이긴자가 다 가져가는 방식으로는 정부의 잉여를 줄일 길도, 효율적인 정부를 실현할 길도 없다.

인간의 지식은 쉽게 업그레이드되지 않는다. 반드시 많은 노력을 들여서 학습을 해야 새로운 지식을 얻을 수 있다. 그러나 빠르게 변하는 세상에서는 그런 업그레이드에 한계가 있다.  인간은 언젠가 여러가지 이유로 적응 불능 상태에 빠지게 된다. Fortran과 DOS를 배워서 컴퓨터를 시작한 기술자에게 AI 개발 업무를 맡긴다고 상상해 보라. 그냥 그것은 불가능하다.

정부 내에서 그 불가능을 가능으로 만드는 요술 방망이가 바로 ‘용역’이다.  용역 관리자는 얼마든 변신이 가능하다. 심지어 자신이 용역을 내주는 업무를 제대로 이해하지 못해도–실제로 그런 경우가 흔하다–용역을 관리할 수 있다. 업무 수준이 엉터리일 것이 불을 보듯하고 벤더(vender)들의 손바닥에서 놀아날 가능성이 매우 높지만 말이다.

용역 관리를 감독하는 사람은 없다. 왜냐면 감독자들도 그 업무를 이해하지 못하기는 마찬가지이기 때문이다. 거기에 거대한 용역 비즈니스가 발생한 공간이 존재한다.  그 공간에서 잉여로 가득찬 용역 정부가 탄생하는 것이다.

일하는 공무원은 많아도 무방하다. 비용은 좀 많이 들지만 국민, 주민이 편해진다.

그러나 잉여는 과감히 제거되어야 한다. 아마도 그러면 정부 예산의 3분의 1정도, 잘하면 절반 정도는 절약 가능할 것이다.  그것은 이 나라에서 천년 래의 사회혁명이 될 것이다.

우리 나라에는 두 종류의 사회계급이 존재한다. 공무원과 일반인이다.  헌법에는 이 나라의 주인이 국민으로 되어 있지만, 현실에서 이 나라의 주인은 공무원이다. 머슴이 주인 자리를 차리하고 있는 것이다! 엄청난 모순이다. 그들은 제 위치에 돌려보내고 국민이 주인 자리를 차지하는 것이 21세기의 진정한 혁명이다. (2018-08-25)

도덕, 우리 정치의 목을 조르다: 또 불행한 대통령을 보게 될 것인가

한국의 지식인들은 현대 한국사회를 유교적 관점에서 해석하려는 학자들의 태도를 반기지 않는다. 오늘날 한국인에게 유교란 ‘삼강오륜’, 권위주의, 노인 정치, 가부장제, 도덕주의, 제사, 위선, 과거 지향 등과 같은 시대착오적 원칙이나 도덕적 적폐와 동일시된다. 그러니 한국사회가 유교적이라는 해석을 누가 좋아하겠는가.

그러나 냉정히 말하자면 우리 사회는 아직 뼛속까지 유교적이다. 기독교가 전래된 지 1백년이 훨씬 넘었고 국민의 3분의 1 이상이 기독교 신자이지만 한국은 여전히 유교 사회이다.

유교적 유산은 마치 한국인의 유전자에 박혀 있는 것 같다. 그것을 충분히 고려하지 않은 채 서양의 이론과 개념만 가지고 한국의 정치와 문화를 이해하려는 어떤 시도도 성공할 수 없을 것이다.

그런데 무엇보다 경전적 유교와 현실적 유교를 구분해야 한다. 경전에서 읽히는 유교와 현실에서 구현된 유교 사이에 커다란 간극이 존재하기 때문이다. 현대 한국 사회의 문화와 정치를 규정하는 프레임은 경전 속의 유교가 아니라 6백년 조선의 역사 속에서 형성되고 유지되어온 문화적 규범과 사회 관계로서의 유교이다.

나이, 성별, 지위, 혈연, 지연, 학연 등이 사회적 연대와 배제의 근간으로 작용한다. ‘큰 뜻을 품은’ 사람은 공무원이나 정치인이 되어 국가 경영에 참여해야 한다. 맹목적인 충성과 의리는, 그것이 설령 범죄 집단 내에서 일어나는 것일지라도 사회적으로 칭송받거나 적어도 용인되는 반면 배신은, 그것이 설령 정의를 위한 내부 고발일지라도 비난 받는다.

예컨대 나이를 보면, 아직 우리는 대학입시의 동점자 처리, 공직 선거의 동일 득표자 처리, 국회 상임위원회 위원장 선임시 동일한 선수자 처리 등에서 한 살, 아니 단 하루라도 먼저 태어난 사람이 우대받는 것을 당연하다고 여긴다. 그런 원칙에 대해 아무도 문제를 제기하지 않지 않는가. 장유유서(長幼有序)가 지금도 사회질서의 한 축인 것이다.

유교 정치는 한 마디로 모럴폴리틱(moralpolitik)이라는 개념으로 집약된다(김상준, 2011). 유자(者)들의 자아실현은, 자아 수양에서 시작되며 국가 경영에의 참여를 통해서 완성된다. 수신제가치국평천하(下)가 바로 자아실현의 요체이다. 김 교수에 의하면, 유자들은 성왕(王)의 이념을 가지고 때로는 왕권을 강화, 수호하고 때로는 반대로 왕권을 견제, 견인한다. 물론 유자들은 신민들에 대해서도 유교적 질서의 지킴이 역할을 수행했다. 정치 투쟁에서 유자들은 칼과 화살이 아니라 “도덕적 가치와 논리”를 핵심 무기로 사용했다(김상준, 2011:  193).

moralpolitik에 대한 이미지 검색결과

현대적으로 표현하면, 학문을 하는 지식인이라면 당연히 정치에 관심을 가질 뿐 아니라 정치에 참여해야 한다. 학문의 목표는 지상에 ‘바른 세상’을 건설하는 것이고 지식인이라면 필히 ‘바른 세상’을 세우고 유지하는 데 기여해야 한다. 지식과 실천은 분리될 수 없다. 특히 정치적 실천이 으뜸으로 강조된다.

물론 정치를 하기 전에 먼저 수신(身)과 제가(家)를 해야 한다. 왕에게 성인(人)이 되길 요구하듯이 유자들도 서로에게 도덕가(道德家)가 되기를 요구했다. 업무 수행의 유능함은 그 다음 문제였다. 아무리 뛰어난 업무 능력을 가졌다고 하더라도 도덕적 흠결을 가지고 있으면 중요한 직책을 맡을 수 없었다. 

우리의 정치가 유교적 모럴폴리틱을 벗어나지 못하고 있다는 점은 다음 몇 가지 역사적 사실만으로도 입증된다. 첫째, 해방 이후 지금까지 대통령들은 대부분 임기 후반에 감당하기 어려울 정도의 엄청난 도덕적 비판에 직면했고 그중 몇 사람은 그로 인해 고통스런 말년을 보내거나 비극적인 최후를 맞이했다. 박정희, 전두환, 노태우, 김영삼, 김대중, 노무현, 이명박, 박근혜….그들이 어떻게 한결같이 유사한 운명에 처했는지 참으로 놀라울 따름이다. 

둘째, 2000년 도입된 고위공직자의 인사청문회는 후보자의 직무적합성이나 능력에 대한 검증은 뒷전이고 도덕적 검증에서 시작해서 도덕적 검증으로 끝났다고 해도 과언이 아닐 정도로 도덕적 검증에 집착했다. 후보자 자신도 기억할 수 없는 과거의 도덕적 흠결을 문제 삼아 결국 후보자를 낙마시키고 그를 임명한 대통령과 집권당에게 도덕적으로 흠집을 냈다. 한 마디로 인사청문회는 여야 그리고 언론이 참여하는 도덕정치, 도덕 투쟁이 장이었다. 최악의 상황을 피하기 위해 대통령은 해당 직책에 가장 적합하고 유능한 인물이 아니라 도덕적으로 흠이 가장 작은 인물을 장관에 임명해야 할 정도였다.

셋째, 1990년 대까지도 학생 운동이 정치사회 운동의 근간이 되었다. 3.1 운동 때부터 계산해도 적어도 70여년 동안 우리 나라 정치의 한 축을 학생들이 차지했다고 해도 과언이 아니다. 3.1 운동, 광주학생운동, 일본 유학생의 독립운동, 해방 이후 좌우대립, 한국전쟁 때의 학도군, 4.19, 한일회담 반대 데모, 3선 개헌 반대 데모, 유신체제 반대운동, 광주민주학쟁, 6월 민주화운동 등 굵직한 역사적 순간에는 항상 학생 세력이 있었다.  이는 우리 나라의 지식인이 지닌 실천적 특성을 무엇보다 잘 보여준다고 하겠다.

넷째, 지식인들의 정치 참여가 무척 활발하다. 특히 권위주의 시대에 지식인들은 사회적 불이익은 물론이고 심지어 생물학적 생명까지 바치면서 정권 비판에 앞장 섰다. 대학교수들의 정치 참여–그것이 집권 세력을 위해서든 비판 세력을 위해서든–는 ‘폴리페서’라는 조어가 만들어질 정도로 활발하다.

조선 시대 이래 모럴폴리틱은 우리 사회의 문화적 전통(혹은 구조)으로 굳건히 자리 잡았다. 그것은 의심할 바 없이 역사적 발전을 위해 긍정적인 역할을 수행했다. 국가의 안위가 위태로울 때, 통치자가 사리사욕과 부정부패에 빠졌을 때 지식인들은 어김없이 하나의 세력으로 역사의 무대에 등장했다. 아마도 그 덕분에 오랜 세월 하나의 민족으로서 살아남았고 정치적 독립을 유지했으며 민주화와 산업화를 성취했을 것이다.

그러나 유자들, 그리고 그들의 역할을 이어가는 지식인들의 지나친 관념적, 도덕적 집착은 조선을 위기에 몰아넣었고, 지금 다시 우리 정치의 발전을 가로 막고 있다. 우리 정치는 지금, 민주화와 개혁이 명분과 구호, 그리고 형식에 머무르고, 국가 부분이 지나치게 비대하고 자율적이 됨으로써 과잉국가의 함정에서 벗어나지 못하고 있다.

정치가 국가를 책임있게 경영하는 데까지 이르지 못하고 정치 권력만 향유하는 사회적 잉여가 되고 있다. 대통령과 집권당은 정책의 성공적 집행과 정부의 효율적 운영을 감당하지 못한다. 우파 정권은 힘과 공포로 정부를 운영할 수 있다고 믿고, 좌파 정권은 대의(大義)와 국민의 지지로 그렇게 할 수 있다고 믿는다.

그러나 일찌기 마키아벨리가 지적했듯이 군주가 당위성, 사명감, 선의, 스타일 등으로 위업을 이룰 수는 없다. 특히 유교적 특성이라고 할 수 있는 엘리트 관료를 장악하고 그들을 국가 경영에 있어 신뢰할 수 있는 동반자로 만들기 위해서는 선거에서 승리하는 것과는 다른 차원의 능력이 필요하다. 집권하는 능력과 국가를 경영하는 능력이 다르다는 말이다.

관료를 장악하고 그들을 적극적인 동반자로 만들지 못하는 정권은 집권 초기를 지나면서 점차 관료의 포로로 전락한다. 이 법칙에는 거의 예외가 없다.

모럴폴리틱을 넘어서지 못하는 한 우리 사회는 관료국가를 벗어날 수 없을 것이다. 관료 국가는 모험 회피적이고 잉여적이며, 통제적이다. 관료는 끝없이 조직을 확대재생산하고 규제를 양산하려는 강력한 동기를 갖고 있다. 그리고 그들은 결코 책임지려하지 않는다. 더구나 놀랍게도 그들은 정치적 대의나 의지를 삼킬 수 있는 엄청난 수단과 능력을 갖고 있다. 조선 시대에도 그랬고 현재도 그러하다.

비도덕적 정치가 도덕이라는 명분과 위선의 늪에 빠져 있는 동안 무도덕적 관료는 자신들의 이익에 따라서 나라를 끌고 간다. 개인적으로 그들은 ‘대과없이’ 임기를 마치면 되고 집단적으로 나라를 망하지 않게 하면 된다. 그리고 잘못된 결과에 대해서는 늘 정치인들에게 책임을 돌린다. 그 뿐이다.

모럴폴리틱은 우리의 정치를 청와대 문 앞에서 멈추게 한다. 국가 경영이라는 측면에서 정치적 영향이 대통령이 머무르는 청와대를 나오지 못한다는 말이다.

지금까지 그 어느 선임자들보다 착하기는 하지만 역시 실패한 대통령을 다시 한번 보게될 것 같다는 우려가 드는 것은 비단 나 뿐일까(2018-07-22).