Matlab: как решить максимальное значение для градиентной регрессии - PullRequest
0 голосов
/ 15 февраля 2012

Вот проблема, с которой мне нужна помощь:

уравнение:

r = a1 * x1 + a2 * x2 + a3 * x3 + a4 * x4,

где 'x1, x2, x3, x4' - это баллы (все положительные) для четырех аспектов продукта;

'a1, a2, a3, a4' - инициализированные веса (их сумма равна 1);

'r' рассчитывается как окончательная оценка для этого продукта;

Скажите, что количество продуктов составляет 100; затем на основе итоговой оценки «r» отсортируйте 100 продуктов и рассчитайте равную взвешенную прибыль (учитывая) из 10 лучших продуктов.

Цель состоит в том, чтобы найти максимальное значение взвешенной прибыли путем изменения весов 'a1, a2, a3, a4'.

Есть ли в наборе инструментов Matlab функция для ее решения? Я искал несколько, но не нашел подходящего для этой проблемы. Любое предложение будет оценено!

1 Ответ

0 голосов
/ 15 февраля 2012

Создайте функцию, которая вычисляет отрицательный результат взвешенной прибыли (отрицательный, потому что встроенные алгоритмы Matlab находят минимум). Если я понимаю, что вы описываете, это должно выглядеть примерно так.

function f = wprofit(a)
r=-x*a;
r=sort(r);
f=sum(r(1:10));
end

Затем используйте fmincon, чтобы найти минимум.

Aeq=ones(4,1);
beq=1;
a0=[.25 .25 .25 .25]';
[a,f]=fmincon(@wprofit,a0,[],[],Aeq,beq)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...