Стратегии присвоения конкретных весов тренировочным экземплярам - PullRequest
0 голосов
/ 09 июля 2019

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

В частности, я разрабатываю свои модели машинного обучения на python с использованием библиотек Sklearn.

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

Другая стратегия, которую я нашел, но, кажется, не помогает в этих условиях:

  • Стратегии, нацеленные на предоставление весов для каждого класса. Эта стратегия по умолчанию широко используется во многих библиотеках, таких как Sklearn. Тем не менее, это обобщает идею на уровне класса и не помогает мне сосредоточиться на конкретных случаях

Я искал несколько стратегий, которые могли бы помочь предоставить конкретные веса для отдельных экземпляров, но большинство из них были сосредоточены на уровне класса, а не на уровне уровня экземпляра.

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

Интересно, есть ли у кого-нибудь информация о других подходах, которые могут помочь с этой проблемой

1 Ответ

1 голос
/ 09 июля 2019

Я искал несколько стратегий, которые могли бы помочь в определении конкретных весов для отдельных экземпляров, но большинство из них были сосредоточены на уровне класса, а не на уровне уровня экземпляра.

Это не точно;большинство классификаторов scikit-learn предоставляют аргумент sample_weight в своих fit методах, что и делает именно это.Например, вот документация справочник по логистической регрессии:

sample_weight: в виде массива, форма (n_samples,) необязательно

Массив весов, присвоенных отдельным выборкам.Если не указано иное, каждому образцу присваивается удельный вес.

Аналогичные аргументы существуют для большинства классификаторов scikit-learn, например, деревья решений , случайные леса и т. Д.даже для линейная регрессия (не классификатор).Обязательно проверьте пример SVM: взвешенные выборки в документации.

Ситуация примерно аналогична для других платформ;см., например, собственный ответ в Есть ли в PySpark параметр, эквивалентный sample_weight образца scikit-learn?

Более того, scikit-learn также предоставляет служебную функцию для вычисления sample_weight в случаяхнесбалансированные наборы данных: sklearn.utils.class_weight.compute_sample_weight

...