Hard ML Problems

해당 섹션에서는 ML에서 특히 다루기 어려운 문제들에 대해 이야기합니다.

Clustering (클러스터링 = 군집화)

비지도 학습에서 각 클러스터는 무엇을 의미할까요? 예를 들어, 우리가 만든 모델이 아래의 사진에서 파란 클러스터내에 특정 유저가 포함된다고 이야기한다면, 결국 우리는 파란 클러스터 자체가 무엇을 의미하는지를 알아야할 필요가 있습니다.

Image of scatterplot with 4 clusters
circled

종종 클러스터에 따라 액션을 취해야 할 수 있습니다. 예를 들어, Google Photo에서는 동일한 사람들이 모인 사진들을 동일한 사진 그룹에 모아놓습니다. 그 밖의 경우, 클러스터에 기반하여 어떤 액션을 수행하는 것은 도전적인 일이 될 겁니다. 클러스터에 의미를 부여하려고 할 수는 있지만, 생각보다 쉽지는 않습니다. 왜냐하면 모델이 직관적인 기준에 따라 그룹화되어 있지 않을 수도 있기 때문입니다.

이에 대한 한가지 대안은 클러스터링을 하기 이전에 미리 일부 표본들에 대해 label(레이블)을 수행한 다음 해당 레이블들을 전체 클러스터에 전파하는 것입니다. 예를 들어, 레이블이 X인 모든 항목이 하나의 클러스터에 모여있다면, 해당 레이블 X를 다른 예시들에도 전파시켜볼 수 있습니다.

Anomaly Detection

Image of a scatterplot with 2 parallel lines indicating a threshold that has
points outside of it which are to be considered anomalies.

종종, 사람들은 이상징후를 식별하기 위해서 ML을 사용하려고 합니다. 관건은 "어떤 것이 이상치인지" 어떻게 결정하느냐 입니다. 한 가지 선택지는 휴리스틱을 정의하고 이를 이상치의 레이블링에 사용하는 것입니다. 그러나, 이 휴리스틱을 정의하였을 때, 이를 학습 단계에서 사용하게 될 경우 애초에 ML은 해당 휴리스틱을 능가할 수 없는 상황에 처하기 때문에, 생산 단계에서 해당 휴리스틱을 사용하는 것이 좋습니다.

참고 : 떄때로 고정밀 저호출 휴리스틱(High-precision Low-recall heuristic)을 정의한 다음, 준지도적인(semi-superviesed) 방식을 사용해 모델이 시드 예측 집합(seed set of predictions)에서 성장하게끔 훈련시켜 레이블이 없는 더 큰 데이터 집합을 분류할 수 있게끔 할 수도 있습니다. (아직은 뭔 소린지 모르겠다.)

만약, 휴리스틱이 충분히 복잡하다면 ML을 통해 이를 대체하는 것을 고려해볼 수도 있습니다. 그러나 일반적으로 휴리스틱을 다시 정의하는 것만큼 모델은 쉽게 수정하기 어렵기 때문에 주의할 필요가 있습니다.

Causation

ML은 둘 이상의 상호 관계 및 연관성에 대해 식별할 수 있습니다. 반면, 인과 관게를 판단하는 것은 훨씬 어려운 일입니다. 다시 말해, **무슨 일들이 일어났는가?**에 대해서는 알기 쉽지만, **왜 그것이 일어났는가?**에 대해서는 훨씬 판악하기 어렵습니다.

예를 들어, 소비자들이 어떤 책들을 구매한 것은, 바로 지난 주에 해당 책에 대한 긍정적인 리뷰가 있었기 때문일까? 아니면 그 리뷰는 전혀 상관 없는 것이었을까?

오직 관측 데이터를 통해서는 인과 관계에 대해 파악할 수 없습니다. 위 사례처럼, 지난 일들에 대한 기록만 보고서는 지난 주의 리뷰가 구매를 유발했는지의 여부를 판단할 수 없습니다. 이를 파악하려면, 리뷰를 보지 못한 이용자와, 리뷰를 본 이용자 간을 비교하는 실험이 추가적으로 필요합니다. 결국, 일반적으로 어떤 일들의 인과 관계를 확인하려면 추가적인 실험이 필요하고, 이는 순수 관측 데이터를 통해서는 불가능한 일입니다.

No Existing Data

앞서 언급한 것처럼, 모델을 훈련시킬 데이터가 없다면, ML은 여러분에게 아무런 도움을 줄 수가 없습니다. 데이터가 없다면, 단순한 휴리스틱 기반의 규칙 기반 시스템을 사용하세요. 많은 신규 서비스들은 휴리스틱 기반의 시스템으로 시작하여, 이용자들이 해당 서비스와 상호작용하기 시작하면서부터 새로운 훈련 데이터들을 얻습니다. 일단 훈련 데이터들이 갖추어지기 시작한다면, 그 속에서 패턴을 찾으려고 노력하세요. 패턴이 존재하지 않거나, 자질구레한 패턴만이 존재한다면, ML은 아마 별다른 쓸모가 없을 겁니다. 결국, 수많은 패턴이 존재하고, 그 속에서 정확한 예측을 하는 것이 중요한 상황 속에서야 ML은 비로소 올바른 접근이 될 겁니다.