2012-03-21 4 views
4

я сформулировать простую проблему, которую я хотел бы решить с помощью машинного обучения (в R или аналогичных платформ): мой алгоритм принимает 3 параметров (а, б, в), и возвращает счет s в диапазоне [0,1]. Параметры все категоричны: a имеет 3 варианта, b имеет 4, а c - 10. Поэтому у моего набора данных 3 * 4 * 10 = 120 случаев. Желательны высокие баллы (рядом с 1), низкие баллы не являются (близкими к 0). Давайте рассмотрим algorihm как черный ящик, возьмем a, b, c и вернем s.Какой алгоритм машинного обучения для этой простой оптимизации?

Набор данных выглядит следующим образом:

a, b, c, s 
------------------ 
a1, b1, c1, 0.223 
a1, b1, c2, 0.454 
... 

Если я сюжет плотность с для каждого параметра, я получаю очень широкие распределения, в которых в некоторых случаях выполняют очень хорошо (s> .8), другие плохо (s < .2).

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

Для того, чтобы оценить, насколько хорошо определенное значение выполняет (например, а1), я вычислить медиану:..

median(mydataset[ a == a1]$s) 

Например, медиана (а1) = 5, медиана (b3) = 9, но когда Я совмещаю их, получаю более низкий результат s (a_1, b_3) = .3. С другой стороны, медиана (a2) =. 3, медиана (b1) =. 4, но s (a2, b1) = .7.

Учитывая, что значения параметров не всегда хорошо работают, я думаю, что я должен искать комбинации (из 2 параметров), которые кажутся эффективными вместе, статистически значимым образом (т. Е. Исключая выбросы, которые имеют очень высокие баллы). Другими словами, я хочу получить политику , чтобы сделать оптимальный выбор параметров, например. наиболее эффективными являются комбинации (a1, b3), (a2, b1) и т. д.

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

Какие стандартные методы вы бы рекомендовали в этом контексте?

EDIT: кто-то предложил линейное программирующее решение с glpk, но я не понимаю, как применять линейное программирование к этой проблеме.

+0

Поскольку существует только 120 случаев, вы можете вычислить ожидаемый балл на значения 'a',' b' и 'c' и посмотрите, какая комбинация работает лучше всего. Тем не менее вам понадобится большой объем данных для предотвращения переобучения. Чтобы получить общее представление о значимости ваших результатов, вы можете вычислить p-значение для каждого условного ожидания. Если они все достаточно низки, все готово. Если нет, то вы можете захотеть взглянуть на какой-то сглаживание (например, уменьшить среднюю оценку). –

+0

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

+0

Когда я запускаю регрессию, я получаю некоторые коэффициенты для a1, a2 и т. д. и квадрат R.Не уверен, как они говорят мне о самых высоких значениях. – Mulone

ответ

1

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

+0

Когда я запускаю регрессию, я получаю некоторые коэффициенты для a1, a2 и т. Д. И квадрат R. Не уверен, как они говорят мне о самых высоких значениях. – Mulone

+1

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

Смежные вопросы