답변:
크리스토퍼의 답변은 매우 합리적입니다. 특히 트리 기반 방법은 이러한 기능이 차별적 인 기능으로 분기되므로 이러한 종류의 데이터와 잘 작동합니다. 특정 응용 프로그램을 모른 채 말하기는 어렵지만 일반적으로 일부 기능이 다른 기능보다 훨씬 더 차별적이라고 생각되는 경우 차원 정리 기법을 사용하여 약간 정리할 수 있습니다.
또한 차원 축소 기술을 사용하는 경우 피쳐 벡터에 대해 약간 더 강력한 형식 (일반적으로 혼합 데이터 유형 대신 직선 숫자 벡터가 됨)을 얻게되므로 다른 방법을 활용할 수 있습니다. 수작업 엔지니어링 기능을 살펴볼 수도 있습니다. 수작업으로 설계된 기능 Random Forest
을 사용하면 대부분의 작업에서 최신 기술에 매우 가깝습니다.
데이터에 대해 더 많이 알지 못하면이 질문에 대답하기가 어렵습니다. 즉, 나는 다음과 같은 조언을 제공 할 것입니다.
대부분의 머신 러닝 기술은 혼합 유형 데이터를 처리 할 수 있습니다. 트리 기반 방법 (예 : AdaBoost 및 Random Forest)은이 유형의 데이터에 적합합니다. 더 중요한 문제는 실제로 치수에 관한 것입니다.
그 차원을 줄이기 위해 무언가를 제안합니다. 예를 들어, 데이터를 가장 잘 구분하는 단어 나 구를 찾고 다른 단어는 버립니다 (참고 : 트리 기반 방법은 자동으로 수행합니다).
데이터의 특성과 관련하여 제공 한 정보는 거의 없으므로 다음 방법을 따르는 것이 좋습니다.
텍스트 데이터를 카테고리로 변환하십시오. 범주에 포함해야하는 정보의 양에 대한 다른 대안을 시도 할 수 있지만 각 변수에 대해 특정 범주가 있어야합니다. 예를 들어, 나는 사람들이 출근하는 바람직한 방법에 관한 설문 조사 텍스트 필드에서 나온 변수를 가정합니다.
처음에는 비슷한 의미의 답변이 같은 방식으로 작성되고 동일한 범주에 속해야합니다 (예 : "자전거", "자전거", "자전거")는 모두 같은 의미를 갖습니다. 그런 다음 덜 상세한 범주 (예 : "트램", "메트로"및 "버스"를 "대중 교통 수단"에 병합) 또는 더 많은 범주 (예 : "보행", "조깅", "사이클링")를 " 찾고자하는 것에 따라 신체 활동 ").
데이터 세트에 몇 가지 다른 조합을 넣을 수 있으며 다음 단계에서 분석에 사용할 조합을 결정합니다. 정렬 된 변수에서 텍스트 데이터를 "번역"할 수있는 경우이를 수행해야합니다 (예 : "작은, 중간, 높음"인 경우 "1,2,3"으로 변환).
범주 형 변수 (서 수가 아닌)를 더미 (이진) 변수로 바꿉니다. 분류 / 기능 선택 알고리즘의 대부분은 자동으로이 작업을 수행하지만 사용자가 선택한 알고리즘과 동일한 지 확인하십시오. 이 시점에서 데이터의 차원이 상당히 커질 것이지만 다음 단계에서 처리 될 것입니다.
데이터에 기능 선택 / 차원 축소 기술을 적용하십시오. 이러한 기술에 대한 유용한 검토는 여기에서 찾을 수 있습니다 . Python을 사용하는 경우 sklearn 도구는 많은 옵션을 제공합니다 (자세한 내용은 여기 참조 ). 다중 공선 성을 고려한 기술을 사용해야합니다. Principal Component Analysis 또는 트리 기반 알고리즘을 시도합니다.
데이터를 분류하기 위해 Decision Tree Classifier ( sklearn을 통해 사용 가능 )를 사용합니다. 또한 기능에 대한 기능 선택 설정 중요도 가중치를 수행합니다. 옵션에 따라 생성 된 트리의 세부 수준을 설정할 수 있습니다 (예 : max_depth, min_samples_split) 과적 합을 피하기 위해 교차 유효성에 따라 세부 수준을 조정하십시오.
Principal Component Analysis
또는Non-Negative Matrix Factorization
변수 수를 줄이고 희소 데이터를 풍부하게하며 모든 변수를 정량적으로 변환합니다. 또한, 차원 축소 모델의 품질을 평가하는 질문 작성자는 텍스트 변수의 유용성을 추정 할 수 있습니다.