Голосовой ассистент и очки HoloLens помогут слабовидящим перемещаться

13 декабря 2018

Голосовой ассистент и очки HoloLens помогут слабовидящим перемещаться

Американские ученые разработали технологию CARA на базе очков дополненной реальности Microsoft HoloLens, которая поможет слабовидящим людям ориентироваться в пространстве. Каждый предмет в окружении получит свой “голос”, благодаря чему человек будет…

Американские ученые разработали технологию CARA на базе очков дополненной реальности Microsoft HoloLens, которая поможет слабовидящим людям ориентироваться в пространстве. Каждый предмет в окружении получит свой “голос”, благодаря чему человек будет понимать, что находится вокруг него. Технология позволит обходить препятствия, осуществлять навигацию в зданиях и на улице, формировать пространственную память.

Как работает устройство

С помощью очков HoloLens, устройство сканирует все поверхности и предметы, используя видео- и инфракрасные датчикию. Программа обнаруживает поверхности объектов с точностью до сантиметра и создает трехмерную карту окружающего пространства. Затем Cognitive Augmented Reality Assistant (CARA) конвертирует информацию, полученную из датчиков HoloLens, в аудиосообщения, придавая каждому объекту «голос», который человек слышит с помощью гарнитуры.

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

  • Режим«прожектора». Ассистент называет объект, на который направлен взгляд пользователя.
  • Режим сканирования. Ассистент называет слева направо все объекты, которые видит камера HoloLens.
  • Целевой режим. Подается информация только об одном объекте, если человеку нужно найти его или пройти рядом.

В тестировании технологии участвовали 7 человек с нарушениями зрения. Они использовали HoloLens, чтобы добраться в офис команды на втором этаже. Всем участникам удалось добраться до офиса с первого раза.

По данным ВОЗ, 1,3 миллиарда человек во всем мире живут с разными формами нарушения зрения: 217 миллионов людей попадают в категорию слабовидящих, а 36 миллионов — полностью слепых. Технология Caltech демонстрирует многообещающие результаты и может применяться в различных разработках для помощи людям с нарушениями зрения. В дальнейшем ученые собираются тестировать, как HoloLens и CARA работают в общественных местах с большим скоплением людей — в торговых центрах, магазинах, парках развлечений.

Поездка на беспилотном такси Waymo One — первые впечатления

13 декабря 2018
waymo

Поездка на беспилотном такси Waymo One — первые впечатления

В начале декабря Waymo запустили первый коммерческий сервис такси без водителей. Поездки пока доступны 400 людям — участникам Early Riders — программы тестирования беспилотных автомобилей Waymo One, которая работает с…

В начале декабря Waymo запустили первый коммерческий сервис такси без водителей. Поездки пока доступны 400 людям — участникам Early Riders — программы тестирования беспилотных автомобилей Waymo One, которая работает с апреля 2017. Редактор сайта The Verge Эндрю Хокинс одним из первых совершил несколько платных поездок и рассказал о своих впечатлениях.

Поездки

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

Журналист совершил три поездки на автомобиле Waymo и отметил, что качество движения улучшилось со временем. «Раньше казалось, что тебя везет подслеповатая бабушка. Теперь поездка ощущается в основном нормально». Автомобиль замедляется перед лежачими полицейскими, ускоряется, если нужно перестроиться, умеет совершать ряд сложных маневров, например, левые повороты. Несколько раз машина останавливалась, слегка заехав на пешеходный переход, после чего сдавала назад — Энди назвал это одним из самых удивительных моментов в поездке.

Посмотрите видео-отчет о поездке, выпущенный The Verge:

«Это похоже на поездку в Диснейленд», — сказал Диего Вера, участник программы Early Riders. Он так же отметил, что со временем машины стали двигаться более уверенно, почти как человек — ускоряться в определенные моменты, начинать ехать на желтый свет светофора.

Алекс Хоффман, инженер по кибербезопасности из Mesa, отметил, что автомобиль Waymo 3 раза «запутался» из-за большого куста возле офиса. «Я писал отзывы о поездке каждый раз, и в четвертый раз машина обошла его без проблем», — сказал Хоффман в интервью, опубликованном Waymo .

Площадь покрытия Waymo One сейчас составляет 250 км на территории Финикса и окрестностей. Всего автомобили проехали 16 миллионов километров по реальным дорогам с городским движением и 11 миллиардов в виртуальном симуляторе.

Приложение

Приложение похоже на минималистичную версию приложения Uber. После выбора маршрута программа рассчитывает стоимость поездки. Иногда на карте может отображаться сине-зеленая буква «W», указывающая на более доступное место для посадки или высадки. Пассажирам нужно немного пройтись, чтобы машинам Waymo было легче их найти. В приложении можно оценить качество поездки от 1 до 5 и оставить отзыв. Также можно моментально связаться со службой поддержки через чат или по телефону. Приложение будет доступно на iOS и Android и появится в сторах, когда компания откроет Waymo для широкого круга пользователей.

Приложение Waymo One

Сколько будет стоить поездка?

Учитывая огромную конкуренцию между Uber и Luft и низкую стоимость поездок, скорее всего поездки на Waymo тоже будут не слишком дорогими. За восьмиминутную поездку на расстояние 5 км журналист заплатил $7, что сопоставимо с ценой Uber и Lyft. Представители компании говорят, что стоимость поездки будет варьироваться в зависимости от спроса и расстояния.

Что дальше?

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

Waymo планирует приобрести 62 000 минивэнов Chrysler Pacifica и 20 000 электрических внедорожников Jaguar I-Pace, чтобы построить свой парк в течение следующих нескольких лет и расширять территорию покрытия в США. Недавно сервис получил разрешение на эксплуатацию автомобилей без водителя в Силиконовой долине и провел свою первую встречу с жителями города.

Составлена интерактивная карта компаний-разработчиков ИИ в России

12 декабря 2018

Составлена интерактивная карта компаний-разработчиков ИИ в России

Аналитическая компания «АйПи Лаборатория» представила интерактивную карту искусственного интеллекта России. На карте обозначены 323 компании, которые занимаются разработками в области ИИ, разделенные по сферам деятельности. Можно посмотреть географию, выручку, динамику роста…

Аналитическая компания «АйПи Лаборатория» представила интерактивную карту искусственного интеллекта России. На карте обозначены 323 компании, которые занимаются разработками в области ИИ, разделенные по сферам деятельности. Можно посмотреть географию, выручку, динамику роста рынка и т.д.

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

Отдельные страницы карты отображают информацию о динамике роста компаний в каждом сегменте с 2000 по 2017 год и динамику общей выручки. Вкладка «каталог» содержит классификацию компаний по областям деятельности.

Сферы использования ИИ

На графике выше показаны сферы, в которых компании чаще всего используют ИИ. Чаще всего компании в России применяют ИИ для бизнес-аналитики — 54 компании. На втором месте компьютерное зрение — 48 компаний. Также одними из самых частых сфер применения являются здравоохранение и создание систем обработки естественного языка — 40 компаний в каждой сфере.

Карта построена на открытых данных. Подробнее о методике построения и классификации можно прочесть на сайте.

Географическое распределение компаний по России. Самый большой круг — Москва, второй по величине — Санкт-Петербург

В следующую версию карты будут включены университеты, научные учреждения, публикации и патенты. Как и в первой версии, часть информации будет открыта, а часть доступна только для участников открытой конференции по искусственному интеллекту OpenTalks.AI.

Туториал: нейронная сеть на JavaScript в 30 строк кода

12 декабря 2018

Туториал: нейронная сеть на JavaScript в 30 строк кода

В этой статье будет показано, как создать и обучить нейронную сеть на JavaScript, используя Synaptic.js. Этот пакет позволяет реализовывать глубокое обучение в Node.js и в браузере. Будет создана простейшая возможная…

В этой статье будет показано, как создать и обучить нейронную сеть на JavaScript, используя Synaptic.js. Этот пакет позволяет реализовывать глубокое обучение в Node.js и в браузере. Будет создана простейшая возможная нейронная сеть — та, которой удается выполнить XOR операцию.

Перевод статьи «How to create a Neural Network in JavaScript in only 30 lines of code». Автор — Per Harald Borgen. Ссылка на оригинал — в подвале статьи. 

Вы можете видеть созданный мною интерактивный Scrimba туториал:

нейронная сеть на javascript

В Scribma туториале вы можете поиграться с сетью. Но перед тем, как посмотреть на код, давайте вспомним основы нейронных сетей.

Нейроны и синапсы

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

Существует множество типов нейронов. Наша сеть использует нейрон с сигмоидной функцией активации, которая принимает любое число и трансформирует его в значение, лежащее в диапазоне от 0 до 1.

Круг ниже показывает сигмоидный нейрон. На входе — 5, на выходе — 1. Стрелочки называются синапсами, они соединяют нейрон с другими слоями в нейросети.

сигмоидный нейрон

Почему красное число это 5? Это сумма из трех синапсов, которые соединены с нейроном. Это показано тремя стрелочками слева от нейрона. Поясню сказанное.

Слева можно видеть два плюс одно значения. Зеленые числа — значения 1 и 0. Параметр сдвига -2 — коричневое число. Сначала входные числа умножаются на соответствующие им веса 7 и 3 соответственно. Значения весов представляют синие числа.

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

веса и смещения - нейронная сеть JS

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

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

нейронная сеть

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

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

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

Подробное техническое рассмотрение обратного распространения ошибки.

Код нейросети JavaScript

Вы получили базовое представление о нейронных сетях, теперь самое время посмотреть на реализацию. Первое, что необходимо сделать, это создать слои. Это делается при помощи функции new Layer в synaptic. Число в скобках определяет, сколько каждый слой должен содержать нейронов.

Если вам трудно представить, что такое слой, посмотрите еще на скринкаст.

const { Layer, Network } = window.synaptic;
var inputLayer = new Layer(2);
var hiddenLayer = new Layer(3);
var outputLayer = new Layer(1);

Далее соединяем эти слои вместе и создаем инстанс новой сети, как показано ниже:

inputLayer.project(hiddenLayer);
hiddenLayer.project(outputLayer);
var myNetwork = new Network({
 input: inputLayer,
 hidden: [hiddenLayer],
 output: outputLayer
});

У нас получилась сеть с 2-3-1 нейронами в входном, скрытом и выходном слое, соответственно. Архитектура этой сети показана ниже:

XOR функция

Теперь давайте обучим нашу сеть:

// train the network - learn XOR
var learningRate = .3;
for (var i = 0; i < 20000; i++) {
  // 0,0 => 0
  myNetwork.activate([0,0]);
  myNetwork.propagate(learningRate, [0]);
  // 0,1 => 1
  myNetwork.activate([0,1]);
  myNetwork.propagate(learningRate, [1]);
  // 1,0 => 1
  myNetwork.activate([1,0]);
  myNetwork.propagate(learningRate, [1]);
  // 1,1 => 0
  myNetwork.activate([1,1]);
  myNetwork.propagate(learningRate, [0]);
}

Запускаем сеть 20 000 раз. Каждый раз распространяемся в прямом и обратном направлении четыре раза, проходя через четыре возможных входа для этой сети: [0,0], [0,1], [1,0], [1,1].

Начинаем с команды myNetwork.activate([0,0]), где [0,0] — данные, которые посылаются в сеть. Это прямое распространение, которое также называется активизацией сети. После каждого прямого распространения требуется сделать и обратное, тогда сеть обновит свои веса и свдиг.

Обратное распротстранение осуществляется командой myNetwork.propagate(learningRate, [0]). Параметр learningRate — константа, которая говорит сети, насколько каждый раз нужно изменять веса. Второй параметр — 0 представляет корректный ответ для заданного входа [0,0].

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

Сеть использует сравнение в качестве базиса для корректировки значений весов и сдвига. Поэтому в следующий раз предсказание будет немного точнее.

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

console.log(myNetwork.activate([0,0])); 
-> [0.015020775950893527]
console.log(myNetwork.activate([0,1]));
->[0.9815816381088985]
console.log(myNetwork.activate([1,0]));
-> [0.9871822457132193]
console.log(myNetwork.activate([1,1]));
-> [0.012950087641929467]

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

Как-то так. Хотя мы только немного коснулись нейронных сетей, этой статьи должно быть достаточно, чтобы поиграться с Synaptic и начать изучение области самостоятельно. Этот репозиторий содержит много хороших туториалов.

Наконец, когда выучите что-нибудь новое, обязательно поделитесь звоими знаниями с помощью скринкаста Scrimba и написания статьи!

Европейский союз — лидер по количеству научных публикаций в сфере ИИ, но Китай догоняет

12 декабря 2018

Европейский союз — лидер по количеству научных публикаций в сфере ИИ, но Китай догоняет

“Китай обгонит Европу по количеству публикаций исследовательских работ в сфере искусственного интеллекта в течение следующих четырех лет, если текущие тенденции сохранятся” — говорится в отчете аналитической компании Elsevier, опубликованном в…

“Китай обгонит Европу по количеству публикаций исследовательских работ в сфере искусственного интеллекта в течение следующих четырех лет, если текущие тенденции сохранятся” — говорится в отчете аналитической компании Elsevier, опубликованном в начале декабря. Согласно докладу, Европа — лидер в области научных исследований об ИИ на 2018 год. Индия занимает третье место по объему научных исследований в области ИИ после США и Китая. Германия и Япония занимают пятое и шестое место.

В дополнение к растущему количеству исследований от Baidu и Tencent, в Китае находятся некоторые из наиболее успешных стартапов. Например, в начале декабря появились новости о том, что Megvii — материнская компания Face ++ , планирует привлечь дополнительные 500 миллионов долларов при оценке в 3,5 миллиарда долларов. «Китай стремится к глобальному лидерству в с сфере искусственного интеллекта и поддерживается амбициозной национальной политикой», — говорится в отчете.

Топ стран по количеству публикаций. Данные за август 2018. Китай - 134 990, США - 106 600, Индия - 36 736, Великобритания - 35 302, Япония - 28 124
Топ стран по количеству публикаций. Данные за август 2018. Китай — 134 990, США — 106 600, Индия — 36 736, Великобритания — 35 302, Япония — 28 124

Самые растущие области — NLP и Computer vision

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

Число публикаций в разных областях ИИ
Число публикаций в разных областях ИИ

В глобальном масштабе количество опубликованных научных работ по искусственному интеллекту за последние пять лет увеличилось на 12,9%, количество препринтов ArXiv по NLP и компьютерному зрению выросло на 37%.

В ежегодном отчете о состоянии европейских технологий, опубликованном в прошлом году венчурной компанией Atomico, содержится призыв к расширению связей между технологическим сектором региона и исследовательскими институтами, чтобы конкурировать с Китаем и США.

Стартап кастомизирует косметику по уходу за кожей с помощью машинного обучения

11 декабря 2018
средства по уходу за кожей

Стартап кастомизирует косметику по уходу за кожей с помощью машинного обучения

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

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

Клиенты, которые хотят заказать косметику в Proven Skincare, предоставляют данные — возраст, этническую принадлежность, адрес, образ жизни и проблемы кожи, которые нужно решить. На основе данных о месте проживания анализируется состояние окружающей среды, количество ультрафиолета, жесткость воды и другие особенности, которые влияют на состояние кожи — всего 27 факторов. Доступ к геолокации также позволяет исследователям корректировать составы продуктов в зависимости от сезонных погодных изменений.

Полученную информацию сравнивают с базой Skin Genome, созданной на основе данных 4000 исследований и 8 миллионов отзывов потребителей о косметических продуктах. Программа выбирает, какие ингредиенты из 20 000 в базе данных подойдут конкретному клиенту с его потребностями. Например, одни кислоты подходят для работы с гиперпигментацией на афро-американской и азиатской коже с высоким содержанием меланина, а другие лучше работают на светлой и чувствительной.

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

В кафе Alibaba появились роботы-официанты для уборки посуды

11 декабря 2018

В кафе Alibaba появились роботы-официанты для уборки посуды

При супермаркетах Alibaba открыты роботизированные кафе Robot.He. Процесс выбора столика, заказа и получения еды в кафе полностью автоматизирован с 2016 года. Теперь в ресторанах появились роботы для уборки посуды. А…

При супермаркетах Alibaba открыты роботизированные кафе Robot.He. Процесс выбора столика, заказа и получения еды в кафе полностью автоматизирован с 2016 года. Теперь в ресторанах появились роботы для уборки посуды. А работники кафе выполняют только ту работу, с которой роботы пока не справляются — готовят еду. 

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

Роботы версии 2.0, выпущенные в 2018 году, научились самостоятельно заряжаться — при низком заряде батареи они подъезжают к зарядной станции и также самостоятельно возвращаются к работе после подзарядки. Кроме того, в кафе появились роботы, которых можно вызвать для уборки грязной посуды. Забрав тарелки, они отвозят их в кухню для мытья.

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

Alibaba открывает кафе в своих гипермаркетах и магазинах в Китае с января 2016 года, к концу 2018 их будет более 100.

Посмотрите, как работает кафе:

Open source инструмент на Python для выбора признаков нейронной сети

11 декабря 2018
выбор признаков нейронной сети питон

Open source инструмент на Python для выбора признаков нейронной сети

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

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

Перевод статьи «A Feature Selection Tool for Machine Learning in Python» by William Koehrsen, ссылка на оригинал в подвале статьи.

Разочарованный специальными методами выбора признаков, которые я раз за разом применял для задач машинного обучения, я построил класс для их выбора на Python, код доступен на GitHub. FeatureSelector включает в себя некоторые наиболее распространенные методы отбора, а именно:

  1. С высоким процентом пропущенных значений;
  2. Коллинеарные (сильно коррелированные);
  3. С нулевой важностью в древовидной модели;
  4. С низкой важностью;
  5. С единственным уникальным значением.

В этой статье мы рассмотрим работу FeatureSelector. Он позволяет нам быстро внедрять эти методы, обеспечивая более эффективный рабочий процесс. Feature Selector — это незавершенный проект, который будет продолжать улучшаться в зависимости от потребностей сообщества.

Датасет

В этом примере мы будем использовать датасет из соревнования Keggle Home Credit Default Risk machine learning competition. (Информация об этом соревновании приведена здесь). Весь датасет доступен для скачивания, и мы будем использовать его в качестве иллюстративного материала.

Пример данных. TARGET - это метка для классификации
Пример данных. TARGET — это метка для классификации

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

Запуск кода

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

(Обязательно запустите эти строки в том же каталоге, что и feature_selector.py)

from feature_selector import FeatureSelector
# Features are in train and labels are in train_labels
fs = FeatureSelector(data = train, labels = train_labels)

У нас есть пять методов поиска признаков для удаления. Мы можем получить доступ к любому свойству и удалить его из данных вручную или использовать функцию remove в FeatureSelector.

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

Пропущенные значения

Первый метод удаления является простым: он находит признаки с долей пропущенных значений выше указанного порога. В приведенном ниже примере ищутся признаки с более чем 60% пропущенных значений (жирным приведен результат поиска).

fs.identify_missing(missing_threshold = 0.6)
17 features with greater than 0.60 missing values.

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

fs.missing_stats.head()

доля пропущенных значений

Чтобы увидеть признаки для удаления, мы получаем доступ к атрибуту ops в FeatureSelector:

missing_features = fs.ops['missing']
missing_features[:5]
['OWN_CAR_AGE',
 'YEARS_BUILD_AVG',
 'COMMONAREA_AVG',
 'FLOORSMIN_AVG',
 'LIVINGAPARTMENTS_AVG']

Наконец, можно вывести график распределения пропущенных значений во всех признаках:

fs.plot_missing()
 график распределения пропущенных значений во всех признаках
График распределения пропущенных значений во всех признаках

Коллинеарные признаки

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

Метод identify_collinear находит коллинеарные признаки по заданному значению коэффициента корреляции. Для каждой пары коррелированных свойств он выбирает одно их них для удаления (поскольку нам нужно только удалить только одно из двух):

fs.identify_collinear(correlation_threshold = 0.98)
21 features with a correlation magnitude greater than 0.98.

Оптимальная визуализация, которую мы можем сделать с корреляциями, — это тепловая карта. Она показывает все признаки, которые имеют по крайней мере одну корреляцию выше порога:

fs.plot_collinear()

Как и раньше, мы можем получить доступ ко всему списку коррелированных свойств, которые будут удалены, или увидеть высококоррелированные пары свойств в таблице.

# list of collinear features to remove
collinear_features = fs.ops['collinear']
# dataframe of collinear features
fs.record_collinear.head()

Если мы хотим исследовать наш датасет, мы также можем построить график всех корреляций в данных с помощью команды plot_all = True:

Признаки с нулевой важностью

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

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

FeatureSelector вычисляет важность признаков с помощью Gradient Boosting Maching из библиотеки LightGBM. Важность признака усредняется по 10 циклам GBM, для уменьшения дисперсии. Кроме того, модель обучается с датасетом для проверки и ранней остановкой (эту опцию можно отключить), чтобы предотвратить переобучение.

Приведенный ниже код вызывает метод и ищет признаки с нулевой важностью:

# Pass in the appropriate parameters
fs.identify_zero_importance(task = 'classification', 
                            eval_metric = 'auc', 
                            n_iterations = 10, 
                             early_stopping = True)
# list of zero importance features
zero_importance_features = fs.ops['zero_importance']
63 features with zero importance after one-hot encoding.

Мы передаем следующие параметры:

  • task: либо «классификация», либо «регрессия», в зависимости от вашей задачи;
  • eval_metric: показатель, используемый для ранней остановки (не нужно, если ранняя остановка отключена);
  • n_iterations: количество циклов обучения;
  • early_stopping: использовать или не использовать раннюю остановку для обучения модели.

На этот раз мы получим два графика с помощью команды plot_feature_importances:

# plot the feature importances
fs.plot_feature_importances(threshold = 0.99, plot_n = 12)
124 features required for 0.99 of cumulative importance


Слева приведен график важности plot_n количества наиболее важных свойств (нормировка на 1). Справа приведен график зависимости важности от числа свойств. Вертикальная линия означает пороговое значение, в данном случае 99%.

Два важных замечания касательно метрики важности:

  • Обучение GBM является стохастическим, важность свойств будет разной при каждом запуске модели.

Это не должно оказать большое влияние (самые важные признаки не перестанут быть таковыми), но изменит порядок расположения некоторых признаков. Это также может повлиять на количество признаков с нулевой важностью. Не удивляйтесь, что значения характеристик меняются каждый раз!

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

Возможность удалить любые напрямую закодированные признаки есть. Однако, если мы будем заниматься машинным обучением после выбора признаков, нам все равно придется проводить прямое кодирование признаков!

Признаки с низкой важностью

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

Например, приведенный ниже код выводит признаки с важностью менее 99%:

fs.identify_low_importance(cumulative_importance = 0.99)
123 features required for cumulative importance of 0.99 after one hot encoding.
116 features do not contribute to cumulative importance of 0.99.

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

Чтобы просмотреть все значения важности, введите:

fs.feature_importances.head(10)

Метод low_importance заимствован из одного из PCA, где обычно остается только PC, необходимый для сохранения определенного процента отклонения (например, 95%). Процент от общей важности учитывается на основе той же идеи.

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

Признаки с единственным уникальным значением

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

В этом методе нет параметров для инициализации, в отличие от других методов:

fs.identify_single_unique()
4 features with a single unique value.

Можно построить гистограмму количества уникальных значений в каждой категории:

fs.plot_unique()

Важный момент — NaN по умолчанию отбрасываются до вычисления уникальных значений в Pandas.

Удаление признаков

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

Если мы хотим удалить все признаки, выбранные пятью методами, нужно ввести methods = ‘all’:

# Remove the features from all methods (returns a df)
train_removed = fs.remove(methods = 'all')
['missing', 'single_unique', 'collinear', 'zero_importance', 'low_importance'] methods have been run

Removed 140 features.

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

train_removed_all = fs.remove(methods = 'all', keep_one_hot=False)
Removed 187 features including one-hot features.

Возможно, было бы полезно проверить признаки, которые будут удалены, прежде чем продолжить работу! Исходный датасет хранится атрибуте data FeatureSelector в качестве резервной копии!

Одновременный запуск всех методов

Вместо использования методов по отдельности мы можем использовать все из них с identify_all. Для этого нужен набор параметров для каждого метода:

fs.identify_all(selection_params = {'missing_threshold': 0.6,    
                                    'correlation_threshold': 0.98, 
                                    'task': 'classification',    
                                    'eval_metric': 'auc', 
                                    'cumulative_importance': 0.99})
151 total features out of 255 identified for removal after one-hot encoding.

Обратите внимание, что количество признаков изменилось, потому что мы повторно запускаем модель. Для удаления признаков нужно вызвать функцию remove.

Заключение

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

Методы missing, collinear и single_unique детерминированы, в то время как методы, основанные на значении важности, будут меняться при каждом запуске. Выбор признаков, как это часто бывает в машинном обучении, в значительной мере эмпирический и требует тестирования нескольких комбинаций для получения оптимального результате. Лучше всего попробовать несколько конфигураций в схеме модели, и FeatureSelector предлагает быстрый анализ параметров для выбора признаков.

Интересные статьи:

VR позволяет школьникам изучать последствия сотрясения мозга

10 декабря 2018
VR сотрясение мозга

VR позволяет школьникам изучать последствия сотрясения мозга

По данным American Medical Asscociation каждый пятый спортсмен старшей школы получает сотрясение мозга. В штате Арканзас запустили новую интерактивную образовательную программу, которая использует VR технологии, чтобы помочь школьникам понять, какие…

По данным American Medical Asscociation каждый пятый спортсмен старшей школы получает сотрясение мозга. В штате Арканзас запустили новую интерактивную образовательную программу, которая использует VR технологии, чтобы помочь школьникам понять, какие риски и последствия несет в себе сотрясение.

Программа CrashCourse

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

Вторая часть программы называется Symptoms Simulator. Пользователь может на себе “ощутить” симптомы сотрясения. Это сделано для того, чтобы в дальнейшем школьники смогли обнаруживать признаки сотрясения самостоятельно. Кроме того, с помощью CrashCourse можно изучить 3D-сканы человеческого мозга до и после сотрясения, чтобы лучше понимать разницу в состояниях.

Программа открыта для бесплатного использования, но Арканзас первым применил её в таком широком масштабе — CrashCourse появится во всех средних школах штата.