9

나는 문제 해결을 위해 최선의 접근법에 대한 전문가의 조언을 원한다. 몇 가지 기계 학습, 신경 네트워크 및 그런 것들을 조사했습니다. 나는 weka, 일종의 baesian solution을 조사했습니다. R .. 몇 가지 다른 것들. 그래도 어떻게 진행해야할지 모르겠다. 여기 내 문제가있다.내가 생각하는 것에 대한 최선의 접근법은 기계 학습 문제이다.

나는 많은 이벤트 컬렉션을 가지고있다. 결국 약 100,000 정도가 될 것이다. 각 이벤트는 몇 가지 (30-50) 개의 독립 변수와 하나의 종속 변수로 구성됩니다. 종속 변수의 값을 결정할 때 일부 독립 변수가 다른 변수보다 중요합니다. 그리고이 사건들은 시간과 관련이 있습니다. 오늘날 일어나는 일들은 10 년 전 발생한 사건보다 더 중요합니다.

일종의 학습 엔진에 이벤트를 공급하고 종속 변수를 예측할 수 있기를 바랍니다. 그런 다음,이 이벤트 (그리고 전에 따라 왔던 모든 이벤트)에 대한 종속 변수에 대한 실제 응답을 알고 있으므로, 추후 추측을 훈련시켜야합니다.

프로그래밍 방향에 대한 아이디어가 있으면 연구를 수행하고 아이디어를 코드로 변환하는 방법을 파악할 수 있습니다. 그러나 내 배경은 병렬 프로그래밍이며 이것과 같은 것이 아니다. 그래서 이것에 대한 몇 가지 제안과 지침을 갖고 싶다.

감사합니다.

편집 : 다음은 내가 해결하려고하는 문제에 대한 세부 정보입니다. 가격 문제입니다. 임의의 만화책 가격을 예측하고 싶다고 가정 해 봅시다. 가격이 내가 걱정하는 유일한 것입니다. 그러나 많은 독립 변수가 있습니다. 그것은 슈퍼맨 만화인가, 헬로 키티 만화인가? 몇 살입니까? 조건은 무엇입니까? 잠시 훈련을 마치고 내가 생각할 수도있는 만화책에 대한 정보를 제공하고 만화책에 대해 합리적으로 기대되는 가치를 부여 할 수 있기를 바랍니다. 승인. 따라서 만화책은 가짜 일 수 있습니다. 그러나 당신은 일반적인 아이디어를 얻습니다. 지금까지의 답변에서 저는 Support vector machines와 Naive Bayes에 대한 연구를하고 있습니다. 지금까지의 모든 도움에 감사드립니다.

+1

태그 "classification"과 "regression"은 상호 배타적이라고 생각합니다. 그것은 "분류"또는 "회귀"중 하나입니다. 둘 다있을 수는 없습니다. –

답변

1

일부 분류 된 데이터 (정답과 짝을 이루는 샘플 문제)가있는 경우 K-Nearest-Neighbor 및 Perceptron과 같은 간단한 알고리즘을 학습하고 의미가있는 것이 나오는 지 확인하십시오. 당신이 그것을 간단히 또는 전부 풀 수 있는지 알 때까지는 최적으로 해결하려고 노력하지 마십시오.

분류 된 데이터가 없거나 많지 않은 경우 감독되지 않은 학습 알고리즘을 연구하십시오.

8

당신이 Support Vector Machines의 후보자 인 것 같습니다.

go 얻으십시오 libsvm. 그들이 배포하는 "SVM 분류에 대한 실질적인 지침"을 읽으십시오. 적절한 커널 매개 변수를 검색 할 자신의 SVM 규모의 유틸리티를 사용

dv1 1:iv1_1 2:iv1_2 3:iv1_3 4:iv1_4 ... 
dv2 1:iv2_1 2:iv2_2 3:iv2_3 4:iv2_4 ... 

실행을 한 다음 자신의 grid.py 스크립트를 사용

기본적으로, 당신은 당신의 사건을, 그리고처럼 형식을거야 . 학습 알고리즘은 다양한 변수의 중요성을 파악할 수 있어야하지만, 가중치를 부여 할 수도 있습니다. 시간이 유용하다고 생각한다면, 훈련 알고리즘이 사용할 다른 독립 변수 (기능)로 시간을 추가하십시오.

libsvm에서 원하는 정확도를 얻지 못하면 SVMlight까지 올라가도록하십시오. 오직 약간만 다루기가 더 힘들며 훨씬 더 많은 옵션이 있습니다.

Bishop's Pattern Recognition and Machine Learning은 아마도 libsvm 및 SVMlight가 실제로 데이터로 수행하는 작업에 대한 세부 정보를 찾는 첫 번째 교과서 일 것입니다.

+0

좋은 아이디어, LIBSVM은 최고입니다. –

1

모든 종류의 분류기가이 문제에 대해 작동해야하는 것처럼 들리지만 인스턴스 (이벤트)에 가장 적합한 클래스 (종속 변수)를 찾습니다. 간단한 출발점은 Naive Bayes 분류 일 수 있습니다.

1

이것은 확실히 기계 학습 문제입니다. Weka는 Java를 알고 멋진 GPL 라이브러리를 원한다면 훌륭한 선택입니다. 분류기를 선택하고 접착제를 쓰는 것뿐입니다. R은 아마 꽤 느리기 때문에 그 많은 인스턴스 (이벤트라고 부르는대로)를 잘라내지 않을 것입니다. 게다가, R에서는 수학 학습 라이브러리를 찾거나 쓰는 것이 필요하다. 통계 언어이기 때문에 쉬운 일이다.

귀하의 피쳐 (독립 변수)가 조건부로 독립형 (종속 변수가 주어지면 독립형)이라는 생각을하는 경우, 순진한 베이 즈는 빠르고, 해석하기 쉽고, 정확하고 구현하기 쉽기 때문에 완벽한 분류 자입니다. 그러나 100,000 개의 인스턴스와 30-50 개의 기능 만 있으면 데이터의 많은 종속 구조를 캡처하는 상당히 복잡한 분류 체계를 구현할 수 있습니다. 최상의 베팅은 아마도 지원 벡터 머신 (Weka의 SMO)이거나 무작위 포리스트 일 것입니다 (예, 바보 같은 이름이지만 무작위 포리스트 캐치를 도왔습니다.) 심지어 분류기의 쉬운 해석 기능을 원한다면 약간의 정확성을 요하는 비용, 곧바로 J48 결정 트리가 작동 할 수도 있습니다. 신경망에 대해서는 권하고 싶습니다. SVM과 임의의 포리스트보다 실제로 느리고 일반적으로 더 잘 작동하지 않기 때문에 좋습니다.

1

Programming Collective Intelligence에는 노트북을위한 가격 예측기의 소스 코드가 들어있는 작업 예제가 있는데, 이는 아마도 당신에게 좋은 출발점이 될 것입니다.

1

SVM은 종종 사용 가능한 최상의 분류 자입니다. 그것은 모두 귀하의 문제와 귀하의 데이터에 달려 있습니다. 일부 문제에 대해서는 다른 기계 학습 알고리즘이 더 좋을 수도 있습니다. 신경 네트워크 (특히 반복적 인 신경 네트워크)가 해결하는 것이 더 낫다는 문제점을 보았습니다. 이 질문에 대한 정답은 매우 상황에 따라 다르므로 dsimcha와 Jay의 의견에 동의합니다. SVM은 시작하기에 적합한 장소입니다.

1

귀하의 문제는 regression 문제라고 생각합니다. 분류 문제는 아닙니다. 주된 차이점 : 분류에서 우리는 불연속 변수의 값을 배우려고 노력하고 회귀에서는 연속적인 값의 가치를 배우려고합니다. 관련 기술은 유사 할 수 있지만 세부 사항은 다릅니다. Linear Regression은 대부분의 사람들이 먼저 시도합니다. 선형 회귀가 트릭을하지 않는다면 다른 많은 회귀 기법이 있습니다.

1

30-50 개의 독립 변수가 있고 나머지는 더 중요하다고 언급했습니다. 따라서 과거 데이터 (또는 교육 세트)를 가정하면 PCA (Principal Componenta Analysis) 또는 기타 차원 감소 방법을 사용하여 독립 변수의 수를 줄일 수 있습니다. 물론이 단계는 선택 사항입니다. 상황에 따라 모든 변수를 유지하면서 더 나은 결과를 얻을 수 있지만 관련성에 따라 각 변수에 가중치를 추가하십시오. 여기서 PCA는 변수의 "관련성"을 계산하는 데 도움을 줄 수 있습니다.

또한 최근에 발생한 이벤트가 더 중요하다고 언급했습니다. 이 경우 최근 이벤트를 더 높게, 이전 이벤트를 낮출 수 있습니다. 이벤트의 중요성은 시간에 따라 선형 적으로 증가 할 필요가 없습니다. 기하 급수적으로 커지면 더 많은 의미가있을 수 있으므로 여기서 숫자를 가지고 놀 수 있습니다. 또는 교육 자료가 부족하지 않은 경우에는 너무 오래된 데이터를 삭제할 수도 있습니다.

Yuval F와 마찬가지로 이것은 분류 문제보다는 회귀 문제와 유사 해 보입니다. 따라서 SVM (Support Vector Machine)의 회귀 버전 인 SVR (Support Vector Regression)을 시도해 볼 수 있습니다. 당신이 시도 할 수

다른 물건은 : 당신이 당신의 독립 변수의 값의 범위를 확장하는 방법과 주변

  1. 플레이. 보통 [-1 ... 1] 또는 [0 ... 1]이라고 말하십시오. 그러나 다른 범위를 시도하여 도움이되는지 확인할 수 있습니다. 때로는 그렇게합니다. 대부분 그들은 그렇지 않습니다.
  2. 더 낮은 차원의 "숨겨진"특성 벡터가 있다고 생각하면 (예 : N < < 30) 본질적으로 비선형이므로 비선형 차원 감소가 필요합니다. 커널 PCA 또는 더 최근에 매니 폴드 조각을 읽을 수 있습니다.
1

당신이 설명한 것은 고전적인 분류 문제입니다. 그리고 내 의견으로는 왜 Weka와 같은 도구가있을 때 새로운 알고리즘을 코딩할까요? 내가 너라면, 10 배 (또는 k 배)의 교차 검증을 사용하여 감독 학습 알고리즘 목록을 실행하겠다. (나는 유청 사람들이 분류되지 않은 학습을 먼저 제안하고 있다는 것을 완전히 이해하지 못한다. , 내가 기억한다면 Weka의 기본 설정인데, 어떤 결과를 얻었는지보십시오! 내가 시도 할 것 :

-Neural 네츠
-SVMs
-Decision 나무를 (이 나를 위해 정말 잘 작동 나는 비슷한 문제 일 때)
는 의사 결정 나무 -Boosting/그루터기
다른 은요 !

Weka는 일을 매우 쉽고 실제로 유용한 정보를 얻을 수 있습니다. 클래스를 학습하는 기계를 가져 왔고 위의 알고리즘을 사용하여 수행하려는 작업을 정확하게 수행 했으므로 현재 위치를 알고 있습니다. 나를 위해 결정 그루터기로 부스트는 놀라 울 정도로 잘 작동했습니다. (BTW, 부스터는 실제로 메타 알고리즘이며 일반적으로 결과를 향상시키기 위해 대부분의 감독 된 학습 algs에 적용될 수 있습니다.) IDS 또는 유사 품을 사용하는 경우 의사 결정 트리를 사용하여 좋은 일을하는 것이 좋습니다 데이터가 얼마나 다른지, 즉 어떤 속성이 분류를 가장 빠르게 결정하는지에 따라 분할 할 속성을 선택합니다. 따라서 알고리즘을 실행 한 후 트리를 확인하고 만화의 어떤 속성이 가격을 가장 강력하게 결정하는지 확인하십시오.이 값은 트리의 루트 여야합니다.

편집 : 나는 Yuval이 옳다고 생각합니다. 분류에 대한 가격 가치를 이산화하는 문제에주의를 기울이지 않았습니다. 그러나 Weka에서 회귀 분석을 사용할 수 있는지 여부는 알지 못하지만 분류 기술을이 문제에 적용하기는 쉽습니다. 만화의 가격 범위를 나타내는 가격 클래스를 만들어서 만화의 가격을 나타내는 이산 숫자 (예 : 1에서 10까지)를 가질 수 있어야합니다. 그런 다음 쉽게 분류를 실행할 수 있습니다.

관련 문제