• Data science и качественный код

      Обычно модели машинного обучения строят в jupyter-ноутбуках, код которых выглядит, мягко говоря, не очень — длинные простыни из лапши выражений и вызовов "на коленке" написанных функций. Понятно, что такой код почти невозможно поддерживать, поэтому каждый проект переписывается чуть ли не с нуля. А о внедрении этого кода в production даже подумать страшно.


      Поэтому сегодня представляем на ваш строгий суд превью python'овской библиотеки по работе с датасетами и data science моделями. С ее помощью ваш код на python'е может выглядеть так:


      my_dataset.
          load('/some/path').
          normalize().
          resize(shape=(256, 256, 256)).
          random_rotate(angle=(-30, 30)).
          random_crop(shape=(64, 64, 64))
      
      for i in range(MAX_ITER):
          batch = my_dataset.next_batch(BATCH_SIZE, shuffle=True)
          # обучаем модель, подавая ей батчи с данными    

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


      Читать дальше →
    • Automatic Relevance Determination или машинное обучение когда данных очень мало

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


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


        Для этого вы можете воспользоваться методами байесовой статистики, например, Automatic Relevance Determination.

        Читать дальше →
      • Линейные модели: простая регрессия

        • Tutorial
        В прошлый раз мы подробно рассмотрели многообразие линейных моделей. Теперь перейдем от теории к практике и построим самую простую, но все же полезную модель, которую вы легко сможете адаптировать к своим задачам. Модель будет проиллюстрирована кодом на R и Python, причем сразу в трех ароматах: scikit-learn, statsmodels и Patsy.
        Читать дальше →
      • Знакомьтесь, линейные модели

          Машинное обучение шагает по планете. Искусственный интеллект, поскрипывая нейронными сетями, постепенно опережает людей в тех задачах, до которых успел дотянуться своими нейронами. Однако не стоит забывать и про простую модель линейной регрессии. Во-первых, потому что на ней построены многие сложные методы машинного обучения, включая нейронные сети. А, во-вторых, потому что зачастую прикладные бизнес-задачи легко, быстро и качественно решаются именно линейными моделями.
          И для начала небольшой тест. Можно ли с помощью линейной модели описать:
          — зависимость веса человека от его роста?
          — длительность ожидания в очереди в магазине в разное время суток?
          — посещаемость сайта в фазе экспоненциального роста?
          — динамику во времени количества человек, ожидающих поезда на станции метро?
          — вероятность, что клиент не оформит заказ на сайте в зависимости от его производительности?
          Как вы догадываетесь, на все вопросы ответ будет «Да, можно». Так что линейные модели не так просты, как может показаться на первый взгляд. Поэтому давайте познакомимся с их богатым разнообразием.
          Читать дальше →
        • Разбираемся с войной нейронных сетей (GAN)

            Generative adversarial networks (GAN) пользуются все большей популярностью. Многие говорят о них, кто-то даже уже использует… но, как выясняется, пока мало кто (даже из тех кто пользуется) понимает и может объяснить. ;-)
            Давайте разберем на самом простом примере, как же они работают, чему учатся и что на самом деле порождают.
            Читать дальше →
          • TensorFlow и логистическая регрессия

            • Tutorial
            После непродолжительной, но весьма кровавой войны мне все-таки удалось откомпилировать и собрать TensorFlow для GPU с CUDA capability=3.0. Теперь можно погрузиться в него основательно, потому что машинное обучение с GPU — это быстро, легко и приятно, а без GPU — порой лишь огромная потеря времени.

            Попробуем запрограммировать самую простейшую логистическую регрессию.
            Читать дальше →
          • Numpy и многопроцессорность

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