본문 바로가기
데이터의 표현 방법 (상식)

기왕 행렬을 했으니까, 데이터를 어떤 식으로 표현하는지를 다시 정리할 필요가 있겠다고 생각이 들었습니다. 사실상 더 이야기를 진행하는 데 있어서 용어들을 마구 섞어 쓰기 위한 뭐 그런 초석이기도 한데, 어쨌든 이 용어가 미리 정리가 되지 않으면 이랬다 저랬다 하는 것처럼 느껴져서 이거 뭐야. 싶을 수 있겠다 싶고 한 번도 화제가 되지 못한 채 넘어가면 그 또한 아쉽지 않을까 하는 생각에 정리를 일단 하고 넘어가고 싶다는 의지의 코너입니다.

일단, 데이터의 표현 방법은 엑셀의 표현 방법이 표준이 아닐까 합니다. - 엑셀은 정말 이른바 형이상학적인 궁극의 데이터 툴이라고 생각합니다. - 그리고 게다가 이것은 RDBMS에서의 모양새와 똑같습니다. - RDBMS의 대표적인 예로는 MySQL같은 것을 생각하면 딱 좋습니다. - 데이터베이스도 이런 식으로 데이터를 쌓거든요. 오죽하면 R이나 Pandas의 DataFrame이 엑셀과 데이터를 다루는 방법이 비스므리 하겠습니까.

엑셀에서는 적당히 데이터를 Row와 Column으로 구분합니다. 사용자가 데이터를 쉽게 모으고 쉽게 이해할 수 있게 해주는 그것이 가장 우선입니다.

 

엑셀을 처음 열면 이렇게 생겼습니다. 엑셀에서는 컬럼을 A, B, C 이런 식으로 표현하는데, 어쨌든 Row와 Column이 뚱하니 보이죠. 요 엑셀에 자료를 채우게 되는데, 요 채워진 자료를 행렬처럼 볼 수 있습니다. 그래봐야 엑셀이지만, 그래도 행렬로 표시하는 순간부터 조금은 선형대수로 데이터를 만질 수 있지 않을까 합니다. 사실 이런 엑셀 같은 데이터 표기가 가장 합리적이고 데이터가 어떻게 생겼는지를 명확하게 보여준다고 생각합니다.

 

행렬의 Row와 Column으로 데이터를 구분합니다. 그런데 말이죠. 우리가 이 Row와 Column을 다룰 때 어떤 식으로 구분하는지를 한번 보시면, 아하 싶을 것입니다. 보통 Column을 Feature (데이터의 종류이거나 데이터의 특징, 데이터의 구분등), Row를 Sample(표본)로 해서 데이터를 넣고 있지 않나요? 일단 Column이 전해진 후에 Row를 마구마구 늘리잖아요? 맞아요. 맞습니다.

 

 

요걸 보면 뙇. 행렬이랑 벡터가 떠오르지 싶은데, 모름지기 벡터라면 차원이라는 게 있어야겠죠. 그러면 데이터의 차원이 어떤 식으로 포함되어 있는지를 본다면, Feature의 개수가 차원 즉, Dimension이라고 보는 것이 좋겠습니다. - Rank니 뭐니 하는 개념은 일단 밥 말아먹고요. -

 

즉, Feature의 개수가 분석차원, Sample의 개수가 데이터의 크기 정도로도 표현될 수 있겠습니다. 왜냐하면 Feature를 축으로 생각할 수도 있는 거니까요. 그런데, 우리가 통계를 하다 보면 다른 방식으로 데이터를 부르는 경우가 있는데, 그것이 독립변수, 종속변수라는 것인데요, 이것을 그대로 다시 표현해 보면, (y의 등장!)

 

각각의 Feature를 독립변수, Sample을 관측치 또는 표본이라고도 표현하기도 하죠. 이것도 딱 그럴듯하죠. 독립변수가 데이터의 종류 또는 데이터의 특징이라는 의미 하니까요. - 표본의 특징이라고 해도 말이 되겠군요. -

 

그러니까 관측치는 표본입니다. 오 이렇게 보면 통계의 용어가 많이 사용되었군요. 그런데 말이죠. 이게 또 기계학습으로 넘어오게 되면 또 다르게 표현됩니다. "으음" 하고 한 번 보시죠.

 

 

이런 식으로 학습(훈련)데이터, 평가데이터로 나눠서 보여주기도 합니다. - 영어로는 학습(훈련)이 train, 평가가 test입니다. - 같은 데이터를 가지고 꽤나 여러 가지로 표현하고 있군요. 자, 여기에서 정말 중요한 시점의 변화가 있는데, 각 Row의 데이터를 n차원의 벡터의 형태로 생각해 본다면 말이죠.

 

 

이렇게도 생각할 수 있겠습니다. 당연히 n차원 벡터의 모음으로 생각할 수도 있겠죠? 자, 그런데 막상 선형변환등을 할 때 이 벡터를 입력 벡터로 사용하게 된다면 어떻게 해야 할까요? - 입력벡터를 열벡터로 하는 것이 선형변환 행렬을 다루는 기본자세라는 점 굳이 잊지 말아요. 이걸 잊었다가는 무슨 우스운 꼴을 당할지 모르니까요. -

 

이런 식으로 $X^T$를 해서 입력 열벡터로 사용하게 됩니다. 이거 행렬의 곱셈에서 본 그대로입니다. 이 이야기를 먼저 했었으면 좋았을 텐데, 이제라도 굳이 해서 천만다행이라고 생각합니다. 휴.

어쨌든 엑셀의 데이터를 그대로 행렬로 표시하고, 막상 행렬로 연산을 할 때에는 Transpose(전치)를 한다는 것만 기억한다면, 이제부터는 천하무적입니다. 데이터를 만지는데 자유자재의 몸이 되는 것이죠. X를 W로 선형변환하는 관계를 굳이 표현하자면,

$$ Y = WX^T $$

이런 식으로 표현할 수 있겠습니다. 이제부터 데이터는 모두 이런 식으로 표현하고 다룰 수 있습니다.

도움이 될 이야기인지 모르겠는데, 미리 조금만 귀띔하자면, $ Y = W X^T $의 관계에서 
①  Y를 알고, X를 알면 W를 구할 수 있겠죠? 이게 회귀입니다. 이게 혹시나 비선형적이라면 딥러닝도 여기에 속합니다. 그리고 추천엔진도 여기에 속합니다. 
②  W가 대칭행렬인 경우에 그 특성을 이용해서 데이터를 압축하거나 분해한다면? 이게 잠재의미분석, PCA가 여기에 속합니다. 

그러니까, 이걸 꼭 알고 넘어가면 데이터를 다룰 때 행렬에 관련한 표현이 나온다면 이해하기도 편하고, 다루기에도 엄청 편리할 거라 생각합니다.

자료(데이터)를 행렬로 표현했을 때, 어떤 용어를 사용하는지 정도만 잘 정리해도 어떤 통계에 관련된 글을 보았을 때 당황하지 않을 것이라고 생각합니다. 그런 일에 머리를 쓰게 된다면 정말 적성에 맞는 것을 하고 있는 것일까?라는 의문이 들 정도가 될 테니까 그런 일은 미리 방지하는 의미로 하긴 했습니다만, 이런 얘기를 하면 뭘 이 정도까지?라고 화를 내는 사람도 있을 수 있을 수도 있겠다는 생각이 들었습니다. 하지만, 이건 당해보지 않은 사람은 도저히 알 수 없는 당황스러움이 있다고나 할까요?

가끔 회귀에서 예측이라는 부분도 있기 때문에 Independent Variable 대신 Predictor, Dependent Variable 대신에 Criterion이라고 부르는 경우도 있습니다. 

친절한 데이터 사이언스 강좌 글 전체 목차 (정주행 링크) -



댓글





친절한 데이터 사이언스 강좌 글 전체 목차 (정주행 링크) -