Как измерить разницу между объектами в кадре данных? - PullRequest
0 голосов
/ 24 января 2019

У меня есть фрейм данных с примерно 20000 строками и 98 объектами (все объекты являются числовыми) и целевой объект с двоичными значениями: 0 и 1. В основном это две группы населения (первая группа с целевым значением 1 - 50%-, а второй с целевым значением 0 -50% - сбалансированные данные).В одной из задач классификации я попытался предсказать целевое значение с учетом данных.Итак, я внедрил контролируемый алгоритм обучения (например, SVM), чтобы предсказать целевое значение, и мог получить очень хороший результат с точностью около 0,95.Этот результат дает мне понять, что между функциями есть существенная разница.Итак, на следующем шаге я должен знать, каковы важные характеристики , которые сделали это различие, и каков наилучший способ количественно оценить это различие в характеристиках между этими двумя группами населения.Есть идеи?

Ответы [ 3 ]

0 голосов
/ 24 января 2019

Помимо использования коэффициентов векторов поддержки из вашей модели, вы можете попробовать построить другие модели.

Подход дерева решений определенно покажет вам, какие входные функции разделяют данные - те, что ближе к корню, являются более важными для некоторого определения важности.

Если вы попробуете технику сокращения возможностей, такую ​​как PCA, и пересоздаете свою модель, коэффициенты компонентов здесь подскажут, какой вклад вносит наибольший вклад.

Или вы можете быть полностью головорезом и создавать множество моделей, не используя некоторые функции и узнавая, какие из них лучше.

Или вы можете быть боковым и подумать, что же такого отличного в тех немногих точках, которые ваша модель не может точно классифицировать.

0 голосов
/ 25 января 2019

Можете ли вы попробовать использовать KS-test для своих функций? например, функция 1, разделенная по классу. тогда вы получите две группы. Затем проверьте, пришли ли они из другого дистрибутива, или просто запишите значение p.

когда у вас есть все результаты теста или значение p, создайте другую модель с образцами, полученными с другим распределением / очень низким значением p. посмотрите, будет ли новая модель лучше или похожа.

не уверен, достигнет ли это чего-нибудь. хотел прокомментировать, но не смог этого сделать.

0 голосов
/ 24 января 2019

Чтобы ранжировать ваши функции по важности, вы можете использовать Weka с его мощным инструментарием для выбора функций. См. этот блог для получения дополнительной информации и примеров. Кстати, у Weka также есть реализация SVM. Как только вы определили важные функции, вы можете визуализировать, насколько они различны между двумя классами, например, нанося на график их распределения для классов. Для этого у Matplotlib есть инструменты типа hist или boxplot.

Если у вас есть SVM с линейным ядром, вы можете использовать его коэффициенты в качестве весов прямого решения для входных объектов:

...