머신러닝이나 통계분석에서 주로 사용하는 용어들 중에 예측 (prediction), 판별(discrimination), 분류(classification), regression(회기), 라는 용어들이 있습니다.
사전적 의미에서 예측은 앞으로 있을 일을 미리 헤아려 짐작함 이고, 판별은 판단하며 구별함 이긴 하지만, 과거를 보고 미래를 짐작하는 것 (예측)이나 데이터의 주어진 특성를 보고 미지의 특성을 판별 하는 것은 기술적으로 같은 것입니다.
데이터의 특성 중 입력으로 주어진 것을 feature 라 부르고, 예측해야할 대상을 label 이라 부릅니다.
어떤 함수 f로 모델링한 경우라면, Y = f(X) 에서 X는 feature이고, Y는 label 입니다.
예측해야할 label이 어떤 부류에 속하는가를 예측하는 문제가 classfication 이고 (예를들어 내일 맑을까 비가올까 눈이 올까, 이 사진의 동물이 개인가 고양이인가) (주로)실수 형태의 값을 예측하는 문제를 regression이라 합니다. (예를들어 특정 사람의 키가 몇 cm까지 자랄까)
예측을 위해서 무엇이 필요할까 생각해봅시다. 정확한 예측을 위해선 정확한, 그리고 데이터가 가지는 그 데이터만의 고유한 정보가 필요합니다.
예를들어 어떤 사람이 키가 170cm일 때, 이 사람의 체중을 예측하시오 라고 말한다면, 정확한 예측이 어려울 것입니다.
왜냐하면 키가 170근방인 사람이 매우 많고, 그들의 체중 분포가 넓기 때문입니다. 만약 이 사람의 식습관, 운동량 등의 정보를 제공한다면 좀 더 정확한 예측이 가능해질 것입니다.
하지만 동일한 피처를 가지는 사람이 여럿이라면, 당연히 그 편차만큼이 예측의 오차로서 존재할 수밖에 없습니다.
주어진 정보로부터 예측할 수 있는 최대 한계가 존재합니다. 이를 베이즈 에러 (Bayes error) 라고 합니다. 이를 넘어서고 싶다면, 더 많은 정보를 제공해야 합니다. 특정 사실 하나를 완벽하게 결정하기 위해 필요한 최소한의 정보는 무엇일까 (혹은 있을까?)라고 생각해보는 것도 재미있는 문제입니다.
이와는 정 반대로, 한 사람을 완벽하게 식별할 수 있지만, 예측에 사용하기 어려운 정보도 있습니다.
예를들어 한 사람의 주민등록번호를 피처로 사용한다면 어떨까요? 주민등록번호는 한 사람이 가지는 고유한 번호이기에 모든 데이터는 서로 다른 피처를 가집니다. 하지만, 이 정보는 예측에 사용하기엔 적절하지 않습니다.
머신러닝에서 목표는 주어진 데이터를 학습해서 미지의 데이터를 예측하는 것입니다. 하지만 주민등록번호를 안다고 해서, 체중을 유추할 방법은 없습니다. (물론 주민등록번호는 랜덤이 아니고, 번호 안에 생년월일, 성별이 있으니까 나이정보가 포함되어있긴 합니다. 하지만 이점은 그냥 넘어갑시다.) 우리에게 주민등록번호와 체중이 적힌 테이블이 있다면, 주민등록번호를 입력하면 그 테이블에서 체중을 읽어서 줄 순 있지만, 그 테이블에 적히지 않은 사람에 대해선 예측이 불가능합니다.
이런 단순한 사례에선 고유식별번호를 피처로 쓰는것이 무용하다는 것이 자명해보이지만, 의외로 현재 나오고 있는 머신러닝 논문에서도 이런 형태의 피처를 사용하는 경우도 있습니다. 때때로 이런 피처가 유용한 경우도 존재합니다. (하지만 가장 좋은 선택은 아닙니다.)
한가지 예시로 선호도 예측 문제에 대해서 생각해볼 수 있습니다.
사람 M1, M2, M3, M4, M5, M6, M7... 가 있습니다.
그리고 취미 H1, H2, H3, H4, H5, H6, H7... 가 있습니다.
그리고 알고 싶은 것은 특정 사람 M이 특정 취미 H를 좋아하는가 아닌가하는가 입니다. (문제를 단순화하기 위해서 좋다 (Y) 아니다 (N) 의 2진 분류라고 합시다. )
그리고 이때 주어진 데이터는, 각 사람이 응답한 취미의 선호도 데이터인데, 군데군데 비어있습니다.
표로 그린다면, 아래와 같습니다.
H1 | H2 | H3 | H4 | H5 | H6 | H7 | |
M1 | Y | Y | Y | Y | Y | Y | |
M2 | N | N | N | N | N | N | |
M3 | N | N | Y | N | Y | Y | |
M4 | Y | N | Y | Y | Y | Y | N |
M5 | N | Y | Y | Y | Y | Y | |
M6 | N | N | Y | N | Y | Y | N |
이런 데이터를 주었을 때, 빈칸을 채우라면 어떻게 할 수 있을까요?
우리는 사람 M의 특성을 전혀 모릅니다.
하지만 취미사이의 상관성으로부터 대략적으로 추측할 순 있습니다.
M1H6: M1은 다수의 사람이 좋아하므로 M1도 H6을 좋아할 가능성이 높습니다.
M2H3: H3은 다수의 사람이 좋아하지 않으므로하므로 M2도 H3을 좋아하지 않을 가능성이 높습니다.
M3H7: M6을 좋아하는 사람은 M3도 좋아하고, M6을 좋아하지 않는 사람은 M3도 좋아하지 않습니다. 이로부터 H7는 M3을 좋아하지 않을거라고 유추할 수 있습니다.
M5H1의 경우, H1은 H4와 유사한 취미 선호를 가집니다. 그럴 경우M5H1는 M5H4와 유사할 가능성이 높다고 볼 수 있습니다.
이런식으로 예측을 한다면, 예측 정확도가 나쁘지 않을 것입니다.
이런 문제는 사람에게 상품을 추천하는 추천 시스템에서 찾아볼 수 있습니다. 물론 현실의 추천시스템에서 풀어야 할 문제는 데이터가 훨씬 희박하여 빈칸이 많습니다. (sparse)
신약개발에서 주로 하는 drug-target interaction (DTI) 예측도 이와 비슷한 문제에 속합니다.
위 접근방법에는 새로운 사람 M7 혹은 새로운 취미 H8에 대한 예측이 불가능하다는 문제가 있습니다.
사람, 혹은 아이템(취미)에 대한 설명이 전혀 없기 때문입니다.
새로운 경우에 대한 예측을 위해선 사람에 대한 (아이템 선호여부 이외의) 피처와 아이템에 대한 세부적인 피처가 더 필요합니다. 예를 들자면 취미에 대해선 실내활동인가 실외활동인가, 실외활동이라면 축구 농구 같은 구기종목인가 아닌가, 정적인가 동적인가 같은 피처들이 주어질 경우, 사람에 대한 피처라면, 이 사람의 나이 성별, 실내활동을 선호하는지 실외활동을 선호하는지 같은 정보를 더 넣어줄 경우 예측 정확도가 높아질 수 있고, 미지의 데이터에 대해서도 예측이 가능해질 것입니다.
딥러닝으로 넘어오면서 뭐든 많이 넣는게 좋다는 풍조가 생기긴 했지만, 여전히 피처 선택과 가공은 중요한 문제입니다.
예측하고자 하는 항목이 무엇에 의해 결정되는지 안다면 좋은 예측모델을 만드는데 도움이 됩니다.
하지만 내가 입력에 사용한 feature 하나하나가 굳이 예측할 label과 직접적으로 상관성을 가져야 할 필요는 없습니다.
x1과 y, x2과 y 사이엔 별 상관성이 없지만, x1-x2는 y와 상관성이 높을 수도 있으니까요.
'Computer > Machine Learning' 카테고리의 다른 글
인공지능, 언어, 논리, 사고 (0) | 2024.04.17 |
---|---|
아이디어: partially connected neural network (0) | 2022.10.23 |
머신러닝과 딥러닝 (0) | 2021.09.07 |
인공지능과 기계학습 (0) | 2021.08.31 |