Имеет ли смысл использовать часть набора данных для обучения моей модели?
У меня есть набор данных, который был представлен различным покупателям для продажи товара. Цены на товары чувствительны и стандартизированы на ежедневной основе, и поэтому переговоры довольно сложно об их ценах. Я пытаюсь построить классификационную модель, которая должна была понять, будет ли данная цитата принята покупателем или отклонена покупателем.
Я использовал большинство известных мне классификаторов, и XGBClassifier показал лучшие результаты с точностью ~95%. По сути, когда я кормил невидимый набор данных, он мог работать хорошо. Я хотел проверить, насколько чувствительна модель к изменению цен, для этого я синтетически воссоздал расценки с разными ценами, например, если котировка была представлена за 30 долларов, я представил ту же цитату за 5, 10 долларов, 15, 20, 25, 35, 40, 45,..
Я ожидал, что классификатор даст высокие вероятности успеха, поскольку цены были ниже, и низкие вероятности успеха, поскольку цены были выше, но этого не произошло. После дальнейшего изучения я обнаружил, что некоторые особенности затмевают важность цены в модели и, следовательно, должны быть решены. Несмотря на то, что я имел дело с большинством функций, либо удаляя их, либо разрабатывая их, чтобы лучше представлять их, я все еще застрял с некоторыми функциями, которые просто не могу удалить (требования на стороне клиента)
Когда я проверил результаты, оказалось, что модель чувствительна к 30% тестовых данных и показывает многообещающие результаты, но для остальных 70% она вообще не была чувствительной.
Это когда мне пришла в голову мысль кормить только тот сегмент обучающих данных, где чувствительность к цене может быть четко зафиксирована или где успех котировки обратно связан с котируемой ценой. Это привело к потере около 85% данных, однако отношения, которые я хотел, чтобы модель выучила, были зафиксированы на отлично.
Это будет постепенный процесс обучения модели, поэтому каждый раз, когда появляется новый набор данных, я думаю сначала оценить его на предмет чувствительности к цене, а затем ввести только тот сегмент данных для обучения, который чувствителен к цене.
Приведя некоторый контекст к проблеме, некоторые из вопросов, которые у меня были:
Имеет ли смысл отфильтровывать набор данных для сегментов, где демонстрируются те отношения, которые я ищу?
После обучения модели на меньшем сегменте данных и уменьшении числа функций с 21 до 8 точность модели снизилась до ~87%, однако, похоже, она отлично уловила ценовую чувствительность. Я оценил чувствительность к цене, взяв тестовый набор данных и искусственно добавив 10 строк для каждой цитаты с разными ценами, чтобы увидеть, как изменяется вероятность успеха в модели. Это жизнеспособный подход к такой проблеме?
1 ответ
Чтобы ответить на ваш первый вопрос, удаление части набора данных, которая не работает, не является хорошей идеей, потому что тогда ваша модель будет соответствовать данным, которые дают лучшие числа. Это означает, что точность будет выше, но когда представлено что-то, немного отличающееся от набора данных, вероятность адаптации сети ниже.
Чтобы ответить на второй вопрос, кажется, что это хороший подход, но я бы порекомендовал сохранить полный набор данных.