я сформулировать простую проблему, которую я хотел бы решить с помощью машинного обучения (в 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, но я не понимаю, как применять линейное программирование к этой проблеме.
Поскольку существует только 120 случаев, вы можете вычислить ожидаемый балл на значения 'a',' b' и 'c' и посмотрите, какая комбинация работает лучше всего. Тем не менее вам понадобится большой объем данных для предотвращения переобучения. Чтобы получить общее представление о значимости ваших результатов, вы можете вычислить p-значение для каждого условного ожидания. Если они все достаточно низки, все готово. Если нет, то вы можете захотеть взглянуть на какой-то сглаживание (например, уменьшить среднюю оценку). –
Наиболее стандартным методом для этого вопроса является линейная регрессия. Вы можете предсказать значение для определенных параметров; в более общем плане - получить функцию, которая на ваших 3 параметрах дает максимальное значение – Anton
Когда я запускаю регрессию, я получаю некоторые коэффициенты для a1, a2 и т. д. и квадрат R.Не уверен, как они говорят мне о самых высоких значениях. – Mulone