После 4 лет работы с наукой о данных вот чему я научился

Трудности изучения науки о данных

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

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

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

Когда я впервые начал работать с данными, я пытался самообучаться R, следуя курсу Coursera «Наука о данных» Университета Джона Хопкинса. Судя по всему, это будет лучший язык науки о данных будущего. Причина в том, что это бесплатная и статистическая база, поэтому она естественным образом поддается машинному обучению.

На самом деле я думаю, что Python лучше, потому что он прост в использовании, API глубокого обучения обычно пишут на Python, а облачные вычисления также обычно используют Python. Если вы посмотрите в Интернете, в настоящее время Python является самым популярным языком, за которым следует JavaScript.

Сначала было сложно, но чем больше я практиковался и использовал StackOverflow, тем легче становилось. Я начал использовать TidyR и проигнорировал базовый R, потому что TidyR имеет лучший синтаксис. Я обнаружил, что база R слишком многословна.

Однако, когда я начал пробовать глубокое обучение, я обнаружил, что крупные игроки глубокого обучения (например, Tensorflow, Pytorch) были разработаны только для пользователей Python, поэтому мне пришлось выучить новый язык — еще одна кривая обучения.

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

Учитывая, что моя повседневная работа никогда не требовала особого машинного обучения, я фактически использовал Excel PowerQuery для выполнения большей части своих операций с данными, потому что это проще, чем кодирование. Только иногда я использую R или Python для более сложных вещей. На самом деле, в PowerBI вы можете очищать данные и запускать машинное обучение без необходимости учиться программировать. *Вы даже можете использовать Google Sheets для очистки данных и Weka для машинного обучения в качестве совершенно бесплатной опции.

2. Самое сложное в машинном обучении — это типы данных

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

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

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

На самом деле, корень проблемы был просто в моем плохом понимании языка, который я использовал. Честно говоря, я был «слишком» увлечен попытками заставить машинное обучение работать, поэтому проигнорировал основы.

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

3. Машинное обучение лучше всего использовать для автоматизации «обычного» мышления или рутинных задач.

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

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

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

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

4. Большую часть времени я потратил на поиск ответов на StackOverflow

При самообучении науке о данных большую часть времени я копировал и вставлял журналы ошибок в Google и смотрел, какие ответы я мог найти в StackOverflow. В большинстве случаев мне везло, и я получал ответ напрямую. В других случаях мне приходилось самостоятельно устранять неполадки. Например, почему я не мог загрузить данные в свою модель Xgboost? Просто я не стал делать фрейм данных разреженным. Небольшие вещи, которые были явными в руководствах по машинному обучению, но мои знания были настолько хрупкими в то время, что я действительно не понимал, что делаю, и мне нужно было несколько ответов StackOveflow, чтобы сказать мне.

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

5. Вместо этого должен был быть инженером данных

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

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

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

Выводы

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

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



Запланируйте сеанс DDIChat в разделе Наука о данных / AI / ML / DL:



Подайте заявку на участие в программе DDIChat Expert здесь.
Работайте с DDI: https://datadriveninvestor.com/collaborate
Подпишитесь на DDIntel здесь.