선형대수학이라 하면 행렬과 백터를 다루겠죠.
백터는 한 방향을 표현하는 점을 나타내고 행렬은 차원의 공간을 표현합니다.
우리가 바라보는 세상은 3차원으로 구성돼 있죠.
하지만 행렬은 3차원 이상의 공간까지도 표현이 가능합니다.
그렇기 때문에 우리가 이해하지 못하는 3차원 이상의 공간까지도 행렬을 통해서 이론적으로 다룰 수 있습니다.
우리가 바라볼 수 없는 공간이 수로 표현될 수 있는 게 신기하지 않나요?
행렬을 이해하기 위해 예를 들어보겠습니다.
사진은 가로와 세로가 있는 2차원 공간에서 나타낼 수 있죠.
이때 2차원 공간을 가로로 늘리거나, 세로로 축소시키는 등 변형한다면 사진의 비율이 달라질 것입니다. 또는 사진이 커지거나 작아질 수도 있겠죠.
사진의 각 픽셀을 2차원 공간에서 하나의 점이라고 생각할 수 있습니다.
이때, 행렬을 사용하면 2차원 공간에서 점들의 위치를 변형할 수 있습니다.
이처럼 행렬은 공간을 자유자재로 변형시켜 그 내부의 점들이 어떻게 움직이는지 설명할 수 있습니다.
공간을 장난감처럼 다룰 수 있는 재밌는 도구인 셈이죠.
이게 선형대수학입니다. 간단하죠?
그럼 선형대수학은 머신러닝/딥러닝에서 어떻게 사용되고 왜 이 학문을 배워야 할까요?
여러분은 머신러닝/딥러닝이 무엇인지 잘 알고 계시나요?
머신러닝/딥러닝의 궁극적인 목표가 뭘까요?
직관적으로 생각해봅시다. 한글로 번역하면 기계학습, 깊은학습이죠?
일단 기계학습이 뭔지 알아봅시다.
기계가 사람처럼 스스로 생각을 할 수 있나요?
기계는 어떤 명령을 받으면 그 명령을 수행할 뿐이죠.
그럼 '어떤 방법'으로 생각하라고 명령한다면 기계는 '어떤 방법'을 따라 생각하겠네요.
이 '어떤 방법'을 알려주는 것이 바로 머신러닝입니다.
'어떤 방법'을 통해 기계가 스스로 학습하고 패턴을 발견할 수 있게 되는 거죠
(예: 지도 학습, 비지도 학습, 강화 학습, 딥러닝).
우리의 개인정보가 어딘가에 유출되어 스팸 메일이 마구마구 온다고 가정해봅시다.
스팸 메일이 너무 많아 도무지 메일을 사용할 수가 없네요.
수천 개의 스팸 메일을 스팸 메일인지 아닌지 확인해가며 삭제하는 건 너무 시간 낭비죠?
이럴 때 기계한테 스팸 메일과 일반 메일을 여러 개 던져주고 스팸 메일의 패턴을 학습시킵니다.
기계는 수천 개의 스팸 메일을 빠르게 찾아내 삭제할 수 있을 것입니다!
따라서 머신러닝/딥러닝의 궁극적인 목표는 기계가 스스로 데이터를 학습하고, 패턴을 찾아내어 예측하거나 의사결정을 할 수 있게 만드는 것이죠.
이때 데이터의 형태는 다양하고 그 형태를 모두 벡터와 행렬로 표현할 수 있습니다.
또한, 데이터의 특징을 추출할 때도 행렬을 사용합니다.
아까 우리가 스팸 메일의 패턴을 학습시킨다고 했었죠?
그런식으로 고차원 데이터를 다룰 때 PCA(주성분 분석) 같은 방법을 사용해서 차원을 축소해 데이터의 특징을 추출할 수 있는데요. 이때도 선형대수학이 쓰입니다.
음.. 그리고 딥러닝은 다층 신경망으로 구성되어 있고 각 층은 행렬과 벡터 연산을 통해 계산됩니다. 딥러닝에 대한 자세한 내용은 나중에 따로 정리하겠습니다.
이렇게 머신러닝/딥러닝의 많은 부분에서 벡터와 행렬이 쓰이기 때문에 선형대수학은 머신러닝/딥러닝의 필수 요소라고 볼 수 있습니다.
EDA가 어떤 약자인지 알면 좋을 것 같은데요. EDA는 Exploratory Data Analysis입니다.
직역하면 탐색적 데이터 분석입니다. 단어 그대로 데이터를 탐색적으로 분석한다는 의미이죠.
그냥 분석하는 것과 탐색적으로 분석하는 것의 차이는 무엇일까요?
'탐색적으로 분석한다'는 말은 데이터를 단순히 수치적으로 처리하거나 모델링을 위한 준비만 하는 것이 아니라, 데이터를 다양한 관점에서 심층적으로 살펴보고 이해하려고 시도하는 과정을 의미합니다.
이 과정을 통해 데이터 속에 숨겨진 특성, 패턴, 이상치, 관계 등을 발견할 수 있겠죠?
그럼 더 나아가서 데이터 분석에서 특성, 패턴, 이상치, 관계는 무엇을 의미할까요?
특성 파악
데이터가 연속형인지, 범주형인지 파악하고 변수 간의 관계를 확인합니다.
패턴 탐색
규칙이나 경향(계절적 변화, 시간에 따른 변화)을 찾아냅니다.
이상치 탐색
데이터의 특이값을 찾아내고, 특이값이 중요한 정보인지 오류인지 판단합니다.
변수 간 관계 분석
변수 간에 어떤 상관 관계나 인과 관계가 있는지 파악합니다.
우리가 데이터를 분석을 하면 나아가 머신러닝 모델을 구축할 수 있겠죠?
이때 데이터가 잘 정리되어 있지 않다면 머신러닝 모델이 더 좋은 결과를 내놓지 못할 것입니다.
모델의 성능을 최적화하고, 정확한 예측을 가능하게 하려면 데이터 전처리를 꼼꼼히 해야겠죠?
잘 정리되지 않은 데이터에도 유형이 있는데요.
대표 유형 세 가지를 살펴봅시다.
결측값 처리
데이터셋의 누락된 값을 그대로 두면 모델이 잘못 예측할 수 있습니다.
그렇기 때문에 결측값을 채우거나, 삭제하거나, 다른 방법을 사용해 데이터를 보완하곤 합니다.
중복값 제거
중복된 데이터가 포함되면 모델의 성능이 저하될 수 있는데요.
그렇기 때문에 중복 데이터가 있다면 제거하는 것이 모델이 정확한 패턴을 학습하는데 도움이 됩니다.
이상치 처리
데이터에 이상치가 포함되면 모델이 왜곡될 수 있습니다.
그렇다면 이상치를 찾아내서 제거하거나 조정하여 모델의 안정성을 높여야겠죠?
이외에도 형식을 통일화하고, 범주형 변수를 처리하고(원-핫 인코딩 또는 레이블 인코딩), 스케일링 및 정규화, 불필요한 특성 제거, 데이터 변환 및 특징 엔지니어링 등을 통해 모델을 최적화하는데 많은 도움이 되는 데이터 전처리를 수행합니다.