Этим летом у меня появилась возможность получить первый опыт стажировки, так как меня приняли в программу стажировки Faber Ventures. Мне очень повезло попасть в GetSocial, стартап B2B, который в режиме реального времени измеряет влияние контента своих клиентов на социальные сети и, что более важно, помогает им продвигать и максимизировать охват своего контента. Это отличная компания, и я приветствую всех, чтобы проверить это!

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

Мне были даны разные варианты развития проектов и большая свобода в их реализации. Я начал с создания внутреннего API, позволяющего двум разным системам взаимодействовать друг с другом, что помогло мне познакомиться с ruby ​​и rails — двумя технологиями, которые я никогда раньше не использовал.

После этого я обратил свое внимание на проблему извлечения дополнительной информации из статей, опубликованных клиентами. Среди прочего требовалось знать тему статьи и ее ключевые слова. После изучения этого было две возможности; мы могли бы либо сами построить модель, либо использовать уже существующий API. Поскольку мы нашли API, который делал именно то, что нам было нужно, мы выбрали его. Так что моя работа на этом этапе заключалась в том, чтобы заставить это работать и запустить в производство. В этом процессе я поближе познакомился с рельсами и некоторыми из их основных жемчужин, таких как Sidekiq и ActiveRecord.

Хотя команда GetSocial очень веселая и дружелюбная, она также ожидает хорошего кода! Мне пришлось вносить изменения в код несколько раз, пока он не был готов к работе. Я узнал из первых рук, что лучшие практики программного обеспечения и качество кода — это не только то, о чем люди говорят, чтобы хорошо выглядеть, но и то, что на самом деле имеет большое значение на практике, и это правильно!

В конце июля и начале августа я сделал небольшой перерыв в GetSocial, чтобы посетить трехнедельный курс Data Science в UCL в Лондоне. Я был очень взволнован этим, и я не был разочарован. Этот курс охватывал некоторые темы статистического машинного обучения, с которыми я уже был знаком, такие как линейная и логистическая регрессия, k-средние, PCA и перекрестная проверка, а также другие, с которыми я не был знаком, например k-nn, линейный дискриминантный анализ и ансамблевые методы. У меня также была возможность познакомиться с замечательными людьми со всего мира! Было действительно удивительно видеть, как все с таким разным опытом и опытом собрались вместе, я многому научился со всеми!

Вернувшись в GetSocial, я был очень мотивирован сделать все возможное, чтобы помочь им с тем, что осталось от моей стажировки. Я продолжил свою предыдущую работу, но на этот раз целью было превратить новые данные о статьях в полезную информацию для клиентов. Таким образом, моя работа заключалась в том, чтобы предлагать клиентам статьи в сети GetSocial, которые были не только популярны в тот момент, но и были персонализированы для клиента, которому я делал предложение. Благодаря этому проекту я многое узнал о рекомендательных системах; Я узнал о неперсонализированных рекомендациях (средние значения и популярность), персонализированных рекомендациях, таких как фильтрация на основе контента, совместная фильтрация и гибридные подходы. В Интернете также было доступно много подробностей о том, что крупные компании, такие как linkedin, quora и netflix, делали в своих рекомендательных системах, и это тоже было очень познавательно. В конце концов, учитывая контекст нашей проблемы и временные ограничения, мы реализовали простую гибридную модель, основанную на популярности и особенностях контента. Для этого мы использовали python (numpy, pandas и т. д.) и базы данных NoSQL. Было очень сложно подумать обо всех вещах, которые входят в такую ​​​​систему, особенно о необходимости управлять всеми различными требованиями к скорости, памяти и т. Д. Мне очень понравилось это, и в конце концов система давала довольно разумные рекомендации. что было здорово! Но потребуется еще много итераций для оптимизации модели после того, как она будет запущена в производство.

Учитывая все это, у меня был отличный летний опыт в GetSocial, и я не мог бы желать лучшего!