Aspiring Data Science – Telegram
Aspiring Data Science
385 subscribers
465 photos
12 videos
12 files
2.15K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
Forwarded from New Yorko Times (Yury Kashnitsky)
Она выбивает +10% к зарплате с помощью одного простого трюка…
#career #tips

Пародия на дешевый кликбейт есть, теперь можно к сути. Поделюсь одним лайфхаком про переговоры, узнал про него, кажется, в книге “Never Split the Difference: Negotiating As If Your Life Depended On It” (отзыв на Goodreads – https://www.goodreads.com/review/show/4376349339). Пока применил два раза – консультировал друзей, сработало. Два наблюдения – это уже статистика, мы ведь все знаем, что две точки уникально определяют прямую, а значит, и регрессионную модель.

Итак, хак в том, что если хочешь зарплату X, не проси именно ее, а называй вилку, условно, от 1.1*X до 1.2*X. При этом избегай круглых цифр. Если тебя спрашивают “ну что, сколько хочешь?” и ты говоришь “200к евро в год” или “500к рублей в месяц”, то складывается ощущение, что ты не особо то и обдумала этот вопрос, а взяла круглую цифру с потолка.

А вилка создает пространство для маневра, тем более завышенная. Итого, если хочешь 120к в год, говори что-то типа “Я хочу от 136200 до 148400 в зависимости от того-то и того” (тут можно назвать другие перки типа sign-on бонусов, компенсации участия в конференции и т.д.). При такой постановке вопроса, вполне вероятно сторговаться по нижней границе обозначенной вилки (136200), что и так лучше чем исходные ожидания (120к). Сейчас рыночек мерзлый, так что есть риск, что работодатель все равно прогнет по зарплате, но в таком случае хотя бы есть некий буфер для уступок (между теми же 136200 и 120к).

PS. По переговорам, кстати, все советуют этот годный длиннопост https://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/. Вероятно, на рынке не скоро будет классно и получится диктовать свои условия, но прокачать переговорные навыки все равно стоит.
#ml #shap #interpretabiity #mutualinformation

О, этот удивительный мир халатности и безответственности. А может, просто здорового пофигизма? Как общеизвестно, пакет SHAP раскладывает предсказание модели для каждой строки данных на линейную сумму "вкладов" каждого признака, по сути формируя матрицу NxM (строк данных на число признаков). На базе этой информации SHAP предлагает пользователю несколько основных визуализаций:

1) summary всех признаков, отсортированные по убыванию модуля средней значимости на всём рабочем датасете

идёт в 2 вкусах: плоский одноцветный bar plot, где построен только модуль среднего, и более продвинутый beeswarm plot, где напротив признака отображены значения Шэпли этого признака для все строк данных. Да ещё и раскрашены в цветовой шкале значений этой фичи. Тем самым по beeswarm можно понять, к примеру, что в среднем повышение/понижение какой-то фичи сподвигает модель прогнозировать более высокий/низкий таргет.

2) объяснение индивидуального прогноза

идёт в 3 фасонах: force plot, waterfall plot, decision plot. последний обладает широкой функциональностью: может отображать несколько примеров сразу, работает с мультиклассовой классификацией, позволяет кластеризовать "пути" в пространстве признаков, по которым модель приходит к решению;

3) объяснение вклада индивидуального признака: scatte plot, ранее dependence plot. По X значение признака, по Y значение кэфа Шэпли для этого примера. Похоже чем-то на PDP по виду (но разная суть). И вот тут автор SHAP, видимо, вдохновлённый тем, что PDP может быть не только одномерным, предлагает бесплатно из коробки киллер фичу: так как по Y на графике все равно уже есть вариабельность, SHAP вам автоматически раскрасит точки в цвета...другой наиболее влияющей фичи (на основную фичу вашего графика). Звучит шикарно, и я думал, что "наиболее влияющая" уж в пакете-то SHAP определяется хитрыми интеракциями теории игр... Полез в код, куда там... Во-первых, там просто np.corrcoeff, во-вторых, и то на максимум 10_000 точек. Так а как же квартет Энскомба? Нелинейность у нас отменили? Хочу попробовать заменить пирсоновский corrcoeff на хотя бы взаимную информацию.

UPD: на мой взгляд, MI куда чётче разделяет низкие и высокие прогнозы. Пример в аттаче. Надо бы замёрджить PR.
Forwarded from NOdata Миша
Догадались что за формула?

Ответ:
f1 score

#смешно
👍5
Forwarded from Борис опять
В последнее время у меня в канале много постов о собственном сверхчеловечестве.

Вот что остается за кадром:
* Перестал читать статьи. Причем очень жалею об этом. Вчера первый раз за два месяца прочитал блог пост о статье и сразу начал галлюцинировать идеями стартапов. Статьи реально необходимая для развития штука, которая круто развивает воображение.
* Перестал проходить Anki. Накопилось что-то около 50 непройденных карточек. Мое золотое правило такое: если я за день прошел карточку в Анки, то день прошел не зря, потому что я хотя бы не откатился назад.
* Перестал системно заниматься курсом по Computer Vision. Мой план это реализовать на классическом CV panorama stitcher (сделано), классификатор, сегментатор и детектор. Плюс все базовые алгоритмы: billinear interpolation (сделано), Histogram normalization (сделано), Harris (сделано), SIFT (сделано на 90%, дальше бросил), HOG, RANSAC, итд.
* Спорта больше нет. Точнее все еще нет с конца февраля. Хотя бы стал делать 10-минутную разминку по утрам, чтобы все не болело.
* Хобби практически нет. Раньше я водил партии в Fate Core (настольная ролевка как DnD, но с большим фокусом на повествование, а не на кубы) и занимался пением. Теперь возобновил пение хотя бы раз в две недели.
* Общения практически нет. Тяжело поддерживать удаленный контакт с друзьями, хоть CRMку заводи. Но все реально, если прикладывать усилия: берешь и звонишь. Или общаешься с новыми знакомыми из местных эмигрантов. Или с коллегами с работы. Короче варианты есть, но я ничего не делаю.

Все из-за чего-то похожего на то, о чем пишет Лаида выше. Только в моем случае причина в постоянном переключении. И работа, и учеба, и адаптация в новой стране, и консультации по поиску работы, и преподавание в ОТУС, и пет проект в который я серьезно закопался, и друзья зовут делать ML на аутсорсе для рекламной компании.

Я очень сильно концентрируюсь на работе из-за того, что реальность оказалась не такой, как хотелось бы. Банально просел уровень жизни, но это не самое главное. Главное, что появилось ощущение, будто обстоятельства диктуют мне как жить: теперь ты просто чувак с работой белого воротничка, живешь в маленьком городке и трясешься о счетах за электричество. Возникает внутренний бунт. Кажется, что сейчас я похреначу и снова все будет красочно и искрометно. Конечно истиный путь это сесть в позу лотоса, принять реальность и просто жить в новых условиях, но я пока не познал дзен.
3
Порвало на части )

#fun #yandex #dataleaks
2
Давеча была новость, что в гугле "красный код" после выхода чатГПТ. А ведь не зря! В ней я спокойно нашел то, что не смог "нагуглить" или "навикить".
🔥1
https://3dnews.ru/1081225/moskovskiy-student-napisal-diplom-s-pomoshchyu-chatgpt-i-dage-smog-ego-zashchitit

"Алексей Жадан писал дипломную работу по теме «Анализ и совершенствование управления игровой компании». На начальном этапе он сгенерировал план работы по заданной теме и направил его научному руководителю. План пришлось переработать в соответствии с методическим пособием по написанию научных работ. Для этого студент попросил ChatGPT изучить справочный материал и адаптировать под него план диплома.

Для генерации введения к работе Жадан отправил чат-боту основной запрос на английском языке, а позднее просил дополнить материал из-за ограничений бота по количеству символов. Получившийся текст объёмом 6200 символов он перевёл на русский. Аналогичным образом была написана теоретическая часть работы. Чтобы сделать выводы по трём частям первой главы, студент скопировал последние абзацы каждой части и попросил чат-бота обобщить их.

Вторая и третья части работы требовали анализа с расчётами и практическими рекомендациями. Для их генерации студент нашёл похожую работу по другой компании и отправил её ChatGPT, попросив изменить содержание под свою тематику. В общей сложности на подготовку дипломной работы ушло 23 часа. Из них 15 часов ушло на написание материала через ChatGPT и 9 часов — на редактирование сгенерированного материала. При этом оригинальность диплома составила 82 %. Научный руководитель и дипломная комиссия отмечали несвязность и нарушение логики русского языка в работе, но Жадан смог защитить её, получив оценку «удовлетворительно»."
Расскажу про одну статью, которая перманентно висит у меня во вкладках в браузере: https://arxiv.org/pdf/1908.08962.pdf . Называется Well-Read Students Learn Better: On the Importance of Pre-training Compact Models.

В этой статье рассказывается про уменьшенные версии модели BERT: от самой маленькой - 2 слоя attention, 2 головы attention на каждом слое (Tiny) до базовой - 12 слоев attention, 12 голов на каждом (Base).
Центральная тема статьи - трехэтапный метод обучения этих моделей, называемый Pre-trained Distillation (Figure 1 в статье или Рис. 1 в посте ниже). Имеется в виду следующая схема: сначала маленькая моделька предобучается на стандартной задаче Masked Language Modelling (учится угадывать пропущенные слова в текстах), потом в нее дистиллируются знания из большой модели (маленькую модель учат подражать "поведению" большой - в данном случае ее просто учат выдавать те же выходы, что и большая, на каждом показанном примере из датасета), и только затем происходит обычное дообучение (fine-tuning).
В результате получения столь всестороннего образования маленькие модельки начинают показывать достойные результаты на датасете GLUE (General Language Understanding Evaluation) - лучше, чем при стандартной схеме Pre-Training + Fine-tuning. Ну а самостоятельно испытать способности этих маленьких моделек нам предлагают прямо на хабе huggingface, куда они и были выложены: https://huggingface.co/google/bert_uncased_L-12_H-768_A-12 (правда, я не до конца уверена в том, после какого именно метода обучения выложены веса, об этом будет сказано ниже) .
Кроме сравнения разных методов обучения, авторы проводят еще и анализ того, как ширина и глубина влияют на качество модели. Мне очень понравилась эта тема, и я сильно залипла в график на Рис. 2 (также известный как Figure 6). Здесь PD означает Pre-trained Distillation, PF - Pre-trained Fine-tuning. Красным я отметила результаты, соответствующие размерам моделей, выложенных на huggingface. Справа от графика я поместила кусок из таблицы, выложенной на huggingface по ссылке.
Вроде бы, результаты из таблицы соответствуют результатам обучения после Pre-training (MLM) + Fine-tuning с графика. Но в моем эксперименте Tiny Bert с huggingface на SST-2 показала результат лучше, чем в таблице - на уровне Pre-trained Distillation. Может быть, у меня по-другому разбит датасет SST-2? Или они вставили на страницу в huggingface не ту таблицу и все-таки выложили модели не просто после Pre-training, а после Pre-trained Distillation (хотя тогда неясно, на каком именно датасете проводилась дистилляция, ведь говорится, что она task-specific)? Хотелось бы уточнить у авторов, но они пока не отвечают.
Ну а в общем и целом выводы из графика такие, что при продвинутых методах обучения (D, PD, PF) глубина модели в среднем дает больший выигрыш в качестве, чем ширина, а при простейшем методе (Fine-tuning без предварительного обучения) и глубина, и ширина на датасетах из GLUE помогают мало.
Кроме прочего, авторы сравнивают указанные методы с методом truncation (когда маленькую модель инициализируют некоторым подмножеством весов большой) + distillation, а также изучают влияние того, на каком именно датасете производилась дистилляция, на итоговую точность, в частности, немного написали про явление domain shift (это когда целевая задача и задача дистилляции сильно отличаются).
В общем, получился обстоятельный анализ, который можно использовать как справочный материал для своих исследований.

#объяснения_статей
1
Forwarded from Записки Ппилифа (Ppilif Uliankin [GMT+1])
Про собеседования по алгоритмам #собесы

Когда ты устраиваешься в ML или в аналитику, много где надо пройти секцию c кодом. Чаще всего на этих секциях встречаются довольно простые алгоритмические задачки.

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

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

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

1. Читаешь условие. Проговариваешь свой алгоритм голосом. Оцениваешь голосом его сложность по памяти и времени. Если слишком большая, думаешь где ты в алгоритме делаешь лишние действия. Обычно, на секциях для аналитиков, все должно делаться за O(n).

Тут можно сформулировать самую грубую версию, оценить её сложность, а дальше в рассуждених улучшить её.

2. Если со сложностью все ок — проговариваешь голосом какие могут быть краевые случаи и как их надо обработать. Записываешь их.

3. Пишешь код в блокноте. Без автоподсказок и интерпретатора. Не запускаешь его до последнего.

4. Смотришь на получившийся код, выписываешь пару тестов для проверки — краевые и обычные, проговариваешь голосом, как тесты проходят сквозь код. Если нашел баг, правишь.

5. Запускаешь код. Если работает норм — комитишь на литкод. Если падает, смотришь тест, ищешь ошибку, правишь и больше не допускаешь.

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

Решать задачи с литкода — это, конечно, хорошо. Что делать если не шаришь во всех этих О(n)? Я бы в таком случае прочитал грокаем алгоритмы. Читается за выходные и открывает кучу чакр.

Ну а дальше можно пойти на литкод либо пальнуть яндексовые видосы про алгоритмы с Густокашиным. К ним прилагаются контесты, которые можно порешать. Не забывайте делать это по схеме, которую я вкинул выше. В любом собеседовании — главное разговор, а не задача.
🔥1
Forwarded from NOdata Миша
Посмотрел, что умеет Notion и написал об этом на vc

Если статья окажется для вас интересной, то не забудьте поставить ей лайк 👍

https://vc.ru/future/599192-notion-ai-iskusstvennyy-intellekt-uzhe-i-v-zametkah

#статьи
1
Forwarded from Вастрик.Пынь
🤖 ChatGPT. Когда уже нейросети наконец-то заменят кожаных ублюдков?

Много меня просили написать свои мысли по поводу ChatGPT. Написал пока три.

1. ChatGPT заменит людей, но только тех, которые не осилят сам ChatGPT. А для остальных он станет просто ежедневным компаньоном (уже стал)

2. «Большие дядьки» обосрутся и побегут скорее запрещать и ограничивать нейросети. А у простых людей прокачается новый скилл: детектор, что перед тобой нейросеть

3. Да, поисковики умрут, но не потому что ChatGPT их заменит

Развернул тут: https://vas3k.blog/notes/chatgpt/
😁1
#numpy #stats #percentile

А Вы задумывались, что вообще-то для вычисления перцентилей/квантилей есть КУЧА методов? По дефолту идёт линейный, но в доках в общем случае для неизвестного распределения рекомендуется median_unbiased.

Облом состоит в том, что numba параметр method не поддерживает.
👍1