SVM (Support Vector Machine)에 대해 범주 형 데이터와 연속 형 데이터를 혼합해도 괜찮습니까?


14

나는 같은 데이터 세트를 가지고있다

+--------+------+-------------------+
| income | year |        use        |
+--------+------+-------------------+
|  46328 | 1989 | COMMERCIAL EXEMPT |
|  75469 | 1998 | CONDOMINIUM       |
|  49250 | 1950 | SINGLE FAMILY     |
|  82354 | 2001 | SINGLE FAMILY     |
|  88281 | 1985 | SHOP & HOUSE      |
+--------+------+-------------------+

LIBSVM 형식 벡터 공간에 포함시킵니다.

+1 1:46328 2:1989 3:1
-1 1:75469 2:1998 4:1
+1 1:49250 2:1950 5:1
-1 1:82354 2:2001 5:1
+1 1:88281 2:1985 6:1

기능 지수 :

  • 1은 "소득"입니다
  • 2는 "년"
  • 3은 "사용 / 상업적 면제"입니다
  • 4는 "사용 / CONDOMINIUM"입니다
  • 5는 "사용 / 싱글 패밀리"
  • 6은 "use / SHOP & HOUSE"입니다

이와 같은 연속 형 (연도, 수입) 데이터와 범주 형 (사용) 데이터를 혼합하여 SVM (support vector machine)을 훈련해도 괜찮습니까?


3
"SVM"을 한 번 이상 철자해야합니다.
피터 플로 름-모니카 복원

1
데이터를 확장해야합니다!
Patrick Caldon

답변:


7

예! 그러나 어쩌면 당신이 의미하는 방식이 아닐 수도 있습니다. 내 연구에서 나는 종종 재귀 분할 과 같은 알고리즘을 사용하여 지속적으로 가치를 부여하는 기능에서 범주 기능을 만듭니다 . 필자는 보통이 접근 방식 을 지원 벡터 시스템 의 SVMLight 구현과 함께 사용하지만 LibSVM에서도 사용했습니다. 교육 및 분류 중에 분할 된 범주 형 피처를 피처 벡터의 특정 위치에 할당해야합니다. 그렇지 않으면 모델이 갑자기 종료됩니다.

편집 : 즉,이 작업을 수행하면 벡터의 처음 n 요소를 재귀 분할의 출력과 관련된 이진 값에 할당합니다. 이진 피쳐 모델링에서는 거대 벡터가 0과 1이므로 다른 피쳐가있는 위치를 명시 적으로 나타내지 않는 한 모든 것이 모델과 동일하게 보입니다. 대부분의 SVM 구현이 자체적 으로이 작업을 수행한다고 상상할 수 있지만 이는 아마도 매우 구체적 일 것입니다.하지만 직접 프로그래밍하고 싶다면 생각해야 할 수도 있습니다!


1
고마워 카일 좀 더 구체적으로 할 수 있니? "파티션 된 카테고리 기능을 특정 위치에 지정"이란 무엇입니까?
Seamus Abshere

@SeamusAbshere 문제 없습니다! 이 문제를 해결하기 위해 답변을 편집했습니다!
카일.

나는 libsvm이 당신이 말한 것을 자동으로 수행한다고 들었습니다.
Seamus Abshere

@SeamusAbshere 나는 당신이 옳다고 생각하지만 확실하지 않습니다. 나는 그것에 대해 생각하기 때문에 그것이 어떻게 다른 방식으로 작동 할 수 있는지 잘 모르겠습니다.
카일.

@Kyle 의 답변으로 색을 바꿨으며 , 범주 (Murmur32 해시 사용)와 연속 데이터 모두에 대해이 변환 (임베딩)을 자동으로 수행 하는 Ruby 라이브러리 ( VectorEmbed )를 작성했습니다 . libsvm 형식의 파일을 출력합니다.
Seamus Abshere
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.