2017-02-21 1 views
1

제목이 완전한 의미인지 확실하지 않으므로 미안합니다. 저는 Machine Learning을 처음 사용하고 Scikit 및 의사 결정 트리를 사용하고 있습니다.Python - 의사 결정 트리 및 고유 레이블/기능 처리

내가 원한다. 모든 입력을 받아 클라이언트 ID 인 고유 기능을 포함하고 싶습니다. 이제 클라이언트 ID는 고유하며 의사 결정 트리 분석에서 기능이 일반적인 방식으로 합산 될 수 없습니다. 이제는 트리가 클라이언트 ID를 다른 정수 값으로 가져간 다음 예를 들어 클라이언트 ID가 430 미만인 경로를 분기하는 것은 430 이상의 경로와 다른 경로로 이동한다는 것입니다. 이는 정확하지 않고 원하는 것이 아닙니다. 할 것. 제가하고 싶은 일은 의사 결정 트리가 특정 분야가 그런 방식으로 분석 될 수없고 각 고객이 그들 자신의 가지를 가질 것이라는 것을 이해하는 것입니다. 의사 결정 나무로 가능합니까?

몇 가지 해결 방법이 있습니다. 그 중 하나는 각 클라이언트마다 고유 한 의사 결정 트리를 개발하는 것이지만 악몽 일 수 있습니다. 또 다른 해결 방법을 통해 800 개의 클라이언트가 있다고 가정 해 보겠습니다. 비트 필드가있는 800 개의 기능을 만들 겠지만 이것은 또한 미친 짓입니다.

+0

예, 설명 된 두 번째 옵션 (하나의 핫 인코딩)은 사용자의 설명에 대해 제안하는 것입니다. –

+0

이것은 많은 작업처럼 보입니다. 수천 개의 클라이언트로 확장해야하는 경우 가장 좋습니다 방법? – HMan06

+0

팬더를 사용하고 있기 때문에 get_dummies 함수를 사용하는 것이 가장 좋습니다. – HMan06

답변

3

이것은 기계 학습에서 상당히 일반적인 문제입니다. 기계 학습 기능은 어떤 경우에도 각 인스턴스마다 고유 할 수 없습니다. 직관적으로 말이 되네. 알고리즘은 을 배우지 않습니다.은 해당 기능에서 추정 할 수없는 모든 것을 배웁니다.

당신이 할 수있는 일은 나머지 기능을 통과하기 전에 의사 결정 트리에서 해당 정보를 분리하는 것입니다. 그리고 ID와 예측을 다시 병합하기 만하면됩니다.

어떤 형태로든 ID를 포함시키기 위해 어떤 종류의 조작을 피할 것입니다. 기능은 알고리즘이 결정을 내리기 위해 사용하기로되어있는 것으로 생각됩니다. 사용하고 싶지 않은 정보를 제공하지 마십시오. ID를 기능으로 사용하는 것을 피하려면 ID가 예측하려고하는 것과 아무런 관련이 없으므로 ID를 기능으로 사용하지 않는 것이 좋습니다.

개별 모델을 원한다면 (그리고 각 사용자가 사용할 수있는 충분한 데이터가 있다면) 생각만큼 큰 고통이 아닙니다. Scikit의 model saving feature과이 대답을 saving pickles to MySQL에 사용하면 맞춤 모델을 쉽게 만들고 저장할 수 있습니다. 매우 많은 사용자가없는 경우 개인화 된 의사 결정 트리를 작성하는 데 그리 오래 걸리지 않아야합니다.

+0

음, 여기가 있습니다. 이것은 감독 학습을 기반으로하는 것이 분명하지만 가능하지만 각 클라이언트가 약간 다른 결과를 낼 수있는 방법은 확실하지 않습니다. 원 - 핫 인코딩과 같은 것을 사용하고 클라이언트에게 나쁜 결과를 제공하기 때문에 테스트를해야 할 필요가있는 부분입니다. 그러나, 위의 귀하의 의견을 바탕으로, 나는 이것을 역으로 수행 할 것이고, 나는 뜨거운 것을 사용하지 않을 것이다. 정확성을 측정하기 위해 몇 가지 테스트를 수행하고 작동하지 않으면 다른 옵션을 살펴 보겠습니다. – HMan06

+0

원 핫 인코딩은 좋은 아이디어이지만 사용자 ID는 거의 모든 분야에서 좋은 범주 적 기능입니다. 내가 2 주 전에 (또는 그 이후) StackOverflow에 가입했다면 사용자에 대한 우리의 예측에 대한 통찰력을 제공합니까? 대답은 거의 항상 "아니오"입니다. – ahjohnston25

+0

잡았어, 고마워! – HMan06