Dimensionality Reduction

이전 글에서 LSA가 singular value decomposition을 사용해서 dimensionality reduction을 한다고 하였다. 이번엔 dimensionality reduction 자체에 대해 조금 이야기해 보고자 한다.

Dimensionality reduction은 넓게 보면 현재 고려하는 문제에서 고려의 대상을 줄이는 것을 뜻한다. 앞의 LSA의 경우에는 고려 중인 단어-문서 행렬의 랭크를 떨어뜨려서 문제의 차원을 줄였다. 어찌 되었든 문제의 차원을 떨어뜨리는 것은 여러 의미가 있는데, 역시 가장 쉽게 떠올릴 수 있는 것은 computational cost의 감소이다. 문제의 크기가 감소하면 수행시간도 감소하게 되니 이는 당연한 장점이라고 할 수 있겠다. 하지만 앞선 글에서도 언급했지만, 차원을 줄이는 가장 큰 이유는 computational cost의 감소가 아니다. 문제를 풀면서 차원을 줄이는 가장 큰 이유는, 무엇을 하든, 그 정확도를 높이기 위함이다. 간단히 말해서, 문제의 복잡도를 잘 줄이면, 우리는 그 문제를 더 잘 풀 수 있게 된다.

어떤 문제와 그 문제를 '예측'하는 모델의 복잡도 사이에는 미묘한 관계가 있다. 아주 단순한 모델보다는 조금 더 복잡한 모델이 그 문제의 추이를 잘 예측하지만 이러한 관계는 어느 정도까지만 지속되고 모델이 굉장히 복잡해지면 오히려 실제 테스트에서는 그 예측의 정확도가 떨어지게 된다. 이러한 현상을 overfitting이라 부르는데, 주어진 문제의 차원(복잡성)을 잘 줄이면 이런 overfitting을 회피할 수 있다. Overfitting을 일으키는 요소는 여러 가지가 있지만, 크게 생각하면 필요한 정보가 없는 것과 불필요한 정보가 있는 두 가지 경우를 생각할 수 있다. 차원을 떨어뜨리는 행위는 주어진 training set에서 필연적으로 발생하는 위의 두 가지 경우에 대한 대응책이다. 복잡도를 줄이면서 노이즈를 제거하고, 복잡한 상태에서는 보이지 않던 숨겨진 의미가 드러나도록 하는 역할을 한다.

Next : 2011년 회고 - 월드 오브 워크래프트
Prev : 늘어짐
0 Replies

E-mail은 비공개이며 스팸 확인용으로 사용됩니다. 댓글은 마크업 사용이 불가능하되 링크는 자동으로 링크가 걸리며 줄바꿈을 인식합니다.