[CPON] 클러스터링 문제

아직까지 구체적으로 이해하진 못하지만 한 번 정리해보겠습니다.

CPON에서 성능을 높이기 위한 여러가지 방법이 있겠습니다만, 여러 Classifier로 테스트해봐도 성능 향상율이 별 반 다를 바가 없다면 데이터가 이상한 지 의심하게 됩니다. 아무래도 테스트 상황에서는 샘플이 부적절할 수도 있고, 실제로 bias가 높을 수도 있겠지요. 이럴 때에는 '클러스터링 방법을 바꿔볼까...'라고 생각할 때도 있습니다. 하지만 대부분의 경우에서 무의미하거나 그냥 deep learning하는 게 낫습니다. 좋은 클러스터링이란 목표가 CPON과 충돌하기 때문입니다.

우선, 좋은 클러스터링은 non-linear한 data distribution을 최대한 오차 없이 나누는 것이 목표입니다. 그렇기 때문에 클러스터는 복잡해지고 느려지는데, 정작 성능은 별반 차이가 없습니다. 경계선 주위에 분포한 데이터들은 정말 적은 차이로 인해 잘못 분류되기 십상이기 때문이죠. 데이터의 분류 기준(feature)이 거리-대표적으로 SVM과 kNN-라면 대체로 효과가 없습니다.

그런데 CPON은 SVM과 다르게 class가 맞을 확률인 p-value를 기준으로 분류합니다. 물론 CPON도 거리를 기준으로 분류합니다만, 여기서 한걸음 더 나아가, 거리에 따른 분류 확률을 계산합니다. 이 때 학습 단계에서 인식해둔 데이터의 분포를 바탕으로 '클래스의 데이터 분포 상에서 거리차에 따른 분류 확률'을 계산합니다. 이를 통해 통계적으로 분류할 수 있게 됩니다.

다만 이 때에도 어려운 점이 있습니다. 데이터가 극단적으로 편향되면 확률이 마치 boolean값처럼 0/1로 떨어집니다. 이런 경우는 CPON이 kNN이랑 동일하게 작동합니다. 그러므로 CPON이 제대로된 성능을 내려면 분류 기준을 바꿔서, 데이터의 분포가 어느정도 Gaussian에 가깝도록 만들어줘야 합니다. 그래야 신뢰성 높은 샘플 분포를 얻을 수 있고, 이를 통해 p-value가 올바르게 작동할 수 있습니다.

결국 CPON의 성능 향상을 위해선 좋은 클러스터링보다는 분류 기준을 어떻게 바꾸느냐에 달려있습니다.

이제 여기서 CPON에 적합한 클러스터링을 찾느냐, 아니면 적합한 분류 기준을 찾느냐의 문제로 나눠지지 않을 까 생각합니다. 현재는 적합한 분류 기준을 찾는 방향으로 연구하고 있습니다만, 이는 데이터에 따라 제각각이라서 좀 그렇네요.

15/11/08: 초안 작성

댓글 없음:

댓글 쓰기