• Анализ данных — основы и терминология

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

    Согласно википедии,
    Анализ данных — это область математики и информатики, занимающаяся построением и исследованием наиболее общих математических методов и вычислительных алгоритмов извлечения знаний из экспериментальных (в широком смысле) данных; процесс исследования, фильтрации, преобразования и моделирования данных с целью извлечения полезной информации и принятия решений.
    Говоря чуть более простым языком, я бы предложил понимать под анализом данных совокупность методов и приложений, связанных с алгоритмами обработки данных и не имеющих четко зафиксированного ответа на каждый входящий объект. Это будет отличать их от классических алгоритмов, например реализующих сортировку или словарь.
    Читать дальше →
  • Рубрика «Читаем статьи за вас». Февраль — Март 2018


      Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество!

      Читать дальше →
    • MobileNet: меньше, быстрее, точнее

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

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

        В этой статье мы поговорим о MobileNet, передовой архитектуре сверточной сети, позволяющей делать всё это и намного больше.
        Читать дальше →
        • +10
        • 5,8k
        • 5
      • Рубрика «Читаем статьи за вас». Декабрь 2017 — Январь 2018


          Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество!

          Читать дальше →
          • +64
          • 9,4k
          • 2
        • Слухи об отмене теоремы Котельникова сильно преувеличены

          • Перевод

          tl;dr:


          Учёные из Колумбийского университета во главе с Кеном Шепардом и Рафой Юсте заявили, что обошли столетнюю теорему отсчётов (теорема Найквиста — Шеннона, теорема дискретизации, в русскоязычной литературе — теорема Котельникова): 1, 2. Теперь фильтры защиты от наложения стали необязательными, ведь шум от наложения спектров можно восстановить после дискретизации. Звучит безумно? Да. Я предлагаю $1000 первому, кто докажет, что это не безумие. Чтобы получить награду, обязательно прочтите до конца.

          «Фильтруй перед дискретизацией!»


          Эта мантра насмерть вбита в головы поколений студентов-инженеров. Здесь под «дискретизацией» подразумевается преобразование непрерывной функции времени в серию дискретных значений. Такой процесс происходит везде, где компьютер оцифровывает сигнал из реального аналогового мира. «Фильтровать» — значит удалять из сигнала высокочастотные составляющие. Поскольку этот процесс происходит в аналоговом мире, то требует реального аналогового оборудования: цепей из резисторов, конденсаторов и усилителей. Создание такой цепи может стать утомительным и трудоёмким процессом, например, если на электронных микросхемах не хватает места. Научная группа Шепарда рассмотрела это ограничение в контексте устройства для записи сигналов от нервных клеток.

          Теперь авторы заявляют, что изобрели «парадигму сбора данных, которая не требует фильтров для защиты от наложения для каждого канала, тем самым преодолевая ограничения масштабирования существующих систем». По сути они говорят, что вместо аппаратных цепей можно использовать программное обеспечение, которое работает на цифровой стороне уже после дискретизации. «Ещё одним преимуществом такого подхода к сбору данных является то, что все шаги обработки сигнала (разделение каналов и удаление) реализованы в цифровом виде», сказано в научной работе.
          Читать дальше →
        • Введение в квантовые вычисления

          • Перевод
          Привет, Хабр! Совсем недавно мы рассказывали вам о квантовых вычислениях и языке Q#. Сегодня же мы уйдем в теорию еще глубже и рассмотрим историю квантовых вычислений. Кроме того, в этой статье вы найдете 5 требований к квантовому компьютеру. Какими свойствами должна обладать машина будущего? Читайте под катом!

          Читать дальше →
          • +14
          • 9,6k
          • 6
        • Ой, у вас баннер убежал!

          Ну. И что?
          Реклама
        • Использование библиотеки Python Control Systems Library для проектирования систем автоматического управления

          • Tutorial

          Здравствуйте!


          С появлением библиотеки Python Control Systems Library [1], решение основных задач проектирования систем автоматического управления (САУ) средствами Python значительно упростилось и теперь практически идентично решению таких задач в математическом пакете Matlab.

          Однако, проектирование систем управления с применение указанной библиотеки имеют ряд существенных особенностей, которых нет в документации [1], поэтому особенностям использования Python Control Systems Librar и посвящена данная публикация.

          Начнём с инсталляции библиотеки. В документации говориться о загрузке двух модулей slycot и control, на самом деле для нормальной работы нужна ещё библиотека numpy+mkl, остальные устанавливаются автоматически при загрузке control.

          Указанные модули можно скачать с сайта [2]. В документации так же сказано, что для интерфейса по умолчанию нужно просто импортировать контрольный пакет следующим образом: import control.

          Однако, при таком импортировании библиотека не работает ни одном из примеров. Для импортирования библиотеки необходимо применить from control import* как и для импортировании окружения matlab: from control. matlab import *[1].

          Рассматривать специализированную библиотеку Python Control Systems Library можно только применительно к задачам проектирования систем автоматического управления, поэтому мы так и поступим.
          Читать дальше →
        • Дональд Кнут: вот это поворот

          • Перевод
          image

          Когда вы входите в мой дом… эм… Мы с женой хотели, чтобы у нас были какие-либо произведения искусства в доме, которые были бы личными и также связанными с тем, чем мы занимаемся. И поэтому вы можете увидеть две вещи: одна из них это кривая дракона, я расскажу вам о ней больше через минуту. И другая это вот эта работа. Это строчка из “Дороги к мудрости” Пита Хайна:

          imageДолжны мы,
          Чтоб к мудрости
          Вечной добраться,
          Что нам
          Так заманчиво
          Брезжит,
          Опять
          И опять,
          И опять
          Ошибаться,
          Но реже
          И реже,
          И реже.

          Это одна из моих любимых фраз. Своего рода история всей моей жизни — это совершение ошибок и попытки научиться чему-то на них. Эту фразу спроектировали в форме суперэллипса, который является одним из великих открытий Пита Хайна. Этот эллипс более полный и он использовался во многих архитектурных изделиях.
          Читать дальше →
        • Умный «фейс-контроль»: алгоритмы машинного обучения для эффективного кэширования данных на SSD



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

            В этом материале руководитель исследовательской лаборатории «Рэйдикс» Светлана Лазарева рассказывает о новом алгоритме заполнения параллельного кэша в СХД, который основан на алгоритме машинного обучения.
            Читать дальше →
          • Как производится оценка состояния объекта?

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

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

            Я понимал, что на этой основе можно построить иную математику с иными аксиомами. Этого я не сделал, но запомнил, что для оценки состояния нужно указать минимальное время, в течение которого есть смысл говорить о совершении измерения, как для определения вещества нужен минимальный объем. Тогда данное время будет считаться мгновением для оценки данного состояния. Это время может быть разным для разных свойств и методов оценки. Например, для того, чтобы понять, какого цвета автобус при помощи глаз, нужны миллисекунды, а для того, чтобы понять в каком состоянии сейчас находится климат Земли при помощи термометра, нужно несколько лет.
            Читать дальше →
            • –7
            • 1,6k
            • 9
          • Пол Грэм: как делить доли в стартапе

            • Перевод
            image

            Июль 2007

            Инвестор готов дать вам деньги за некий процент вашего стартапа. Соглашаться? Вы вот-вот наймете своего первого сотрудника. Сколько акций ему пообещать?

            Это одни из тех сложных вопросов, которые встают перед основателями. Но на это есть ответ:

            1/(1 — n)

            На что бы вы ни собирались обменять акции вашей компании, будь то наличные, или сотрудники, или акции другой компании — формула та же. Вам следует менять n процентов вашей компании в том случае, если в итоге оставшиеся у вас (100 — n)% больше, чем стоила компания до обмена.

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

            В общем, если n является той частью компании, которой вы жертвуете, сделка будет хорошей в том случае, если стоимость компании будет больше чем 1/(1 — n).
            Читать дальше →
            • +18
            • 8,2k
            • 7
          • Пойди туда, не знаю куда: по следам конференции SmartData



              Конференций, связанных с AI / ML / data science в последнее время и у нас стало довольно много. Организаторы до сих пор ищут форматы, концепции конференций меняются, но состав спикеров повторяется процентов на 50.

              Задача поиска формата стояла и перед программным комитетом SmartData. Задача эта довольно размытая. Кто тот человек, который занимается анализом и / или обработкой данных, что ему интересно? От участников конференции мы получили частичные ответы на эти вопросы, но данных хочется больше. В связи с этим хочу поделиться тем представлением об идеальном мире, которое сложилось на данный момент, и пригласить читателей к дискуссии в комментариях. Помогите сделать такую конференцию, на которую вам потом самим захочется сходить.

              Кроме вопросов о ваших интересах и задачах, за кликом вас ждут две ранее не публиковавшиеся видеозаписи выступлений с первой конференции, технический приём написания текстов на Хабр и один забавный факт о беспилотных автомобилях.
              И кое-что ещё
              • +26
              • 2,6k
              • 3
            • Алан Кей: как бы я преподавал Computer Science 101

              • Перевод
              «Одна из причин, чтобы на самом деле поступить в университет — это выйти за рамки простой профессиональной подготовки и вместо этого уцепиться за более глубокие идеи.»


              image

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

              Другим вопросом было: «Кто такой Дуглас Энгельбарт?». Несколько людей сказали: «разве он не был как-то связан с компьютерной мышью?» (и это меня очень разочаровало, поскольку моё научное сообщество приложило много усилий для того, чтобы ответить на этот вопрос было возможно после двух-трех кликов мышки и убедиться, что Энгельбарт действительно был как-то связан с компьютерной мышью).

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

              Я работаю на полставки на кафедре вычислительной техники Калифорнийского университета несколько лет (по сути я профессор, но мне не нужно ходить на заседания кафедры). Периодически я веду занятия, иногда у первокурсников. За эти годы и без того низкий уровень любопытства к Computer Science значительно снизился (но также возрос уровень популярности, поскольку вычислительная техника рассматривается как путь к хорошо оплачиваемой работе, если вы умеете программировать и получили сертификат в лучшей 10-ке школ). Соответственно, ни один студент ещё не жаловался на то, что первым языком в Калифорнийском университете является С++!
              Читать дальше →
              • +10
              • 11,7k
              • 9
            • Квантовые вычисления и язык Q# для начинающих

              • Перевод
              • Tutorial
              Возможно, вы узнали о выпуске пакета средств квантовой разработки Quantum Development Kit и подумали, что это звучит безумно круто… а потом вспомнили, что про квантовую механику почти ничего не знаете. Но ничего страшного. Через 30 минут вы будете знать о кубитах, суперпозиции и квантовой запутанности достаточно, чтобы написать свою первую программу и, что более важно, неплохо понимать, что она делает.

              Читать дальше →
            • Как мы моделируем предметную область в предикатах второго порядка и не замечаем этого

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


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


                Пользоваться этим массивом данных так же неудобно, как и его хранить. Строить запросы к этому массиву данных – тоже неудобно. Например, у нас есть запись о том, что станок существовал с12 июня по 17 июня и находился в этот период в машинном отделении ГЭС. Но на основе этой записи мы ничего не можем сказать о существовании и нахождении станка в период с 13 июня по 15 июня, потому что при таком подходе к моделированию для ответа на это вопрос нам нужна отдельная соответствующая запись.

                Читать дальше →
              • Что мы знаем о ландшафте функции потерь в машинном обучении?

                  TL;DR


                  1. В глубоких нейронных сетях основным препятствием для обучения являются седловые точки, а не локальные минимумы, как считалось ранее.
                  2. Большинство локальных минимумов целевой функции сконцентрированы в сравнительно небольшом подпространстве весов. Соответствующие этим минимумам сети дают примерно одинаковый loss на тестовом датасете.
                  3. Сложность ландшафта увеличивается по приближении к глобальным минимумам. Почти во всём объёме пространства весов подавляющая часть седловых точек имеет большое количество направлений, по которым из них можно сбежать. Чем ближе к центру кластера минимумов, тем меньше «направлений побега» у встреченных на пути седловых точек.
                  4. Всё ещё неясно, как найти в подпространстве минимумов глобальный экстремум (любой из них). Похоже, что это очень сложно; и не факт, что типичный глобальный минимум намного лучше типичного локального, как в плане loss'a, так и в плане обобщающей способности.
                  5. В сгустках минимумов существуют особые кривые, соединяющие локальные минимумы. Функция потерь на этих кривых принимает лишь чуть большие значения, чем в самих экстремумах.
                  6. Некоторые исследователи считают, что широкие минимумы (с большим радиусом «ямы» вокруг) лучше узких. Но есть и немало учёных, которые полагают, что связь ширины минимума с обобщающей способностью сети очень слаба.
                  7. Skip connections делают ландшафт более дружелюбным для градиентного спуска. Похоже, что вообще нет причин не использовать residual learning.
                  8. Чем шире слои в сети и чем их меньше (до определённого предела), тем глаже ландшафт целевой функции. Увы, чем более избыточна параметризация сети, тем больше нейросеть подвержена переобучению. Если использовать сверхширокие слои, то несложно найти глобальный минимум на тренировочном наборе данных, но обобщать такая сеть не будет.

                  Всё, листайте дальше. Я даже КДПВ ставить не буду.
                  Мне нужны пруфы!
                • Снижение сложности вычислений при операциях с векторами и матрицами

                    Введение


                    Ввиду того, что при решении задач оптимизации, дифференциальных игр, и в 2D и 3D расчётах, а вернее при написании софта, который проводит вычисления для их решения одними из наиболее часто выполняемых операций являются векторно-матричные преобразования типа $aX+bY$, где $a,b$ — скалярные значения, $X, Y\in R^n$ — вектора или матрицы размерности $R^{n\times m}$.


                    Собственно вот такие:


                    image
                    (источник).


                    Так, чтобы не углубляться в теорию оптимизации за примерами достаточно вспомнить формулу численного интегрирования Рунге-Кутты четвёртого порядка:


                    $Y_{n+1}=Y_n+\frac{h}{6}(k_1 + 2 k_2 + 2 k_3+k_4),$


                    где $Y_i$ — очередное значение интегрируемой функции $f(t,Y)$ $h$ — шаг метода, а $k_i$, $i=1..4$ — значения интегрируемой функции в некоторых промежуточных точках — в общем случае векторах.


                    Как можно заметить основную массу математических операций как для векторов, так и для матриц составляют:


                    • сложение и вычитание — более быстрые;
                    • умножение и деление — более медленные.

                    О сложности вычислений хорошо написано в соответствующем курсе МФТИ.


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


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

                    Читать дальше →
                  • Контроллер Arduino с датчиком температуры и Python интерфейсом для динамической идентификации объектов управления

                      Введение


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

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

                      В основу данного проекта положены аппаратные средства для прототипирования на базе платформы Arduino со множеством совместимых с ними модулей и свободных программных средств Python, образующих интегрированную среду разработки Arduino Software.
                      Читать дальше →
                    • Самые распространённые вопросы на собеседовании программиста графики

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

                      Вопросы делятся по темам: С++, математика, оптимизация и компьютерная графика. Очевидно, это главные темы в повседневной работе. C++ часто используется в реальных задачах, поэтому естественно, что на собеседовании задают много вопросов по нему. Кроме того, в программировании графики требуется лучшее знание математики, чем в большинстве других видов программирования, поэтому математические навыки имеют первостепенное значение. Наконец, для достижения 60 FPS и рендеринга с высокой графической точностью обязательными являются сильные навыки оптимизации. Давайте рассмотрим популярные вопросы в каждой категории.
                      Читать дальше →
                    • Hessian-Free оптимизация с помощью TensorFlow

                        Добрый день! Я хочу рассказать про метод оптимизации известный под названием Hessian-Free или Truncated Newton (Усеченный Метод Ньютона) и про его реализацию с помощью библиотеки глубокого обучения — TensorFlow. Он использует преимущества методов оптимизации второго порядка и при этом нет необходимости считать матрицу вторых производных. В данной статье описан сам алгоритм HF, а так же представлена его работа для обучения сети прямого распространения на MNIST и XOR датасетах.

                        Читать дальше →
                        • +29
                        • 5,9k
                        • 8
                      Самое читаемое