green_fr: (Default)
[personal profile] green_fr
На работе использую программу для генерирования экономических сценариев (B+H ESG), при определённой конфигурации она вылетает с нечитаемой ошибкой. Hotline объясняет, что у меня данные неправильные, моя матрица должна быть положительно полуопределённой, бла-бла-бла.

Я проверяю — одно из собственных значений выходит −2E-16.
Формально да, отрицательное. Но мы все понимаем, что это ноль, проблема округления (более того, я могу с ручкой на бумажке доказать, что это ноль, я намеренно сделал вырожденную матрицу, мне так надо).

Весь день бодаюсь теперь с hotline’ом по почте, доказывая, что это не «extremely high degree of accuracy in calculations» (цитата из их ответа), а баг, требующий патча. Ищу понятные аргументы...

Update: победили, ошибку признали, постараются когда-нибудь починить, но уже точно не успеют к следующей (7.3.0) версии.

Date: 2012-06-01 04:00 pm (UTC)
From: [identity profile] bgmt.livejournal.com
Вопросы округления непонятны такому колоссальному числу программистов... Я боюсь, ты их не победишь. Они этого не проходили.
"Мы все понимаем" - это те мы, которые имеют в голове внешний мир, описываемый мат. моделью. У которых если лыжник с трамплина улетит на 20 км, то они остановятся и решат, что неправы. Нас мало. У остальных в голове только сама модель.

Date: 2012-06-01 09:09 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Ты Сенька сноб!
Хотя и прав...

Date: 2012-06-01 09:34 pm (UTC)
From: [identity profile] bgmt.livejournal.com
Не сноб, а физик. Физик остаётся физиком, даже если не занимается физикой.

Date: 2012-06-01 04:07 pm (UTC)
From: [identity profile] dmpogo.livejournal.com
Вообще то 'положительно определенная' означает что ноль не разрешен. Наверняка им нужна обратимая матрица, если речь о корреляционной матрице.

Date: 2012-06-01 09:08 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Извини, опечатался, полуопределённой, нули явным образом разрешены.

Date: 2012-06-01 04:13 pm (UTC)
From: [identity profile] birdwatcher.livejournal.com
Ну сделай им вырожденную с положительным собственным числом.

Date: 2012-06-01 09:24 pm (UTC)
From: [identity profile] green-fr.livejournal.com
В смысле? Она уже вырожденная, кроме этих "нулей" все остальные уже числа положительны.

Date: 2012-06-01 10:37 pm (UTC)
From: [identity profile] birdwatcher.livejournal.com
Я имел в виду то же самое, что [livejournal.com profile] french_man. Думаю, достаточно сдвинуть любое число.
Edited Date: 2012-06-01 10:37 pm (UTC)

Date: 2012-06-02 09:22 am (UTC)
From: [identity profile] green-fr.livejournal.com
Ну да, пока оставляю это на крайний случай. Потому что мне потом же надо будет ещё обосновывать эту матрицу, у нас и так официальная документация пестрит «ввиду технических ограничений», «допущение для большей скорости вычислений» и пр...

Date: 2012-06-01 04:33 pm (UTC)
From: [identity profile] french-man.livejournal.com
А сколько у тебя нулевых собственных чисел?

Date: 2012-06-01 04:41 pm (UTC)
From: [identity profile] french-man.livejournal.com
Собственно, сколько б ни было. Добавь к своей матрице 10-15I, и дело с концом.

Date: 2012-06-01 05:34 pm (UTC)
From: [identity profile] dmpogo.livejournal.com
Не обязательно сработает. Точнее сработает но ответ может быть с мусорком, поскольку обращение (в зависимости от алгоритма) будет зависить от 'machine precision' если епсилон мало (а 10^-15 очень близко к double precision), и менять результат если велико. По честному тут надо прогнать несколько значений добавленного малого числа и посмотреть что ответ не зависит.

Date: 2012-06-01 09:23 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Это double precision на величинах порядка единицы, она там относительная. Это моя любимая иллюстрация проблемы округления, перед написанием поста показывал своим коллегам (они ни разу не программисты, они не в курсе), что
1E-50 + 1 - 1
Это совсем не то же самое, что
1E-50 + (1 - 1)
Так чт надо ещё в голове держаить абсолютные величины, но я как раз с процентами работаю, там всё порядка единицы крутится, поэтому и бросаются в глаза "родные" 1E-15.

Date: 2012-06-01 09:15 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Ты не поверишь, но именно это они и предлагают. В принципе, сдаётся мне, этим всё и кончится, но пока что мне чисто по-человечески лень. Я всю эту затею нача.л из-за того, что мне лень было терять время на генерирование сценариев для 100% корелированных портфелей. Я ввёл их отдельно (откуда одинаковые строки в матрице), чтобы одним генерированием получать сразу всё.
Если сделать эти портфели коррелирующими на 99.999999%, то тестировать придётся более основательно (а не просто тупо сравнить посимвольно файлы и убедиться в их идентичности), то есть я проиграю больше времени, чем выиграю. Я посчитал, что генерирование закончится в понедельник к полудню, а раньше я всё равно кофе не допью, можно не спешить.
Но в долгосрочной перспективе да, придётся вводить "прчти абсолютно корелирующие активы", бред какой-то....

Date: 2012-06-01 09:17 pm (UTC)
From: [identity profile] french-man.livejournal.com
Естественней было бы их попросить заменить условие положительности на «почти положительности». Но если они на это не идут, то другого варианта я не вижу.

Date: 2012-06-02 09:20 am (UTC)
From: [identity profile] green-fr.livejournal.com
Ты видел, я исправил — матрица изначально требуется положительно полуопределённой, я вначале опечатался. То есть по условиям нули проходят, конечно же. Вопрос — считать ли −2E-16 нулём или нет, такой тонкий стык между математикой и информатикой :-)

Date: 2012-06-02 10:43 am (UTC)
From: [identity profile] dolganoff.livejournal.com
А какова вероятность того, что кому-то из их клиентов будет важно различать числа по модулю меньше 2E-16? Может для кого-то это уже достаточно большие числа, а вы их к нулю приравнивать собрались?

Date: 2012-06-02 07:55 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Никакая, это матрица корреляций, а не массы электронов :-)

Date: 2012-06-01 05:54 pm (UTC)
a_p: (Default)
From: [personal profile] a_p
а не подрывают ли подобные результаты доверия к продукту вообще? То есть, то, что хотлайн знает, в чём дело, а в продукте это не пофиксено - очень тревожный знак, у них и всё остальное почти наверняка сикось-накось.

Date: 2012-06-01 09:17 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Проблема в том, что хотлайн не знает, для них это не проблема, а лишнее подтверждение исключительной точности их продукта. Если сказали не пускать отрицательные числа, то не пускать даже самые маленькие.
Они правда не понмают, что это ноль, что эт проблема округления.

Date: 2012-06-01 09:27 pm (UTC)
a_p: (Default)
From: [personal profile] a_p
что народ на хотлайнах не разбирается в техничской стороне дела, так этим сейчас никого не удивить. Вообще, меня бы на месте пользователя продукта, напрягло бы не так недопонимание проблем округления отдельными представителями хотлайна и девелопмента, как игнорирование известной проблемы (краша то есть) девелопментом. Грубо говоря, это обозначает отсутствтие технического управления у производителя.

Date: 2012-06-01 09:37 pm (UTC)
From: [identity profile] bgmt.livejournal.com
Это означает, что мы сталкиваемся очередной раз с проблемой экспертов. Мы это поручили А, А поручил В, на выходе Х считает себя экспертом и по цепочке предлагается, чтобы мы тоже его таковым считали. Что не факт. Но система управления не позволяет сомнению доходить до пункта управления. Это проблема цивилизации, а не локальная. Большая проблема. На ней мы можем куку.

Date: 2012-06-01 10:19 pm (UTC)
a_p: (Default)
From: [personal profile] a_p
а кто сомневается, называется конспиролог.

Date: 2012-06-01 10:25 pm (UTC)
From: [identity profile] bgmt.livejournal.com
нет, это две разные, но сочетаемые (не обязательно) профессии!

Date: 2012-06-02 09:16 am (UTC)
From: [identity profile] green-fr.livejournal.com
Так а с чего ты взял, что они игнорируют? Я вполне верю, что мы — первые, кто столкнулся с этой проблемой. Пока что вопрос именно в том, как пробить hotline, чтобы информация дошла до разработчиков. Вот тогда и посмотрим на их реакцию.

Date: 2012-06-02 11:42 am (UTC)
a_p: (Default)
From: [personal profile] a_p
почему-то у меня создалось впечатление, что ты написал (сейчас перечитал пост и не нашёл, где ты это написал :), что хотлайн уже был в курсе проблемы и дал объяснение про extremely high degree типа "знаем-знаем, это у нас акьюраси".

Date: 2012-06-02 07:57 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Не, тут проблема именно в том, чтобы пробиться через хотлайн к разработчикам и принимателям решений. Так что срочно требуются понятные аргументы :-)

Date: 2012-06-01 09:15 pm (UTC)
From: [identity profile] dolganoff.livejournal.com
предположу, что в этой области конкуренции практически никакой :)

Date: 2012-06-02 09:12 am (UTC)
From: [identity profile] green-fr.livejournal.com
Да ладно, тут претензии к hotline’у, у которого должны быть математические и информатические знания (и — главное — умение передавать вопрос специалистам, когда они не в курсе). Что тут такого исключительного?

Date: 2012-06-02 09:20 am (UTC)
From: [identity profile] dolganoff.livejournal.com
А ты пошел бы работать в хотлайн с такими знаниями? (На их зарплату?)

Date: 2012-06-02 09:23 am (UTC)
From: [identity profile] green-fr.livejournal.com
А какая у них зарплата? :-Р
Если тупо экстраполировать из стоимости продукта, то ради денег может и пошёл бы!

Date: 2012-06-02 10:46 am (UTC)
From: [identity profile] dolganoff.livejournal.com
Если у них хотлайн платит столько, сколько обычно, можешь смело дели твою на три :)

Date: 2012-06-02 09:24 am (UTC)
From: [identity profile] green-fr.livejournal.com
А серьёзно — в скобках тоже важное. Человек на хотлайне не должен быть богом, он должен чётко осознавать свои лимиты и передавать непонятный вопрос выше. Кто-то же писал эту программу, он же должен сечь в математике (а в вопросах округления — вне зависимости от пессимизма [livejournal.com profile] bgmt - должен сечь любой программер).

Date: 2012-06-03 05:01 pm (UTC)
From: [identity profile] aguti-aka-jav.livejournal.com
формально "нечитаемая ошибка" - это "technical error" который можно попросить исправить.
И до суппорта 3го уровня обычно доходять или большие клиенты или сильно "скрипучие".
Так что "пилите, Шура, пилите! Она золотая!" :)
Edited Date: 2012-06-03 05:04 pm (UTC)

Profile

green_fr: (Default)
green_fr

May 2025

S M T W T F S
    1 23
4 5 678910
11 12 1314 15 1617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 23rd, 2025 08:05 am
Powered by Dreamwidth Studios