Pull to refresh
4
0
Send message

Краткий курс машинного обучения или как создать нейронную сеть для решения скоринг задачи

Reading time 28 min
Views 208K
image

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

Если тебе интересно машинное обучение, то приглашаю в «Мишин Лернинг» — мой субъективный телеграм-канал об искусстве глубокого обучения, нейронных сетях и новостях из мира искусственного интеллекта.

Вопросы, которые разобраны в статье:

• Как собрать и подготовить данные для построения модели?
• Что такое нейронная сеть и как она устроена?
• Как написать свою нейронную сеть с нуля?
• Как правильно обучить нейронную сеть на имеющихся данных?
• Как интерпретировать модель и ее результаты?
• Как корректно оценить качество модели?
Поехали!
Total votes 51: ↑42 and ↓9 +33
Comments 43

Mockанье зависимостей в node.js приложениях

Reading time 6 min
Views 9.9K

Mocks, fakes, and stubs — три столпа юнит тестирования. Конечно же все знают что это такое, как солить и когда есть. Я честно тоже так думал, пока не столкнулся с действительностью, под которую мне пришлось немного прогнуться.


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


Component = proxyquire.noCallThru().load(‘../Component’, {
 
     ‘../../core/selectors/common': { getData }

}).default;
Читать дальше →
Total votes 9: ↑8 and ↓1 +7
Comments 13

Что такое TLS

Reading time 9 min
Views 460K
Данный текст является вольным переводом вот этой главы замечательной книги «High Performance Browser Networking» авторства Ильи Григорика. Перевод выполнялся в рамках написания курсовой работы, потому очень вольный, но тем не менее будет полезен тем, кто слабо представляет что такое TLS, и с чем его едят.

Общие сведения о TLS

Протокол TLS (transport layer security) основан на протоколе SSL (Secure Sockets Layer), изначально разработанном в Netscape для повышения безопасности электронной коммерции в Интернете. Протокол SSL был реализован на application-уровне, непосредственно над TCP (Transmission Control Protocol), что позволяет более высокоуровневым протоколам (таким как HTTP или протоколу электронной почты) работать без изменений. Если SSL сконфигурирован корректно, то сторонний наблюдатель может узнать лишь параметры соединения (например, тип используемого шифрования), а также частоту пересылки и примерное количество данных, но не может читать и изменять их.
Читать дальше →
Total votes 45: ↑43 and ↓2 +41
Comments 20

Docker в продакшене — чему мы научились, запустив более 300 миллионов контейнеров

Reading time 7 min
Views 70K
Docker в продакшене на Iron.io


Ранее в этом году (прим. 2014 г.), мы приняли решение запускать каждую задачу на IronWorker внутри своего собственного Docker контейнера. С тех пор мы запустили более 300 000 000 программ внутри собственных Docker контейнеров в облаке.

После нескольких месяцев использования, мы хотели бы поделиться с сообществом некоторыми из проблем, с которыми мы столкнулись в построении инфраструктуры, основанной на Docker'e, как мы преодолели их, и почему это стоило того.
Читать дальше →
Total votes 52: ↑49 and ↓3 +46
Comments 10

Реализация словаря в Python 2.7

Reading time 15 min
Views 114K
В этой статье пойдёт речь о том, как реализован словарь в Python. Я постараюсь ответить на вопрос, почему элементы словаря не упорядочены, описать, каким образом словари хранят, добавляют и удаляют свои элементы. Надеюсь, что статья будет полезна не только людям, изучающим Python, но и всем, кто интересуется внутренним устройством и организацией структур данных.
Читать дальше →
Total votes 65: ↑64 and ↓1 +63
Comments 37

Зачем vi-топор программисту 21-го века

Reading time 5 min
Views 57K
Не помню, когда и при каких именно обстоятельствах, но как-то очень давно я открыл для себя Git. Поначалу я не совсем, конечно, понял его преимуществ перед другими системами контроля версий, но уже порядком к тому времени подустав от TFS, которую на тот момент мы использовали в компании, решил его попробовать.

Git очень быстро завоевал мою любовь и с тех пор я даже не представляю себе свою работу без него.

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


Читать дальше →
Total votes 112: ↑62 and ↓50 +12
Comments 168

Структуры данных: двоичная куча (binary heap)

Reading time 4 min
Views 229K
Двоичная куча (binary heap) – просто реализуемая структура данных, позволяющая быстро (за логарифмическое время) добавлять элементы и извлекать элемент с максимальным приоритетом (например, максимальный по значению).

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

Введение


Двоичная куча представляет собой полное бинарное дерево, для которого выполняется основное свойство кучи: приоритет каждой вершины больше приоритетов её потомков. В простейшем случае приоритет каждой вершины можно считать равным её значению. В таком случае структура называется max-heap, поскольку корень поддерева является максимумом из значений элементов поддерева. В этой статье для простоты используется именно такое представление. Напомню также, что дерево называется полным бинарным, если у каждой вершины есть не более двух потомков, а заполнение уровней вершин идет сверху вниз (в пределах одного уровня – слева направо).



Читать дальше →
Total votes 72: ↑58 and ↓14 +44
Comments 58

Анализ Вконтакте на примере книжных предпочтений участников культурных сообществ

Reading time 7 min
Views 59K

Рис.  3. – Книги каких авторов из рейтинга топ100 читают пользователи Вконтакте

Для всех диаграмм в статье есть интерактивные визуализации: graphgrail.com/gg-client/vk_books.html
К 2014 году потенциал традиционных подходов к развитию аналитики социальных процессов оказался исчерпан в силу нескольких причин, главная из которых – неспособность созданных в рамках данных подходов решений адаптироваться к изменившимся условиям формирования общественных законов. Речь идет об их недостаточной динамичности и неприспособленности для обработки данных, поступающих в больших объемах в режиме времени, близком к реальному. Но самый серьезный удар по классической аналитике нанес взрывной рост объемов неструктурированных данных. [1]
Читать дальше →
Total votes 32: ↑23 and ↓9 +14
Comments 71

Руководство хакера по нейронным сетям. Глава 2: Машинное обучение. Обучение сети на основе метода опорных векторов (SVM)

Reading time 8 min
Views 15K
Содержание:
Глава 1: Схемы реальных значений
Часть 1:
   Введение   
      Базовый сценарий: Простой логический элемент в схеме
      Цель
         Стратегия №1: Произвольный локальный поиск

Часть 2:
         Стратегия №2: Числовой градиент

Часть 3:
         Стратегия №3: Аналитический градиент

Часть 4:
      Схемы с несколькими логическими элементами
         Обратное распространение ошибки

Часть 5:
         Шаблоны в «обратном» потоке 
      Пример "Один нейрон"

Часть 6:
      Становимся мастером обратного распространения ошибки


Глава 2: Машинное обучение
Часть 7:
      Бинарная классификация

Часть 8:
      Обучение сети на основе метода опорных векторов (SVM)

Часть 9:
      Обобщаем SVM до нейронной сети

Часть 10:
      Более традиционный подход: Функции потерь



В качестве конкретного примера давайте рассмотрим SVM. SVM – это очень популярный линейный классификатор. Его функциональная форма имеет именно такой же вид, как я описывал в предыдущем разделе — f(x,y)=ax+by+c. На данном этапе, если вы видели описание SVM, вы наверняка ожидаете, что я буду определять функцию потерь SVM и погружаться в пояснения свободных переменных, геометрических понятий больших полей, ядер, двойственности и пр. Но здесь я бы хотел воспользоваться другим подходом.
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Comments 3

Руководство хакера по нейронным сетям. Глава 2: Машинное обучение. Бинарная классификация

Reading time 4 min
Views 18K
Содержание:
Глава 1: Схемы реальных значений
Часть 1:
   Введение   
      Базовый сценарий: Простой логический элемент в схеме
      Цель
         Стратегия №1: Произвольный локальный поиск

Часть 2:
         Стратегия №2: Числовой градиент

Часть 3:
         Стратегия №3: Аналитический градиент

Часть 4:
      Схемы с несколькими логическими элементами
         Обратное распространение ошибки

Часть 5:
         Шаблоны в «обратном» потоке 
      Пример "Один нейрон"

Часть 6:
      Становимся мастером обратного распространения ошибки


Глава 2: Машинное обучение
Часть 7:
      Бинарная классификация

Часть 8:
      Обучение сети на основе метода опорных векторов (SVM)

Часть 9:
      Обобщаем SVM до нейронной сети

Часть 10:
      Более традиционный подход: Функции потерь



В последней главе мы рассматривали схемы с реальными значениями, которые вычисляли сложные выражения своих исходных значений (проход вперед), а также мы смогли рассчитать градиенты этих выражений по оригинальным исходным значениям (обратный проход). В этой главе мы поймем, насколько полезным может быть этот довольно простой механизм в обучении машины.
Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Comments 4

Офис Google в Швейцарии

Reading time 3 min
Views 59K
Привет, Хабровчане. Новый год я провел в городе Цюрих, где пообщался с несколькими сотрудниками корпорации зла, и прогулялся по их офису.

В своем посте я постараюсь описать побольше социальных особенностей работы в Google в Швейцарии, но скрыть от вас интерьер офиса я не могу, он шикарен :)

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

Итак, в Цюрихе находится центральный офис Google в Европе.



В нем работает около 1500 сотрудников, из них примерно 60 русскоговорящих. Хантят их как из других офисов (например, много людей переезжают из Московского офиса Google), так и напрямик.

UPD. Мо многочисленным просьбам в комментариях сделал отдельную тему для вопросов относительно работы в офисе Google в Цюрихе: habrahabr.ru/blogs/google/138980

Читать дальше →
Total votes 163: ↑157 and ↓6 +151
Comments 117

Регистрация и сдача TOEFL

Reading time 4 min
Views 9.7K
image

Сегодня мы публикуем новую статью из цикла о тесте TOEFL. Напомним, что в предыдущей статье рассказывали о самом главном — подготовке к сдаче TOEFL. И теперь пришло время поделиться с вами информацией о самом ответственном мероприятии — регистрация и сдача.
Читать дальше →
Total votes 20: ↑16 and ↓4 +12
Comments 6

Как я уехал работать программистом в Швецию (Часть 1)

Reading time 8 min
Views 32K
На Хабре уже писали про то, как айтишники переезжают в Лондон, Сан-Франциско и некоторые другие зарубежные локации, а также весьма толково про эмиграцию вообще. К своему удивлению, я не нашел аналогичной заметки про Швецию. Поскольку в настоящее время проживаю в славном городе Стокгольме и работаю в шведской компании, решил исправить эту ситуацию.
Читать дальше →
Total votes 53: ↑47 and ↓6 +41
Comments 7

Неверная интерпретация алгоритма Ахо-Корасик

Reading time 7 min
Views 21K
В далеком (а может и не очень далеком) 1975 году Альфред Ахо и Маргарет Корасик опубликовали статью, в которой был подробно описан алгоритм эффективного поиска всех вхождений всех строк-образцов в заданную строку. В дальнейшем этот алгоритм и получил название «алгоритм Ахо-Корасик». Неудивительно, что через некоторое время появились технические и «художественные» переводы данной статьи на русский язык. Порой мне даже встречались вольные изложения сути алгоритма в том виде, в котором его понимает автор. Причем последний, судя по тексту, узнал об алгоритме далеко не из первоисточника. Я не знаю существовал ли перевод, который послужил первоисточником проблемы, но мне всё больше и больше попадаются статьи с описанием алгоритма Ахо-Корасик, в котором допущена одна и та же кардинальная ошибка. Последней каплей была статья пользователя rmq на хабре, которую данная ошибка не миновала. Собственно об этой ошибке мне и хотелось бы рассказать общественности в своей статье.
Замечание: статья пользователя rmq, как выяснилось позже, не содержит этой ошибки. Как она решена там расскажу ниже. А ему огромное спасибо, если бы не его топик я бы не написал свой и не получил бы инвайт!
Перед началом, еще пара слов о целевой аудитории: Скорее всего, тем, кто давно знаком с алгоритмом Ахо-Корасик, моя статья будет не интересна, так как о его особенностях они давно уже знают. По крайней мере, все мои знакомые программисты не один раз применявшие данный алгоритм знают о существовании его неверных интерпретаций не понаслышке. А вот новичкам и тем, кому не довелось часто применять его на практике, эта статья может оказаться довольно полезной.
Итак, начнем.
Читать дальше →
Total votes 57: ↑55 and ↓2 +53
Comments 10

Тест IELTS — общая информация

Reading time 4 min
Views 13K
image

Регулярно читая посты на Geektimes, нам подумалось, что определенный интерес вызывает тема, связанная с тем, чтобы уехать учиться в зарубежный университет или устроиться на работу в крупную западную компанию за рубежом. Как правило, первое невозможно без сдачи теста, определяющего уровень владения иностранным языком, а для второго это просто большой плюс. В подавляющем большинстве вузов, причем, не только англоязычных стран, требуется сертификат, подтверждающий уровень владения английским. Поэтому мы решили опубликовать для вас подборку из полезных статей об экзаменах IELTS, TOEFL, GMAT, GRE и SAT.

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

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

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

Давайте начнем!

Читать дальше →
Total votes 32: ↑24 and ↓8 +16
Comments 16

Postgres. Выборка N случайных записей

Reading time 6 min
Views 35K
При работе над одним проектом возникла необходимость написать некое подобие тестовой системы. Задача формулировалась примерно так:

  • из N записей в базе необходимо выбрать m (3-5) случайных строк в серии из k выборок (преимущественно k=2).

А теперь то же самое человеческим языком: из таблицы нужно два раза выбрать по 3-5 случайных записей. При этом не должно быть дубликатов и выборка должна происходить случайным образом.

Первое, что приходит в голову:

 SELECT *
  FROM data_set
  WHERE id NOT IN (1,2,3,4, 5)
  ORDER BY random()
  LIMIT 5;

И это даже будет работать. Вот только цена такого решения…
Читать дальше →
Total votes 56: ↑51 and ↓5 +46
Comments 47

Сегодня день рождения великого популяризатора науки Карла Сагана

Reading time 1 min
Views 9.3K


9 ноября 1934 года родился американский астроном, астрофизик и выдающийся популяризатор науки Карл Саган.

Он вдохновил не одно поколение мальчишек и девчонок заниматься наукой. Известный астрофизик и популяризатор науки Нил Деграсс Тайсон, например, рассказывал в своем интервью, как, будучи еще мальчишкой, он получил приглашение от Карла Сагана посетить его лабораторию в Корнельском университете, что повлияло на его выбор профессии. Под катом много видео.
Читать дальше →
Total votes 37: ↑33 and ↓4 +29
Comments 7

JSR 133 (Java Memory Model) FAQ (перевод)

Reading time 25 min
Views 146K
Добрый день.
В рамках набора на курс «Multicore programming in Java» я делаю серию переводов классических статей по многопоточности в Java. Всякое изучение многопоточности должно начинаться с введения в модель памяти Java (New JMM), основным источником от авторов модели является «The Java Memory Model» home page, где для старта предлагается ознакомится с JSR 133 (Java Memory Model) FAQ. Вот с перевода этой статьи я и решил начать серию.
Я позволил себе несколько вставок «от себя», которые, по моему мнению, проясняют ситуацию.
Я являюсь специалистом по Java и многопоточности, а не филологом или переводчиком, посему допускаю определенные вольности или переформулировки при переводе. В случае, если Вы предложите лучший вариант — с удовольствием сделаю правку.
Этот статья также подходит в качестве учебного материала к лекции «Лекция #5.2: JMM (volatile, final, synchronized)».

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Ну и да, приходите учиться ко мне!


JSR 133 (Java Memory Model) FAQ


Jeremy Manson и Brian Goetz, февраль 2004

Содержание:
Что такое модель памяти, в конце концов?
Другие языки, такие как C++, имеют модель памяти?
Что такое JSR 133?
Что подразумевается под «переупорядочением» (reordering)?
Что было не так со старой моделью памяти?
Что вы подразумеваете под «некорректно синхронизированы»?
Что делает синхронизация?
Как может случиться, что финальная поля меняют значения?
How do final fields work under the new JMM?
Что делает volatile?
Решила ли новая модель памяти «double-checked locking» проблему?
Что если я пишу виртуальную машину?
Почему я должен беспокоиться?
Читать дальше →
Total votes 56: ↑51 and ↓5 +46
Comments 32

Еще раз про учебу и работу ИТ-шника в Германии

Reading time 5 min
Views 118K
Доброго времени суток Хабр.

Я читал множество статей на Хабре по поводу учебы в Германии, но часто их пишут люди, которые приехали сюда именно получать высшее образование. Я же в Германии вырос, поэтому розовые очки несколько потускнели и я смогу немного разбавить восторженные отзывы об этой стране и о системе обучения в частности.
Читать дальше →
Total votes 79: ↑66 and ↓13 +53
Comments 187

Как работают рекомендательные системы. Лекция в Яндексе

Reading time 11 min
Views 137K

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





План лекции:


  1. Виды и области применения рекомендательных систем.
  2. Простейшие алгоритмы.
  3. Введение в линейную алгебру.
  4. Алгоритм SVD.
  5. Измерение качества рекомендаций.
  6. Направление развития.

Под катом вы найдете конспект лекции и презентацию
Total votes 63: ↑56 and ↓7 +49
Comments 42

Information

Rating
Does not participate
Registered
Activity