Как масштабировать% изменения, основанные на функциях, чтобы они рассматривались «аналогично» моделью - PullRequest
0 голосов
/ 03 июня 2019

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

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

Итак, что я заметил, так это то, что величина значений процентного изменения не является симметричной по масштабу. Например, если у меня есть значение от 50 до 200, это приведет к изменению на 300,0%. Если у меня есть значение от 200 до 50, это приведет к изменению на -75,0%. Я понимаю, что есть причина для этого, но с точки зрения моей функции, я не вижу причины, по которой изменение от 50 до 100 должно быть в 3 раза более «важным», чем то же изменение в значении, но в противоположном направлении.

Учитывая эту информацию, я не верю, что была бы какая-либо причина, чтобы моя модель воспринимала изменение 200-50 как "меньшее" изменение, чем изменение 50-200. Поскольку я пытаюсь представить изменение значения во времени, я хочу абстрагировать этот шаблон, чтобы моя модель могла «визуализировать» изменение значения во времени так же, как это сделал бы человек.

Сейчас я решаю эту проблему, используя эту формулу

if curr > prev:
    return curr / prev - 1
else:
    return (prev / curr - 1) * -1

И это, похоже, относится к изменениям стоимости, аналогично, независимо от направления. Т.е. из приведенного выше примера 50> 200 = 300, 200> 50 = -300. Есть ли причина, почему я не должен делать это? Это достигает моей цели? Кто-нибудь сталкивался с подобными дилеммами?

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

У вас проблемы, потому что вы не включили абстрактные вопросы в свою парадигму.

"... my model can "visualize" ... same way a person would."

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

Да, мы сталкиваемся с этими дилеммами: выбор метрики успеха. Вы выбрали классический пример из «Как лгать со статистикой»; в зависимости от выбора начальных и конечных пропорций и метрики ошибки, вы можете «доказать» все виды вещей.

Это подводит нас к вашему центральному вопросу:

Does this accomplish my goal?

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

Например, с учетом ваших отправленных точек данных (200, 50) и (50, 200), как подойдут другие примеры, такие как (1, 4), (1000, 10) и т. Д.? Если вы просто изучаете долю изменений в диапазоне значений full , участвующих в этой транзакции, ваше предложение именно то, что вам нужно: используйте более высокое значение в качестве основы. Поскольку вы не опубликовали репрезентативные данные, мы не знаем, какой у вас тип распространения.

0 голосов
/ 03 июня 2019

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

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

  1. Изменение разницы -> 50–200 выходов 150, 200–50 выходов -150
  2. Изменение коэффициента с логарифмом -> 50–200 выходов log(4), 200–50 выходов log(1/4) = -log(4)
...