Предположим, я хочу узнать классификатор, который принимает вектор чисел в качестве входных данных и дает метку класса в качестве выходных данных. Мои тренировочные данные состоят из большого количества пар ввода-вывода.
Тем не менее, когда я прихожу к тестированию на некоторых новых данных, эти данные, как правило, только частично завершены. Например, если входной вектор имеет длину 100, только 30 из элементов могут иметь заданные значения, а остальные являются «неизвестными».
В качестве примера этого рассмотрим распознавание изображений, когда известно, что часть изображения закрыта. Или рассмотрите классификацию в общем смысле, когда известно, что часть данных повреждена. Во всех случаях я точно знаю, какие элементы в векторе данных являются неизвестными частями.
Мне интересно, как я могу узнать классификатор, который будет работать для такого рода данных? Я мог бы просто установить «неизвестные» элементы на случайное число, но, учитывая, что часто неизвестных элементов больше, чем известных, это не похоже на хорошее решение. Или я мог бы произвольно изменить элементы в обучающих данных на «неизвестные» и тренироваться с этими, а не с полными данными, но это может потребовать исчерпывающей выборки всех комбинаций известных и неизвестных элементов.
В частности, я думаю о нейронных сетях, но я открыт для других классификаторов.
Любые идеи? Благодаря!
Ответы:
Я думаю, что есть разумный способ заставить его работать с нейронными сетями.
Я не видел, чтобы это делалось раньше, но это было бы очень похоже на выполнение Dropout (хорошо известный метод регуляризации в нейронных сетях) в ваших входных нейронах вместо скрытых нейронов. Я не думаю, что это хорошая идея делать это в целом, но если вы вынуждены (как ваш случай), по крайней мере, это достаточно близко теоретически к тому, что, как известно, работает.
источник
Я думаю, что есть несколько вариантов, которые работают с любым классификатором:
Кроме того, вы можете использовать основанные на дереве классификаторы (например, случайные леса), и если дерево должно оценить разбиение по отсутствующей функции, оно может просто передать данные в оба дочерних узла.
источник