Как тренировать непрерывные результаты (регрессия) в машинном обучении
Я хочу тренировать регрессионную модель (не классификацию), результаты которой являются непрерывными числами.
Допустим, у меня есть входная переменная X, которая находится в диапазоне от -70 до 70. И у меня есть выходная переменная Y, которая находится в диапазоне от -5 до 5. X имеет 39 функций, а Y имеет 16 функций, и у них по 50000 примеров. Затем я хотел бы обучить их с глубоким убеждением сети (DBN) в Python.
Я использовал скрипт на домашней странице theano, который описывал DBN с данными MNIST (классификация). http://deeplearning.net/tutorial/DBN.html
Не могли бы вы сказать мне, какие конкретные строки я должен изменить, чтобы применить регрессионную проблему, которую я объяснил выше?
Например я должен измениться...
- сигмовидная функция к функции Тан. Я слышал, что функция активации tanh в регрессии работает лучше, чем сигмовидная. право?
- вместо того, чтобы использовать вероятность отрицательного логарифма, я должен использовать ошибку наименьших квадратов....?
- Нормализация входных и выходных данных по zscore?
Пожалуйста, дайте мне знать, если у вас есть идея, чтобы решить эту проблему... Большинство примеров машинного обучения основаны на классификации цифр руки MNIST. Я был бы рад, если вы порекомендуете мне хорошие блоги или домашнюю страницу, где я могу получить полезную информацию, связанную с регрессией.
Спасибо заранее.
1 ответ
@hyungwon yang:
Я не видел код Python, но я думаю, что было бы полезно следующее:
сигмовидная функция для функции Tanh: не обязательно, во многих публикациях сигмовидная система используется для нелинейных регрессий. Честно говоря, выбор должен быть сделан из того типа данных, который у вас есть. Я использую сигмоид для многих нелинейных моделей, и это сработало для меня.
Ошибка наименьших квадратов: Вы можете сделать это, используя встроенную функцию регрессии Matlab, вместо того, чтобы путать ее с таким количеством параметров.
Нормализация: Вы можете выполнить нормализацию min-max (см. Data Mining от Charu Agarwal), моя реализация в Matlab следующая:
%inputData: Is your N samples * of first feature, you have to iteratively do %this process for each and every feature.
function normOut = NormaliseAnyData (inputData)
denominator = (max(inputData) - min (inputData));
numerator = (inputData - min(inputData));
normOut = numerator/denominator;
end
Надеюсь, поможет. Дайте мне знать, если у вас есть дополнительные вопросы.