Building Machine Learning System with Python ch.3.1

지도 학습이란 선생님이 알려주는 학습과 같다.
그런데 분류 모델을 학습시키는 라벨이 없다고 생각해보다.
물론, 분류 모델을 학습시키지 못할 수도 있지만, 데이터 자체에서 패턴을 찾을 수가 있다.
즉, 데이터 자체가 나타낸다.

이번에는 군집화를 활용해야한다.
이 기법은 유사한 아이템을 같은 군집에 넣고 유사하지 않은 아이템을 다른 군집에 넣는다.


게시물 관련도 측정

원시 텍스트를 통해 군집화해야한다. 
하지만 원시 텍스트는 아무 쓸모 없다.
그래서 원시 텍스트를 의미 있는 수치로 변환해 군집화 같은 기계학습 알고리즘에 적용할 수 있다. 

하지 말아야 하는 방법

텍스트 유사도 측정 중 하나로 편집 거리인 레벤시타인 거리가 있다.
'How to format my hard disk','Hard disk format problems'에 대해 편집 거리를 5로 구할 수 있다.
How,to,format,my 를 삭제하고 끝에다 format,problems를 넣는다.
이러한 거리는 단어의 재배치를 고려할 정도로 충분히 견고해 보이지 않는다.


어떻게 해야 하는가

편집 거리보다 좀 더 강건한 방법은 단어 주머니 접근법이다. 
단어 주머니는 단어의 순서를 무시하고 단순히 단어 빈도를 사용한다.
각 단어의 출현을 세어 벡터로 나타낸다. 이 단계를 벡터화라고 한다.
다음과 같은 과정을 따라 군집화 과정에서 속성 벡터를 차후 사용할 수 있다.

1. 각 게시물에서 핵심 속성을 추출하고 벡터로 속성을 저장한다.
2. 벡터에 대해 군집화를 계산한다. 
3. 질문 게시물에 대해 군집을 결정한다. 
4. 이 군집에서 질문 게시물에 유사한 게시물을 뽑아낸다. 이는 다양성을 증가시킨다.

이 과정을 수행하기 전에 작업할 데이터가 먼저 필요하다.


전처리 : 공통 단어의 유사한 개수로서 측정된 유사도

원시 텍스트를 단어 주머니로 변환해야한다. 
scikit-learn 라이브러리는 countvectorizer 은 이와 같은 작업을 매우 효율적으로 해준다.


이 책은 우선 여기까지 해야할 것 같다.
패턴 인식과 컴퓨터 비전 쪽으로 나아가려 한다.
패턴 인식과 컴퓨터 비전도 기반은 머신 러닝이기 때문에
지금 방향의 연장선이라 생각한다.
그리고 텐서 플로우로 딥러닝 공부도 해야겠다.

댓글

이 블로그의 인기 게시물

윈도우 설치에서 파티션 설정 오류(NTFS)

[exploit writing] 1_스택 기반 오버플로우 (1) First

하둡 설치 오류 정리