- 지지벡터머신( SMV: Support Vector Machines)


01. 중매 데이터 세트

02. 데이터를 다루는 어려움

r.data[0] : 남

r.data[1] : 여

특성 : 비선형(nonlinearity), 변수 간 상호작용(interplay)

*matplotlib를 사용해서 그래프를 그렸음. 나중에 그래프 그릴 때 참조

데이터를 그래프로 확인해 보니 남녀는 각자의 나이 법위 내에서 만나는 특성이 보임

- 의사 결정 분류기 사용: 다소 복잡한 관계를 보이는 다중 숫자 입력들을 가진 문제에서 분류를 결정할 때 종종 잘 동작하지 않는다.


03. 기본 선형 분류

범주의 평균점을 계산

(1) 평균점 계산으로 두 점을 찾음 

- 불일치의 평균과 일치의 평균을 찾고 가운데 선을 그어서 일치와 불일치 쌍을 나누도록 한다.

(2) 데이터를 나누는 선을 찾음

(3) 유클리디안 거리를 사용해도 되지만 추후 확장을 고려하여 벡터와 백터 내적을 사용함

벡터 내적 : 가까울 수록 1에 근접, 0이면 수직이기 때문에 가장 다름 -1이면 멀다.

책에서는 각 평균점을 연결한 선과 평균점의 중간점과 분류할 데이터를 연결한 선을 벡터 계산하여 분류할 데이터가 어디에 가까운지 평가한다.

하지만 기본 선형 분류는 완벽히 제대로 된 분류를 하지 못하기 때문에 나중에 커널 트릭을 사용한다.


04. 분류 데이터의 특성

데이터를 분류기에 유용한 숫자로 바꿀 방법이 있어야 한다.

(1) 예 아니오 질문

(2) 관심 목록

(3) 야후 지도를 사용한 거리 계산

- 지오 코딩 API사용

(4) 새로운 데이터 세트 생성


05.  데이터 축척 조정

- 최저값을 0으로 최고값을 1로 그 다른 값을 0과 1사이의 값으로 비율을 조정함


06. 커널 기법 이해

값을 제곱하여 선형으로 분류할 수 있게 만듬

(1) 커널 트릭

- 방사 함수(radial-basis function) : 백터내적과 비슷해서 두 벡터를 받아 값을 리턴한다.

이것은 벡터내적가 달리 선형적이지 않아 더 복잡한 공간으로 매핑될 수 있다.

gamma를 바꿔가면서 적당한 값을 찾아야 한다.


07. 지지벡터머신

두 범주를 가르는 직선을 찾는 다른 경우를 보자.

각 범주의 평균점들과 평균점들을 포함하는 직선

각 범주 내 항목들에 걸친 평행선 중에 가장 멀리 떨어진 선을 구분선으로 선택

*지지벡터 : 선 근처의 점들

*지지벡터 머신 : 지지벡터를 찾아 이들을 이용해서 구분선을 찾는 알고리즘

ex) 얼굴 표현 분류, 침입 탐지, 단백질 구조 예측, 필기체 인식, 지진 발생 시 피해 규모 판단 등


08. LIBSVM 사용

SVM모델을 학습시키고 추정하며 데이터 세트 내 예측을 검증하는 오픈소스 라이브러리

svm_parameter : c - sort margin





Posted by 공놀이나하여보세
,