Получи случайную криптовалюту за регистрацию!

DziS Science

Логотип телеграм канала @dzis_science — DziS Science D
Логотип телеграм канала @dzis_science — DziS Science
Адрес канала: @dzis_science
Категории: Блоги
Язык: Русский
Количество подписчиков: 898
Описание канала:

Канал о жизни через призму науки о данных
Учусь сам, учу других
Пишу интересные статьи о соревновательном и коммерческом DS и его приложениях к жизни.
Создатель: @a_dzis

Рейтинги и Отзывы

3.67

3 отзыва

Оценить канал dzis_science и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

1

3 звезд

0

2 звезд

1

1 звезд

0


Последние сообщения

2023-01-30 15:51:27
Привет всем!
Работы по горло , даже писать некогда. Пытаюсь привести в норму все аспекты жизни.

Из последнего:

Решил 100 задач leetcode, даже в рамках этого получил значок. Вспомнил многое, даже научился чему-то полезному, что ранее не знал. Продолжаем в том же духе. Если вы еще это не сделали, открывайте и решайте. Без блокнота от leetcode я не уйду .

Прошел одно собеседование, жду результатов. Честно скажу, собеседование прошло без кода, по сути сплошной ML Design, пару статистических вопросов. Собой не доволен, мог объективно лучше.

Приступил к решению соревнования, совместно с крутыми ребятами, отмечу их тут и тут, под капитанством наставничеством Вани.
Будем честны, пока мой вклад около нулевой, пытаюсь обучить модели в рамках гипотезы. Парни жесткие, очень приятно с ними работать. Звучит как очень сильная заявка на медаль и, как результат, моего повышения до Kaggle Expert.

К сожалению, пока не было времени на поиски чего-то интересного в сфере и написании полезностей, думаю в ближайшее время станет по-легче. Событий, которые можно посетить/поучаствовать, кроме Kaggle мной замечено не было. Напишите в комментарии, если я прав .

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

Стараюсь минимум 2 раза в неделю заниматься спортом . Действительно помогает, спина меньше болит, рубашки сходиться начинают.

Ловлю сильные проблемы со сном, пытаюсь контролировать и спать по 8 часов. Как результат, то 4.5, то 11.5, в среднем 8

Приобрел чтиво от Б.Грэма "Разумный инвестор". Читал кто-то? Интересует вопрос рецессии в рамках экономических процессов, а то изо всех щелей эти фразы уже.

P.S. Пните, когда Алерон выпустит свой курс, а то уже 5 дней прошло.
244 views12:51
Открыть/Комментировать
2023-01-26 21:44:59
Интересный факт:
вошел в лидеры по вкладу в Open Source сообщество
Статистика на фото
495 viewsedited  18:44
Открыть/Комментировать
2023-01-17 18:48:00
В процессе реализации решений на Leetcode понял, что совсем не помню алгоритмы прохода по бинарному дереву .

Предлагаю вспомнить варианты поиска в глубину (Depth-first search).

Классических вариантов 3:
1. DFS Preorder. Классический проход в глубину, где сначала проходится корень дерева, далее спускается по каждой ветке слева направо вглубь до самого глубокого листа.

2. DFS Inorder. Обратный проход. Начинается с левого листа, далее в вершину, потом обратно на уровень ниже в правый лист.

3. DFS Posorder. Обратный проход. Начинается с левого листа нижнего, проходя по всем одноуровневым листам слева направо, только потом поднимаемся на уровень выше.

Для тех кто ничего не понял, приведены картинки и справа для сравнения поиск в ширину (BFS).

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

class Node:
def __init__(self, key):
self.left = None
self.right = None
self.val = key


def preorder(root):
return [root.val] + preorder(root.left) + preorder(root.right) if root else []

def inorder(root):
return inorder(root.left) + [root.val] + inorder(root.right) if root else []

def postorder(root):
return postorder(root.left) + postorder(root.right) + [root.val] if root else []


# Пример
if __name__ == "__main__":
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)

# Вызов функций
print(f"DFS preorder {preorder(root)}")
print(f"DFS inorder {inorder(root)}")
print(f"DFS postorder {postorder(root)}")

В целом, полезно знать при работе с графами. Могут спросить на душных технических собесах, к которым я и готовлюсь
769 views15:48
Открыть/Комментировать
2023-01-17 09:31:17
Привет всем

Прочитал очень занятную новость о новых способах использования GPT-3. Хотелось бы очень обсудить, так как тема достаточно интересная.

Koko - некоммерческая организация, специализирующаяся на психологической помощи подросткам и взрослым, посредством общения в Discord и Telegram.

Механизм помощи таков: пользователь отправляет через бота вопрос, на который получает ответ от волонтера .

Компания ради эксперимента ответила более нескольким тысячам пользователям, не используя единого волонтера…

Да, вы правильно догадались, с помощью GPT-3 .

Результат и мысли со-основателя Роберта Морриса можно почитать здесь.

Если в двух словах:
Около 4000 пользователей получили ответ
Время ответа сократилось на 50% и составило менее 1 минуты
Статистически значимый прирост удовлетворенности пользователей полученным ответом
Все рухнуло, когда пользователи заподозрили, что им отвечает модель, а не люди
Сразу пошла критика со стороны общественности, все начали замечать «железные» ответы (хотя до этого все было ок)

В целом, тест Тьюринга практически был пройден, но что-то пошло не так…

Как считаете, можно ли на данном этапе доверять такие важные аспекты жизни, как психологическую помощь ИИ
547 views06:31
Открыть/Комментировать
2023-01-15 13:45:54 Привет всем

Как и обещал, сегодня поговорим про понятие сезонности вакансий в индустрии.

Данный пост - мое мнение на личном опыте, оно не содержит истину в последней инстанции!

В этом нам помогут два друга Senior DS Вася и Петя . Для ясности процесса оба аналитика имеют схожий набор знаний, учились в одной группе.

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

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

Теперь рассмотрим сценарии поведения обоих друзей.

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

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

В рамках данного вопроса, нас интересует только первый пункт.

В целом, процесс в большинстве компаний выглядит следующим образом:

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

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

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

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

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

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

Это еще один фактор в сторону диапазона, описанного выше, когда вакансий больше всего.

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

Как вас наймут на работу, если руководитель, который должен согласовать вашу кандидатуру чилит на море ? Это чаще всего летние месяцы.

Итого, по моему мнению, самые оптимальные месяцы для поиска вакансий Апрель - Июнь.

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

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

По традиции , если понравилось.
443 viewsedited  10:45
Открыть/Комментировать
2023-01-13 16:25:08
Привет всем

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

В целом, по итогам нового года понял одно - не хватает спорта в жизни. Как понял? Чуть рубашку не порвал (к сожалению, не в бицепсе ). Как результат, максимально урезал количество потребляемых углеводов, начал ходить 2 раза в неделю в зал. Результатов пока нет, главное - система.
В мыслях постоянно меню фастфудов .

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

Если интересно, могу рассказать причину сезонности (с вас тогда , что б я понял, что интересно).

Мой план таков :

1. Для начала решил вспомнить, как кодить, начал решать задачи с LeetCode. Чувствую себя странно. Решая Easy, то ничего не получается, то сабмиты лучше 90% процентов сабмитов по времени и памяти. В среднем, не плохо. Цель - решать задачи, пока на лоб не полезут или пока не закончатся.

2. Подбираю свежие курсы для обновления своих знаний по NLP, хочу попробовать поковыряться в Reinforcement Learning. Любые ссылки на курсы приветствуются.

3. Понял, что очень хочу попасть в MADE, но уже в этом году не получится, а в следующем, я уже выбиваюсь из целевой аудитории.

4. Ориентируюсь на март-апрель на старт процесса уточнения своей рыночной стоимости как специалиста (назовем это так).

5. Недавно хвалил мед. соревнования, тут еле сдержался от еще одной. В итоге, прицеливаюсь в течение месяца начать работу над NLP соревой. Кто хочет поучаствовать совместно, пишите, пообщаемся.

6. Продолжать посещать различные DS митинги, конференции, пока правда ничего дельного не видел.

P.S. Один не безызвестный блогер пришел сначала с ухмылкой (второй канал уже больше моего, вот она благодарность ), потом с деловым предложением. Надеюсь на продуктивное сотрудничество, результат вам должен понравится.
525 views13:25
Открыть/Комментировать
2023-01-11 14:26:01
Привет всем

Наткнулся на интересный факт.

Не так давно мы проводили с вами зарядку , в которой упоминал немного модернизированную задачу Иосифа Флавия.

В исходном варианте задача состоит в поиске последнего удаленного элемента (его индекса).

Приложенное решение не является оптимальным для такой формулировки, так как его сложность O(nlog(n)) .

Дело в том, что ее можно решить за O(n) рекурсивно .

Решение основывается на том факте, что после удаления первого элемента, остается n-1 элемент, и отсчет удаления происходит с k позиции.

Тогда номера элементов в новой системе отсчета, относительно старой имеют следующую зависимость:
(старый номер - k)mod(n) = новый номер

Отсюда имеет место рекуррентное соотношение:
(josephus(n,k) - k)mod(n) = josephus(n-1, k)

Тогда, если задача стоит в поиске последнего элемента (в нашем случае она была усложнена с выводом), то она решается в 1 строчку:

def josephus(n, k):
return 0 if n == 0 else (josephus(n - 1, k) + k) % n

Знал такое решение? Ставь . Если не знал .
588 viewsedited  11:26
Открыть/Комментировать
2023-01-09 11:15:47

Господа, срочная новость, канал Саши был атакован. Перешлите всем кого знаете, что на него подписан!

Под предлогом рекламы предложили посмотреть материалы в zip-архиве. Как результат: Саша - привидение , канал скорее всего уже переписали на кого-то.

Будьте аккуратны! Не ведитесь на всякие файлы от левых людей.

P.S. Ожидаем контент 18+ на странице.

UPD: комменты уже закрыли

UPD 2: Алерон попросил накидать страйков на свой
канал с пометкой Fake Account и написать, что канал угнали мошенники!!!

UPD 3: Новый канал
@datafeel.
4.7K viewsedited  08:15
Открыть/Комментировать
2023-01-08 14:56:30
Привет всем!

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

Однако, в бесконечном процессе совершенствования мы банально не задаемся вопросом "А что есть работа мечты?". Этот вопрос не является таким очевидным, как может показаться с первого взгляда.

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

Все дело в том, что критерий идеальной работы не универсален, однако у каждого человека есть свой набор важных для него критериев.
По этим критериям каждую работу можно представить в виде многоугольника талантов (да-да, прямо как в Dota 2 ).

Идеальная работа - работа, у которой этот многоугольник полностью закрашен.

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

Например, для вас важна Зарплата, отношение с Начальством и Коллективом, насколько интересные Задачи и как удобен и доступен для вас Офис. Сравнивая все свои места работы, вы можете понять, где было по конкретному критерию все идеально, а где было так себе.

На основе такого опыта вы уже можете уточнить ваш многоугольник и набирать критерии наиболее важные при поиске нового место работы.

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

По традиции, если понравилась идея, с вас
728 views11:56
Открыть/Комментировать
2023-01-04 13:27:35
Знатно полетали сегодня ночью!

Заняв на public LB 19 место на новозимах, успешно, со всем топом, слетели вниз на 900+ позиций.

Лучшее решение этого соревнования - не решать его. То, что медицинские соревнования - цирк писал я, приват - подтвердил.

Основные моменты:

1. В топе много тех, кто взяли публичный кернел и заслали его 1 раз за все соревнование, и сразу в золото .
Это соревнование можно отнести к тем, которые для победы достаточно было потрудиться не сильнее, чем отправить sample_submission.csv.

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

3. Наш лучший теоретический результат на привате - 0.532. Это топ-8, но сабмит очень низкий на LB. Выбили его на 2 неделе соревнования .

4. Очень рад, что переборол желание разбираться в доменной области.

5. Процитирую победителя соревнования:

I won this competition by accident.
My best submission is an ensemble of a graph neural network and some public notebooks.
It scored well in public LB, but I later found out that the training code for the graph neural network had a fatal bug, and I predicted that it would eventually shake down.
However, the opposite of my prediction happened.
I am very confused now, but I will share my solution and what I discovered in this competition later.

Какое соревнование, такое и победное решение .

Касаемо нашего решения:
1. Использовали блендинг всех возможных существующих моделей.
2. Пробовали NLP для последовательностей.
3. Искали зависимости в данных, их нет, как и нет нормальных данных. Пытались генерить фичи, обучать бустинги, грустно получилось.
4. Очень классно LB реагировал на добавление шума, шумом можно было до топ 1 дойти. Чем и занимался топ-1 паблика.
5. Даже не пытались углубляться в доменную область. Причина: такие соревнования раз в тысячелетие, больше времени потратить впустую. Кто разбирался - сочувствую.

P.S. Больше смайликов и в жизни не использовал, чем за посты про данное соревнование.
618 viewsedited  10:27
Открыть/Комментировать