Простая эластичность:
Код: Выделить всё
(ChangeInConversion * 100 / Elasticity) * -1
Код: Выделить всё
(np.log(1 + ChangeInConversion ) / np.log(1 + Elasticity)) * 100 * -1
Спасибо!
Изменить: функция Я использую:
Код: Выделить всё
def FDollarChange(OptimizedUnitCount):
_OptimizedUnitCount = np.array(OptimizedUnitCount)
_OptimizedUnitCountByChannel = np.dot(ChannelMatrix.toarray(), _OptimizedUnitCount)
_ChangeInUnitCountByChannel = _OptimizedUnitCountByChannel - CurrentUnitCountByChannel
ChangeInConversion = _ChangeInUnitCountByChannel / CurrentUnitCountByChannel
# expand out to full rows
ChangeInConversion = np.dot(ChannelMatrixT.toarray(), ChangeInConversion)
DollarChange = (ChangeInConversion * 100 / Elasticity) * -1 # simple method
# DollarChange = (np.log(1 + ChangeInConversion) / np.log(1 + Elasticity)) * 100 * -1 # compounding method
return DollarChange, ChangeInConversion
def FTotalProfit(OptimizedUnitCount):
_OptimizedUnitCount = np.array(OptimizedUnitCount)
_DollarChange, _ChangeInConversion = FDollarChange(OptimizedUnitCount)
PostProfit = PreProfit + _DollarChange
TotalProfit = np.dot(_OptimizedUnitCount, TotalProfit)
return PostProfit, TotalProfit
def ObjectiveFunction(OptimizedUnitCount):
_OptimizedUnitCount = np.array(OptimizedUnitCount)
_PostProfit, _TotalProfit = FTotalProfit(_OptimizedUnitCount)
return (_TotalProfit * -1)
- : по сути, это значения x в оптимизаторе.
Код: Выделить всё
OptimizedUnitCount
- : По сути, это разреженная матрица, которая группирует по сумме, что позволяет мне вычислить сгруппированную по OptimizedUnitCount
Код: Выделить всё
ChannelMatrix
- : Транспонируется ли ChannelMatrix, который преобразует объекты обратно в исходный векторный размер.
Код: Выделить всё
ChannelMatrixT
Подробнее здесь: https://stackoverflow.com/questions/786 ... y-optimize