2013-06-25 1 views
0

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

Спасибо!

+3

Не могли бы вы немного рассказать о своей цели? существует множество методов, ни одна из которых не может считаться лучшей для одного входа и одного выходного значения. каковы ваши наблюдения, количество точек данных, шум данных и т. д. – Regenschein

+0

Конечно. Я использую метод черного ящика для сопоставления определенных значений с функцией f: (x1, y1), (x2, y2), .. (xn, yn), где xs и ys - 32-битные числа, я должен аппроксимировать или получим x * для некоторого y *, который я знаю заранее, например f (x *) = * y. Нет шума, и я могу задать больше для получения дополнительных данных, если это необходимо. – user1234299

ответ

1

Многоуровневые нейронные сети персептрона заслуживают внимания. Хотя вам нужно обработать входы с числом с плавающей запятой между 0 и 1, а затем отобразить выходные данные в исходный диапазон.

+0

Как вы думаете, это будет эффективно? – user1234299

+0

Да. Если есть функция, она должна быть способна ее идентифицировать. Если вы посмотрите на теорию, касающуюся многослойных персептронов, вы поймете, что она может изучить любую функцию, если вы используете 3 скрытых слоя. Что касается количества нейронов в каждом слое, вам придется немного поиграть с ним, обычно немного больше, чем количество входов - это все, что вам нужно. – RutledgePaulV

+0

По сути, один скрытый слой позволяет вам разделиться на частично ограниченные пространства, два слоя позволяют вам определить одно ограниченное пространство, а три слоя позволяют вам несколько ограниченных пространств. Если я правильно помню ..;) – RutledgePaulV

0

Есть несколько возможных решений вашей проблемы:

1.) фитинга линейной гипотезы с методом наименьших квадратов

В этом случае, вы аппроксимирующих гипотезу у = ах + Ь с наименее квадратов. Это действительно легко реализовать, но иногда линейная модель недостаточно хороша для ваших данных. Но ... я сначала попробую попробовать.

Хорошо, что существует закрытая форма, поэтому вы можете напрямую рассчитать параметры a и b из ваших данных.

См Least Squares

2.) Установочный нелинейную модель

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

Ваша гипотеза, то может выглядеть

у = ax² + Ьх + с

у = ax³ + bx² + сх + d

т.д.

Вы можете также используйте метод наименьших квадратов для подгонки ваших данных и методы из типов градиентного спуска (имитированный отжиг, ...). См. Также эту тему: Fitting polynomials to data

Или, как и в другом ответе, попробуйте установить нейронную сеть - хорошо, что она автоматически выучит гипотезу, но не так просто объяснить, какая связь между входными и выход есть. Но, в конце концов, нейронная сеть также представляет собой линейную комбинацию нелинейных функций (таких как сигмоидные или tanh-функции).