Одинаковые и разные целевые значения для каждого образца для регрессии в машинном обучении - PullRequest
0 голосов
/ 16 мая 2019

Я новичок в машинном обучении и изучаю основные понятия регрессии.Путаница, которую я имею, может быть хорошо объяснена размещением примера входных выборок с целевыми значениями.Итак, например (обратите внимание, что пример, который я привожу, является общим случаем, я наблюдал производительность и прогнозируемые значения для большого настраиваемого набора данных изображений. Также обратите внимание, что целевые значения не находятся в числах с плавающей запятой.), У меня есть:

xtrain = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
ytrain = [10, 10, 10, 20, 20, 20, 30, 30, 30, 40, 40, 40]

и

xtest = [13, 14, 15, 16]
ytest = [25, 25, 35, 35]

Поскольку вы можете заметить, что три (два в тестовом наборе) образца имеют одинаковые целевые значения.Предположим, у меня есть многослойная сеть персептрона с одним слоем Flatten () и двумя слоями Dense ().После обучения сеть предсказывает целевые значения одинаково для тестовых образцов:

yPredicted = [40, 40, 40, 40]

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

Но когда у меня есть:

xtrain = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
ytrain = [332, 433, 456, 675, 234, 879, 242, 634, 789, 432, 897, 982]

И:

xtest = [13, 14, 15, 16]
ytest = [985, 341, 354, 326]

Прогнозируемые значения:

yPredicted = [987, 345, 435, 232]

, что дает очень хорошие корреляции.

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

1 Ответ

0 голосов
/ 17 мая 2019

Почему сеть не работает при повторных значениях для большого количества входов?

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

(Вы не предоставили никакого кода,поэтому неизбежно это будет качественный ответ)

Если внимательно присмотреться к вашему первому набору данных:

xtrain = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
ytrain = [10, 10, 10, 20, 20, 20, 30, 30, 30, 40, 40, 40]

, нетрудно сделать вывод, что у нас монотонно (увеличивается)функция y(x) (она не строго монотонна, но, тем не менее, она монотонна во всем предоставленном диапазоне x).

Учитывая, что ваша модель не имеет абсолютно никакой возможности «зная», что для x > 12, качественная природа функции значительно изменяется (и довольно резко), как видно из вашего набора тестов:

xtest = [13, 14, 15, 16]
ytest = [25, 25, 35, 35]

и вы не должны ожидать, что он узнает или «угадает» это каким-либо образом (несмотря на то, что многие люди, кажется, верят, NN являются не магией).

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...