В чем причина лог-преобразования нескольких непрерывных переменных?

16

Я занимался проблемой классификации, и я читал код и учебные пособия многих людей. Одна вещь, которую я заметил, это то, что многие люди принимают np.logили logнепрерывные переменные, такие как loan_amountили applicant_incomeт.

Я просто хочу понять причину этого. Помогает ли это улучшить точность прогнозирования нашей модели? Это обязательно? или есть какая-то логика за этим?

Пожалуйста, предоставьте некоторые объяснения, если это возможно. Спасибо.

Сай Кумар
источник

Ответы:

27

Это делается, когда переменные охватывают несколько порядков. Доход является типичным примером: его распределение является «степенным законом», что означает, что подавляющее большинство доходов являются маленькими, а очень немногие - большими.

Этот тип распределения с "жирным хвостом" изучается в логарифмическом масштабе из-за математических свойств логарифма:

Lограмм(ИксN)знак равноNLограмм(Икс)

что подразумевает

Lограмм(104)знак равно4*Lограмм(10)

и

Lограмм(103)знак равно3*Lограмм(10)

который преобразует огромную разницу в меньшую Делая значения сопоставимыми.

104-103
4-3

Дуччо Пиовани
источник
2
Хороший ответ, специально говорящий об экспоненциальных распределениях.
Kasra Manshaei
1
@KasraManshaei Я, в частности, говорил о степенных законах (типичный пример дохода): экстремальные значения в экспоненциальном распределении по определению очень редки. Поэтому данные, охватывающие много порядков, обычно являются степенным законом.
Дуччо Пиовани,
1
но, конечно, в таких случаях log ---> ln, что абсолютно не меняет точку ответа.
Дуччо Пиовани,
Да я получил его. Как вы сказали, не так много изменений.
Kasra Manshaei
6

Главным образом из-за перекошенного распределения. Логарифм естественным образом уменьшает динамический диапазон переменной, поэтому различия сохраняются, а масштаб не так сильно искажен. Представьте себе, что некоторые люди получили 100 000 000 кредитов, а некоторые - 10000 и некоторые 0. Любое масштабирование объектов, вероятно, поместит 0 и 10000 так близко друг к другу, что наибольшее число в любом случае сдвинет границу. Логарифм решает проблему.

Касра Маншаи
источник
Manshael, так я могу использовать MinMaxScaler или StandardScaler, верно? или надо брать логи?
Саи Кумар
Необходимо. Если вы используете скейлеры, они сжимают небольшие значения. Вот что я хотел сказать.
Kasra Manshaei
2
Да. Если вы принимаете значения 1000 000 000 и 10000 и 0 во внимание. Во многих случаях первый слишком велик, чтобы позволить вашей модели правильно видеть других. Но если вы берете логарифм, у вас будет 9, 4 и 0 соответственно. Как видите, динамический диапазон уменьшается, а различия практически сохраняются. Это происходит из любой экспоненциальной природы в вашей функции. В этих случаях вам нужен логарифм, как изображен другой ответ. Надеюсь, что это помогло :)
Kasra Manshaei
2
Ну, масштабируем! Представьте себе две переменные с нормальным распределением (поэтому нет необходимости в логарифме), но одна из них в масштабе 10ish, а другая в масштабе миллионов. Снова подача их к модели делает маленького невидимым. В этом случае вы используете скейлеры, чтобы сделать их весы разумными.
Kasra Manshaei
1
@KasraManshaei log (0) = -inf хотя.
JAD
5

журналИкс0<Икс<-<журналИкс<

Икс

JAD
источник
3

Еще одна причина, почему логарифмические преобразования полезны, вступает в игру для данных отношения, в связи с тем, что log(A/B) = -log(B/A). Если вы строите распределение соотношений в необработанном масштабе, ваши точки попадают в диапазон (0, Inf). Любые отношения, меньшие 1, будут сдавлены на небольшую область графика, и, кроме того, график будет выглядеть совершенно иначе, если вы измените соотношение (B/A)вместо (A/B). Если вы сделаете это в логарифмическом масштабе, диапазон будет теперь (-Inf, +Inf), означая, что отношения менее 1 и больше 1 более равномерно распределены. Если вы решили изменить соотношение, вы просто переверните график вокруг 0, в противном случае он выглядит точно так же. В логарифмическом масштабе не имеет значения, показываете ли вы отношение как 1/10 or 10/1, что полезно, когда нет очевидного выбора, каким оно должно быть.

Ядерный Ван
источник
3

Вы должны посмотреть на логнормальное распределение .

Люди могут использовать журналы, потому что они думают, что они сжимают масштаб или что-то в этом роде, но принципиальное использование журналов заключается в том, что вы работаете с данными, которые имеют нормальное распределение журналов. Это, как правило, такие вещи, как заработная плата, цены на жилье и т. Д., Где все значения положительны, а большинство относительно скромны, но некоторые очень велики.

Если вы можете взять журнал данных, и он станет нормальным, то вы сможете воспользоваться многими функциями нормального распределения, такими как четко определенное среднее значение, стандартное отклонение (и, следовательно, z-показатели), симметрия и т. Д.

Точно так же добавление журналов аналогично умножению значений un-log'd. Это означает, что вы превратили распределение, в котором ошибки являются аддитивными, в то, что они мультипликативны (то есть основаны на процентах). Поскольку такие методы, как регрессия OLS, требуют нормального распределения ошибок, работа с журналами расширяет их применимость от аддитивных до мультипликативных процессов.

Wayne
источник
1
Если вы хотите сравнивать предметы без распространения, не лучше ли взять процентили или децили и использовать их вместо исходного значения?
Уильям Пейн
1
@WilliamPayne Конечно, вы можете использовать метод без распространения, хотя вы также отказываетесь от возможности иметь распределение ... если ваши предположения о распределении верны. С большими (правильными) допущениями приходит большая сила. Процентили - это по существу ранги, поэтому вы отбрасываете имеющуюся у вас информацию о расстоянии, а процентиль конкретной выборки является точечной оценкой. Мы обычно предпочитаем распределения баллам.
Уэйн
0

Я бы сказал, что главная причина не в распределении, а в нелинейных отношениях. Журналы часто фиксируют насыщающие отношения ...

seanv507
источник