Я хотел бы знать, каков наилучший способ классификации набора данных, состоящего из смешанных типов атрибутов, например, текстовых и числовых. Я знаю, что могу преобразовать текст в булеву, но словарь разнообразен и данные становятся слишком редкими. Я также пытался классифицировать типы атрибутов отдельно и объединять результаты с помощью методов метаобучения, но это не сработало.
источник
Principal Component Analysis
илиNon-Negative Matrix Factorization
уменьшит количество переменных, обогатит разреженные данные и преобразует все переменные в количественные. Кроме того, оценивая качество модели уменьшения размерности, автор вопроса может оценить полезность текстовых переменных.Трудно ответить на этот вопрос, не зная больше о данных. Тем не менее, я бы предложил следующий совет:
Большинство методов машинного обучения могут обрабатывать данные смешанного типа. Древовидные методы (такие как AdaBoost и Случайные леса) хорошо работают с данными этого типа. Более важной проблемой на самом деле является размерность, о которой вы правы.
Я хотел бы предложить вам сделать что-то, чтобы уменьшить эту размерность. Например, ищите слова или фразы, которые лучше всего разделяют данные, и отбрасывайте другие слова (примечание: древовидные методы делают это автоматически).
источник
С учетом небольшой информации, предоставленной вами относительно характера ваших данных, я бы посоветовал вам придерживаться следующего подхода:
Преобразование текстовых данных в категории. Вы можете попробовать разные варианты количества информации, которую должны содержать категории, но для каждой переменной должны существовать определенные категории. В качестве примера я возьму переменную, которая пришла из текстового поля анкеты опроса относительно предпочтительного способа получения людьми работы.
Во-первых, нам нужно убедиться, что ответы с одинаковым значением написаны одинаково и относятся к одной и той же категории (например, «на велосипеде», «на велосипеде», «на велосипеде» имеют одинаковое значение). Затем вы можете попробовать еще больше объединить в менее подробные категории (например, объединить «трамвай», «метро» и «автобус» в «Средства общественного транспорта») или даже больше (например, «Прогулка», «Бег», «Велоспорт» в »). Физическая активность ») в зависимости от того, что вы пытаетесь выяснить.
Вы даже можете поместить несколько различных комбинаций в свой набор данных, и тогда последующие шаги определят, какие из них будут использоваться для анализа. В случаях, когда текстовые данные могут быть «переведены» в упорядоченные переменные, убедитесь, что вы делаете это (например, если у вас есть «small, medium, high», преобразуйте их в «1,2,3»).
Превратите ваши категориальные переменные (не порядковые) в фиктивные (двоичные) переменные. Большинство алгоритмов классификации / выбора признаков делают это автоматически, но убедитесь, что это именно тот вариант, который вы выбрали. Я понимаю, что размерность данных на этом этапе станет довольно большой, но это будет сделано на следующем этапе.
Примените технику выбора / уменьшения размерности к вашим данным. Вы можете найти полезный обзор таких методов здесь . Если вы используете Python, инструменты sklearn предоставляют вам множество опций (подробнее см. Здесь ). Убедитесь, что вы используете технику, которая также учитывает мультиколлинеарность. Я бы попробовал Анализ основных компонентов или алгоритм на основе дерева.
Для классификации данных я бы выбрал Decision Tree Classifier (также доступен через sklearn ). Он также выполняет выбор характеристик, определяя вес важности для объектов. Вы можете установить уровень детализации в сгенерированном дереве в зависимости от ваших параметров (например, max_depth, min_samples_split). Обязательно настройте уровень детализации на основе перекрестной проверки, чтобы избежать перегрузки.
источник