Выглянув в окно, я увидел оранжевое солнце и ощутил тяжесть красного неба — я чувствовал конец лета сейчас сильнее, чем когда-либо — Как это так быстро пролетело?
Я взглянул на экран компьютера и тяжело вздохнул. Закончено. Месяцы ежедневной работы и исследований привели к тому, чем я действительно горжусь. Но дорога к этому моменту была усеяна испытаниями и трудностями, о которых мне хотелось бы, чтобы кто-нибудь предупредил меня заранее.
В этом посте я постараюсь быть таким человеком для вас, если у вас еще впереди ваш первый проект по науке о больших данных.
1. Автоматизируйте столько, сколько сможете
Я столько всего забыл во время первой итерации работы с набором данных. Скажу честно, необходимость запускать 10 блокнотов Jupyter вручную и каждый раз менять одну переменную была кропотливой, отнимала время и высасывала волю к жизни.
Обычно мы начинаем вносить серьезные улучшения в нашу работу после того, как завершаем один цикл типичных шагов проекта по науке о данных. Они всегда выглядят примерно так:
Очистка данных -> Визуализация -> Разработка признаков -> Моделирование.
Некоторые шаги могут повторяться несколько раз и выполняться в разном порядке.
Это может занять много кода и охватывать несколько наборов данных. Я на горьком опыте убедился, что создание функций, максимально автоматизирующих работу, действительно повышает производительность.
Если вы создаете несколько графиков, отображающих числовые значения на гистограмме
, то, вероятно, вы устанавливаете плитку, размер шрифта и выполняете множество других настроек для каждого графика. Это также можно превратить в одну функцию, которая экономит место и время, когда вы захотите внести изменения.
Вы используете GridSearchCV для оптимизации гиперпараметров вашей модели? Большой! Теперь вы можете превратить его в функцию, которая принимает модель, векторы данных и гиперпараметры в качестве аргументов, и вы, вероятно, автоматизировали значительную часть своего моделирования. Особенно, если вы планируете использовать несколько моделей.
Вы поблагодарите себя, когда блестящая идея появится только после того, как первая модель будет обучена, если она изменит набор данных, то, вероятно, все шаги придется повторить!
Будьте мудры, автоматизируйте.
2. Заранее продумайте файловую структуру
Пусть тот, кто создает свой проект в одном блокноте Jupyter, первым бросит камень в стеклянный дом.
Я не говорю, что создавать весь проект в одном файле — это неправильно. Я думаю, что это вполне жизнеспособно, когда нам нужно выполнить одну несколько несложную задачу.
Он имеет свою цель, но не является ответом на все вопросы :)
Представьте себе один файл записной книжки с несколькими сотнями строк кода для очистки данных, еще несколько сотен для разработки функций, а затем для визуализации и моделирования. Очень легко заблудиться и запутаться.
Если ваш проект будет охватывать несколько наборов данных, потребуется много кода для каждого из этапов проекта. Подумайте об использовании даже самой простой файловой структуры, создав такие папки, как:
- наборы данных
- data_cleaning
- модели
Затем создайте файлы и напишите соответствующий код для каждого шага в его папке. Это ни в коем случае не оптимальный способ структурирования вашего проекта, но, безусловно, шаг в правильном направлении.
Планируйте структуру вашего проекта, чтобы сэкономить время и повысить производительность.
3. Проводите время с данными и будьте скромнее
Я боюсь не человека, который проанализировал 10 000 наборов данных один раз, а человека, который проанализировал один набор данных 10 000 раз.
Потратить время на то, чтобы действительно понять, как были собраны данные, что означает каждая переменная, и подумать о них в контексте метрики производительности — вот что отличает посредственного специалиста по данным от отличного.
Если вы перейдете к разработке функций без надлежащего знания о данных, вы можете потратить свое время, что еще хуже, если вы узнаете, что упустили что-то важное в конце этапа моделирования.
Подумайте, какие переменные или их комбинации могут нести новую неявную информацию. В ваших данных есть «дата производства» и «дата продажи» бывших в употреблении принтеров? Теперь вы можете рассчитать возраст товара в продаже и получить новую переменную!
Вы, вероятно, не найдете каждую деталь, которая будет полезна поначалу. Это может даже занять до конца проекта. Иногда это требует, чтобы вы начали с нуля, и это может быть сложно. Вот где хорошая файловая структура и автоматизация могут действительно помочь.
Подумайте о данных и пожинайте плоды лучших моделей.
4. Не бойтесь бросать себе вызов
«Ключ к жизни — это принимать вызовы. Как только кто-то перестанет это делать, он умрет». — Бетт Дэвис
Когда я начал работать над своим проектом, я был в восторге от нового набора данных, изучения предметной области и применения своих знаний на практике. Мне не потребовалось много времени, чтобы понять, что только использование того, что я знаю, не приведет к значительному росту.
Ежедневное чтение Towards Data Science, просмотр видео на YouTube о новых моделях, новых подходах позволили мне попробовать много нового в этом проекте.
Это было очень тяжело. Например, я мало что знал о древовидной модели XGBoost, просто слышал, что она очень приличная. Здесь, в моем проекте, я потратил много времени, чтобы узнать, как это работает (изучая AdaBoost и light-gbm по пути), и это заставило меня чувствовать себя действительно хорошо и уверенно в его использовании.
Я рекомендую канал StatQuest на YouTube, чтобы узнать о них, если вам интересно!
https://www.youtube.com/channel/UCtYLUTtgS3k1Fg4y5tAhLbw
Я также никогда особо не интерпретировал модели, я по умолчанию использовал .feature_importances из sci-kitlearn и как бы с этим справлялся. В этом проекте я много читал об этом, а также использовал значения SHAP. -it-to-me-ab81cc69ef30»
и здесь
https://christophm.github.io/interpretable-ml-book/shapley.html)
Новый проект. Новые возможности.
Попробуйте что-то новое или узнайте больше о том, что вы уже используете.
Это проект, о котором я говорю https://github.com/PatWieczorek/twitter_sentiment_stock_prediction
Спасибо, что потратили свое драгоценное время, чтобы прочитать мой первый пост в блоге. Потребовалось много усилий и многократных переписываний, чтобы добраться до этой точки. Надеюсь, вы узнали что-то новое!
Не стесняйтесь обращаться ко мне по адресу [email protected], я с нетерпением жду ваших интересных идей!