Функция минимизации цели Python для оценки параметров модели - PullRequest
0 голосов
/ 17 сентября 2018

Я разработал расширение стандартной модели баса, и теперь я хочу оценить параметры этой модели, используя минимизацию.

Модель: SVe (t) = θ [t-tv] * {p * m + (qp) * ∑SVe (t-1) + (q / m) * ∑SVe (t-1) ^ 2}

Целевая функция: Свернуть ∑ (SVr - SVe) ^2

SVr - массив данных измерений для ежедневных просмотров видео на Youtube.SVe мои предполагаемые взгляды.Моя цель - оценить Sve, а затем использовать минимизацию, чтобы приблизиться к реальным значениям.

θ [t-tv] - тяжелая функция.У меня также есть вход, который будет выглядеть примерно так:

[[0,1,1,1,1,1][0,0,0,1,1,1][0,0,0,0,1,1]]

p, q и m - параметры, которые меня интересуют и которые я хочу оценить.p и q находятся в диапазоне от 0 до 1, m - большое положительное число.VSVe (t-1) - кумулятивные виды предыдущих периодов.

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

import numpy as np
from scipy.optimize import minimize
SV = np.array([100,10000,1000])
heavi = np.array([[0,1,1,1],[0,0,1,1],[0,0,0,1]])

def model(x):
    p = x[0] 
    q = x[1]
    m = x[2]

    SVe = sum(heavi * (p*m+(q-p)*sum(SVe[:-1])+(q/m)*(sum(SVe[:-1])**2))

    return SVe

def objective(SVr):

    #Somehow Call model and compare results, then do it again until res is close to 0

    return sum(SVr - SVe)**2


x0 = np.array([0.1, 0.1, 10000])

b1 = (0,1)
b2 = (1,1000000000)              
bnds = (b1,b1,b2)               
res = minimize(objective, x0, method='SLSQP',bounds = bnds)

print(res)

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

1 Ответ

0 голосов
/ 17 сентября 2018

Это выглядит как домашнее задание ...;)

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

...