Python에서 SVM에 대한 래그 레인지 계수 계산


10

파이썬 으로 전체 SVM 구현 을 작성하려고하는데 Lagrange 계수 계산에 몇 가지 문제가 있습니다.

먼저 알고리즘에서 이해 한 내용을 바꾸어 올바른 길을 가고 있는지 확인하겠습니다.

경우 엑스1,엑스2,...,엑스 은 데이터 세트이고 와이나는{1,1} 의 클래스 레이블입니다 엑스나는. 그런 다음

나는,와이나는(엑스나는+)1

최적화 문제를 해결하기 위해

2

대상와이나는(엑스나는+)1

Lagrange 계수 측면에서 이는 , 및 및 최소화하는 것으로 .B α = ( α 1 , α 2 , . . . α N ) 0 0 L ( α , W , B ) = (1)α=(α1,α2,...α)00

L(α,w,b)=12w2α나는(와이나는(엑스+)1)

이제 및 우리는 그것을 로 제한 조건L

Lw=0w=αiyix나는
L ( α , w , b ) = Q ( α ) = α i1
=0와이나는α나는=0
(α,,)=(α)=α나는12α나는α제이와이나는와이제이엑스나는엑스제이
α나는0  α나는와이나는=0

그래서 파이썬을 사용하여 최적화 문제를 해결하려고하는데 찾을 수있는 유일한 무료 패키지는 cvxopt 입니다.

이 문제를 해결하는 데 도움이 필요합니다. 이에 대한 좋은 예를 찾을 수 없었습니다. 이론을 이해하는 동안 코드로 변환하는 데 어려움을 겪고 있습니다. 프로그래밍 배경에서 더 많은).

어느 시점에서 나는 커널 하지만 코드 에서이 문제를 해결하는 데 어떤 영향이 있는지 잘 모르겠습니다.

(α,,)=(α)=α나는12α나는α제이와이나는와이제이케이(엑스나는,엑스제이)

어떤 도움이라도 대단히 감사하겠습니다. 파이썬에서 이것을 구현하는 방법에 대해서는 정말로 빠져 있습니다. 최적화 문제를 해결할 더 나은 모듈이 있다면 그것에 대해서도 읽어보고 싶습니다.

답변:


4

전에 cvxopt를 사용하여 SVM을 구현했지만 matlab에서는 파이썬이 아닙니다. 그것의 효율성이 당신이 무엇을 사용하고 있는지에 달려 있는지 여부는 확실히 당신의 목적에 봉사 할 것입니다. 가장 효율적인 SVM은 QP 솔버 패키지를 사용하지 않으며 SVM 고유의 일부 최적화를 활용합니다. 많은 사람들이 SMO 스타일 알고리즘을 사용하여 이를 해결합니다.

LibSVM훈련 지원 벡터 머신에 2 차 정보를 사용하여 작업 세트 선택 의 알고리즘을 사용하는 SVM 패키지입니다 . 구현 방법에 관심이 있다면 코드는 오픈 소스입니다. 파이썬 인터페이스도 있습니다.

SVMLight 는 다른 패키지이며 다른 알고리즘을 사용합니다 (참조는 해당 사이트 참조). 또한 오픈 소스이며 파이썬 인터페이스가 있습니다.


유익한 답변 (내 생각보다 우선합니다)에 감사 드리며 scicomp에 오신 것을 환영합니다!
Aron Ahmadia

+1 재미있는 답변과 저는 많은 도움을주는 훌륭한 링크를보기 시작했습니다!
Charles Menguy

2

최적화 문제의 일반적인 형태 는 커널 트릭을 사용하든 선형 커널을 사용하든 관계없이 2 차 프로그램 입니다. 것 같은데 당신이 뭘하려는 건지에 충분하지만, 여기에 다른 pythonauts 함께 행운이 있었다 OpenOpt 뿐만 아니라. cvxopt


Aron, Ipopt Python 래퍼가 고쳐 졌는지 알고 있습니까?
Geoff Oxberry

David Ketcheson의 학생 중 한 명이 OpenOpt (Quasi-Newton 알고리즘과 함께 사용할 수 있음)로 작업했지만 OS X에서 OpenOpt 스택을 가져 오는 데 어려움이있었습니다.
Aron Ahmadia
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.