Над пропастью во лжи +7


или прививка от искусственного интеллекта

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

как не нужно делать data science

В основе всего того, что сейчас называют data science и искусственный интеллект, лежит неплохо изученная и давно применяемая шаманами для запугивания сапиенс и выманивания денег для описания и понимания реальной действительности обычная теория вероятностей с особо любимым разделом под названием математическая статистика. И это не про неё писали, что есть ложь, большая ложь и статистика. Это другая, математическая статистика и разница принципиальная. Матстат никогда и нигде не пытался определять что-то из реальной действительности и весь построен так же, как и вся остальная математика - "Если ..., то ..." и ничего больше, никакой реальности, действительности и прочих атомов с молекулами, урожаев или выплавки стали с прогнозами продаж пеньки.

Вот в этом "если" и сосредоточена вся сила и все беды нынешнего data science. Со стороны бизнеса не нужны теории, бизнесу нужна прибыль, сокращение потерь и издержек в реальном мире. И в данном ракурсе существенное и основное значение приобретает переход от реального мира формальному. Большинство утверждений математики обычно опубликованы и миллионы глаз проверяют рассуждения, логику, код и т.д. Там почти невозможно что-либо спрятать и очень редко когда кому удаётся обмануть одновременно всех (разве что перевести всех толковых в "read only"). Но вот формализация реальности, тот самый процесс, когда начинаете определять как из болтов, досок, винчестеров, проводов, дизелей, гусей и уток получить векторы, матрицы, тензоры таит в себе немало подводных камней.

Перейдём к конкретике и примерам. Самый популярный и знаменитый пример дата саентистов это теорема Байеса Это очень хороший, красивый, умный и показательный пример того, как в отличной теореме математики таится тихое коварство.

Все, без единого исключения, объяснения теоремы Байеса начинаются так или почти так ( самый популярный пример объяснения на людях и это не правильно)

Пусть будет вот так

У 1% электромоторов проработавших 4 года начинает разрушаться подшипник. Предиктивная диагностика для 80% таких электромоторов выдаёт прогноз "неисправен" и для 9.6% исправных моторов также выдаёт прогноз "неисправен". На производстве 10000 моторов и мастер регулярно проводит диагностику и выбрасывает те, у которых диагноз "неисправен"

Только не нужно забывать про "если... то ..." в математике. Так что тут же последует вопрос: - как и откуда достоверная информация про 1%?! Взяли несколько вагонов моторов, например 10000 штук, причем обязательно без дефектов(!), запустили в разных условиях с разной нагрузкой и через 4 года провели диагностику, разобрали все моторы и у 1%, это 100 штук, точно обнаружили дефект подшипника, потом поняли, что у 80% из этого 1%, т.е. у 80 штук, диагностика точно нашла дефект, а 20% из этих 1%, т.е. 20 штук, признала годными, а ещё нашла этот дефект у 9.6% среди 99%, т.е. 950 штук, у которых нет дефектов подшипника, но система решила, что есть и эти моторы на свалку. Нет? Не так?

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

Иногда задача выглядит например так:

Известно, что 1% заёмщиков не платят вовремя. Нужно создать робота, который будет с точностью 99.9% отсекать неплательщиков. Это небольшая проблема, рубить можно легко и не пущать всяких. Только вот как подсчитать количество ложно отрицательных случаев. Вы посетителя не обслужили, решили, что он не достоин. А он пошел в соседнюю лавку и после принес им прибыль. Им, а не вам. И как проверить, как убедиться, что клиент, которому вы денег не дали, их не вернул бы, если бы вы их ему дали? Ни в одной книжке по математике нет ответа на это вопрос. И все советы найти ответ есть суть подсказки типа "как найти похожих" на которых уже потеряли денег вчера. Пришел студент, истории кредитной нет, дохода постоянного нет, поручителей нет, просит денег на программу - развлекуху, рожи корчить. Дали бы денег? А если его фамилия Цукерберг?

Так что никогда не забывайте, что математика это "если ... , то ... " а бизнес это "деньги->товар->деньги+ " и никак иначе.

Это конечно очень простой пример, но применение теории вероятностей и математической статистики предполагает и подразумевает и другое.

Например, если известно, что у 1% электромоторов через 4 года эксплуатации выйдет из строя подшипник, то из 10000 моторов через четыре года у 100 выйдет из строя подшипник. А у 5000 электромоторов через четыре года выйдет из строя 50 подшипников. Но в реальности это не так, в реальности есть еще много параметров, которые не учитываются в определении этого 1%.

И любой начальник цеха вам скажет, что моторы сделанные в первую, вторую и третью смены выглядят одинаково, ОТК проходят, но вот насчет 1% там нет никакой уверенности. А дважды выбрать 5000 моторов со всеми одинаковыми параметрами невозможно. Попросту износится производство этих моторов. Т.е. производство изготовило эти 5000 моторов, вы их испытали, параметры получили, потом какие-то станки заменили, другие переналадили, состав смазки изменили и поставщик подшипников уже другой. И следующие 5000 моторов совсем с другими ожиданиями и интервалами. Если взять 10000 моторов и поделить на две части, то опять равенство обеспечить почти невозможно, просто вы не будете знать всех отличий и поделите по тем параметрам, что видите и знаете.

Если вы точно знаете, что все известные параметры партии моторов одинаковы, станки не переналаживали, не меняли и т.д. и вы в этом уверены и понимаете смысл всех этих параметров - вот только тут и будет польза от теорвера и я такие производства видел. Они реально существуют.

Это у химиков у любой молекулы воды H-O-H угол между двумя H составляет приблизительно 104'27". У любой молекулы в любом месте вселенной. А вот у электромоторов это не так, и у людей не так, и на ферме не так.

Именно поэтому очень тяжело найти корректный пример буквального реального применения теоремы Байеса. И прежде чем её применять где-нибудь на совещании, убедитесь в своём понимании стороны "если ..." .

Экономика

Есть и другие, очень опасные подводные камни на пути отчаянного датасаентиста. Про них не рассказывают ни на каких курсах и не показывают пальцем разные гуру. Один из самых опасных скрывается в линейной алгебре.

Вот простая область исследований, изученная вдоль и поперек со всех сторон и неоднократно - множество предприятий. Или всей страны, или региона, или отрасли, или ... неважно. И вот требуется достать блестящий меч data science и разрубить все проблемы. И естественно, что для изучения этого множества предприятий берется их отчетность. Вот и мы попробуем взять, но для примера, только бухгалтерские балансы предприятий.

Получается множество красивых векторов из положительных чисел {a,b,c;x,y} в которых a+b+c = x+y. Ничего сложного. Очевидно, что сложив поэлементно два любых вектора, получим вектор из того же пространства. И, казалось бы, можно включить всю мощь линейной алгебры и начать делать выводы. Но только вот незадача, если взять два предприятия N и M с балансами, соответственно, {Na,Nb,Nc; Nx,Ny} и {Ma,Mb,Mc; Mx,My} которые их владельцы решили объединить, то баланс предприятия NM необязательно будет равен

{Na+Ma, Nb+Mb, Nc+Mc; Nx+Mx, Ny+My}

Если предприятие M должно предприятию N хоть несколько рублей, то предприятие N+M не может быть должно само себе и где-то в недрах этого баланса какие-то рубли исчезнут и равенство баланс(N) + баланс(M) = баланс(N+M) нарушится.

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

Биржи

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

Вот например вам поручили предсказывать цену акций компании N на бирже. Вы радостно собрали исторические данные, запустили свой мегатеслистый сервер и вот оно, нашли зависимость цены от параметра Х. Тут же собираете всё начальство, поклонников и завистников и показываете, что завтра цена будет +10. Даем команду открыть позицию и ждём клининга.

( небольшое пояснение, теперь на биржах немодно торговать товаром, там сейчас торгуют обещаниями. Т.е. если вы поняли, что товар какой-то или обещание поставить товар вырастет в цене и завтра или через час, или через 10 миллисекунд подорожает на немного денег от текущей цены, то тут же делаете ставку (вносите на биржу немного денег) и вам не нужно покупать этот товар, нужно только получить обещание поставить этот товар по текущей цене и ваш взнос на биржу показывает серьезность ваших намерений. И если прогноз, расчет, machine learnig оправдались, то биржа вам выплачивает ту разницу, на которую угадали или наоборот, списывает вашу ставку на ту же разницу сразу же и без промедлений. Вот это сведение счетов и есть клининг и наступает на разных биржах по-разному. Вы можете делать ставки хоть в каждую миллисекунду - есть и такие - но забирать ваши деньги и проводить расчет по всем ставкам будет биржа)

Сделав ставку, дата саентист ждет победы и тут вдруг оказывается, что все остальные тоже прочитали ту статью на arxiv.org увидели зависимость от Х и ровно точно также поставили на рост N и никто ничего не выиграл. Или еще хуже, тот, кто долго кормил и взращивал эту зависимость от Х решил, что собрал достаточное стадо и теперь нужно его остричь - и все, кто так вот мегатеслисто нашли это Х, тихо и молча лишаются своих взносов. Еще раз подробней - та самая сокровенная зависимость цены N от параметров X на самом деле не является свойством природы и физическим законом, а тщательно и уверенно взращивалась кем-то из участников. ( как пример - все казино всех стран тонко уговаривают всех в том, что если выпало 6 раз подряд "черное", то вероятность выпадения "черное" опять, в седьмой раз, ничтожно мала! И ставь на "красное" !!)

Мне все эти биржи напоминают систему автоматической дойки. ( Автор успешно руководил инвестиционной компанией и досконально понимает )

И самый толковый результат анализа деятельности биржи будет такой - зарабатывает только хозяин биржи. Ну или что-то в таком же стиле.

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

Есть и другое свойство такой массовой одновременной торговли и называется "рефлексивность рынка"

Вот создали вы супер AI, на могучих серверах - на тесте предсказывает всё быстро и точно. И теперь вы его в прод, на реальные сделки. Для обучения любого AI нужен датасет как с положительными сделками, так и отрицательными — т.е. 4 вида результатов.

За то время, пока AI получает и обрабатывает в т.ч. ложные ( убыточные сделки) данные и вычисляет новые веса, правила и информация на рынке меняются. Они меняются постоянно и случайным образом.
И любой AI всегда будет в роли догоняющего, то, что он насчитал уже не актуально.

Торговля это инерционная система ( землетрясения, цунами и т.д. не берем расчет) и тренд меняется быстро, но не мгновенно. И тот, кто считает быстрее и будет выигрывать. На этой идее построены все нынешние системы роботорговли. У них пинги микросекундные и всё происходит очень быстро и они какое-то время хорошо торговали.

Представьте, что ваш AI получил инфо и решил, что для акций компании Х это плохая информация и они начнут падать и открывает шорт. Умный, дорогой, быстрый, на могучих серверах AI. А бОльшая часть других AI решила, что наоборот, акции Х пойдут вверх. И очевидно, что умный и могучий AI принесет локально убыток.
И ясно видно, что для AI не нужно понимать и предсказывать влияние информации ( то же поведение юзеров ) на акции и экономическое состояние эмитента, нужно всего лишь предсказать поведение других AI.

И что-то мне подсказывает, что выигрывает самый непредсказуемый AI.

Предсказания и гадания

Очень немалое количество задач звучит так: "Возьми историю, прошлые действия юзера и сделай прогноз его действий на будущее". Очень смешная задача. Возьмите все сделки всех брокеров NYSE и попробуйте хоть что нибудь попредсказывать. Уверяю, такой трюк еще никто не смог провернуть.

Но тем не менее задача очень интересная. Ведь если объект тот же самый, законы его движения те же самые, то зная прошлое его положение в некотором метрическом пространстве, то можно предсказать будущее его положение. Вполне, весьма нужная, корректная, актуальная задача. Баллистические ракеты именно так и сбивают. И пространство евклидово и законы механики отлично изучены. Но как всегда попытка перенести хорошее и полезное решение на другую, недостаточно унавоженную почву, приводит к плачевным последствиям.

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

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

В любом случае нужно учитывать, что выигрывает только тот, кто тренд формирует, а не угадывает.

Есть очень много сейчас примеров некорректных задач, очень. Особенно смешно про расстановку пива на полках овощного ларька (но про это была другая статья). Почти все вдруг забывают про вот это "если ... " и пытаются применить матстат там, где он не применим. Большая предельная теорема доказана только для определенных математических объектов и есть ли они у вас в реальности это и есть самый больной вопрос применения data science. Или пытаются применить линал не определяя метрику и сложение и игнорируют многие другие такие "если ... "

про предсказания кратко и образно

Мальчик спрашивает отца:

- Папа, а какая разница между теми кто использует data science и применяет?

- Вот помнишь сынок, мы с тобой летом картошку ведрами в поле носили по вечерам?

- Помню, помню, потом в это место на рассвете кабаны стали приходить!

- ну да. Вот кабаны и использовали data science и точно предсказывали появление картошки, а мы с тобой эту data science применили и у нас есть теперь запасы кабанины.

Про A/B тесты

Про A/B тестирование напишу наверно подробно, но попозже. Так мне с женой ближайший овощной ларек шлёт иногда одинаковые письма, а иногда разные. Это у них такой A/B тест. Наверно если при тестировании нового лекарства больные будут обмениваться таблетками, то результат можно получить любой.

Наступим на эти грабли еще раз

Приведу цитату из книги Е.Н.Вентцель, что бы самому не искать и перечислять все ляпы и несуразности, которые указала Елена Николаевна

Для всего XVIII и начала XIX века характерны бурное развитие теории вероятностей и повсеместное увлечение ею. Теория вероятностей становится «модной» наукой. Её начинают применять не только там, где это применение правомерно, но и там, где оно ничем не оправдано. Для этого периода характерны многочисленные попытки применить теорию вероятностей к изучению общественных явлений, к так называемым «моральным» или «нравственным» наукам. Во множестве появились работы, посвященные вопросам судопроизводства, истории, политики, даже богословия, в которых применялся аппарат теории вероятностей. Для всех этих псевдонаучных исследований характерен чрезвычайно упрощенный, механистический подход к рассматриваемым в них общественным явлениям. В основу рассуждения полагаются некоторые произвольно заданные вероятности (например, при рассмотрении вопросов судопроизводства склонность каждого человека к правде или лжи оцениваются некоторой постоянной, одинаковой для всех людей вероятностью), и далее общественная проблема решается как простая арифметическая задача. Естественно, что все подобные попытки были обречены на неудачу и не могли сыграть положительной роли в развитии науки. Напротив, их косвенным результатом оказалось то, что примерно в 20-х-30-х годах XIX века в Западной Европе повсеместное увлечение теорией вероятностей сменилось разочарование и скептицизмом. На теорию вероятностей стали смотреть как на науку сомнительную, второсортную, род математического развлечения, вряд ли достойный серьезного изучения.

UPD

Это обязательно нужно добавить.

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

Спасибо большое @taujavarob, который совершенно справедливо заметил, что автор старательно избегает применять Аристотелеву логику.

Про логику.

И действительно, именно с тех пор как Бертран Рассел придумал вот эту интересную задачку все математики стали избегать применять Аристотелеву логику без оглядки.

«Жил был в своей крепости барон и люди шли к нему со своими жалобами и бедами, ну и надоели ему совсем. Нанял он сторожа (наверно датасаетиста) и приказал ему: - спроси каждого, кто придет: - зачем пришел?

Если скажет правду - повесь его, если соврёт - утопи в крепостном рву. На некоторое время наладилось — сторож ( сильный датасаентист ) то повесит, то утопит. Но в один день пришел посетитель, что-то сказал и прошёл!

Теперь вопрос — что такого сказал посетитель, что сторож его пропустил?»

Не уверен, что Бертран Рассел сформулировал такими словами и выражениями, но смысл передан точно и однозначно и именно так я помню ту лекцию в университете.

Задачка эта в классической, Аристотелевой логике решения не имеет и пришлось Давиду Гильберту придумывать нумерацию, но и та не прошла, что изящно и показал Курт Гёдель.

Вот с тех пор и не придумали ничего лучше. Проверили, подправили арифметику, матан и другие разделы и только теорвер переделали в 70 годы прошлого века. Пер Мартин-Лёф придумал и показал новый подход к описанию вероятности. Но поскольку к этому времени почти все привыкли к классическому теорверу, то так и продолжают им пользоваться.

В результате получается страшное!

На полном серьезе вот наш коллега ( Senior ML Engineer! ) утверждает, что случайный шум можно легко отфильтровать с помощью «комбинации свертки и макспула».

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

Именно поэтому начинающему и не очень грандмастеру data science нужно тщательно и аккуратно выбирать логику и основу для своих рассуждений.

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

В рамках классической логики рассуждения о предсказаниях будущего попросту не предусмотрены.

Сделайте её лучше

Сейчас мы все вольно или невольно используем machine learning. Нравиться нам или нет, но эта технология есть и будет. Так зачем в самом начале становления и распространения самим же закладывать в основу порочные рассуждения.

Мне совсем не нужно кого-то учить и тем более поучать, я хочу что бы наше дело - data science, стало полезней и приносило реальную пользу людям.




К сожалению, не доступен сервер mySQL