Pull to refresh
0
0
Send message

Коэффициент Джини. Из экономики в машинное обучение

Reading time17 min
Views130K
Интересный факт: в 1912 году итальянский статистик и демограф Коррадо Джини написал знаменитый труд «Вариативность и изменчивость признака», и в этом же году «Титаник» затонул в водах Атлантики. Казалось бы, что общего между этими двумя событиями? Всё просто, их последствия нашли широкое применение в области машинного обучения. И если датасет «Титаник» в представлении не нуждается, то об одной замечательной статистике, впервые опубликованной в труде итальянского учёного, мы поговорим поподробней. Сразу хочу заметить, что статья не имеет никакого отношения к коэффициенту Джини (Gini Impurity), который используется в деревьях решений как критерий качества разбиения в задачах классификации. Эти коэффициенты никак не связаны друг с другом и общего между ними примерно столько же, сколько общего между трактором в Брянской области и газонокосилкой в Оклахоме.

Коэффициент Джини (Gini coefficient) — метрика качества, которая часто используется при оценке предсказательных моделей в задачах бинарной классификации в условиях сильной несбалансированности классов целевой переменной. Именно она широко применяется в задачах банковского кредитования, страхования и целевом маркетинге. Для полного понимания этой метрики нам для начала необходимо окунуться в экономику и разобраться, для чего она используется там.
Читать дальше →
Total votes 67: ↑66 and ↓1+65
Comments17

Скрутки, клеммники и WAGO под лёгкой перегрузкой

Reading time4 min
Views70K


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

Здесь рассматриваются наиболее доступные способы соединить наиболее типичный для квартирной проводки медный однопроволочный провод сечением 2,5 кв.мм.
Читать дальше →
Total votes 212: ↑211 and ↓1+256
Comments206

Проходим L6 интервью на System Design в FAANG

Reading time6 min
Views14K

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

Читать далее
Total votes 15: ↑11 and ↓4+11
Comments6

Поговорим о микроскопах

Reading time16 min
Views72K
Помнится, в далеком детстве мне подарили микроскоп «Натуралист» – игрушечный, но таки дающий фиксированное увеличение аж в шестьдесят раз. Состоял он из одной трубки, закрепляемой на пластмассовом футляре, одновременно играющим роль основания. Сколько интересных вещей тогда было пересмотрено через окуляр, подсвеченный тусклым зеркальцем – от листьев водорослей до целого таракана…



Рис. 1. Детский микроскоп «Натуралист» (за неимением лучшего — фото с торговой площадки)

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

Предупреждение: обзор не претендует на исчерпывающее описание и рассчитан на энтузиастов-любителей, интересующихся предметом для себя или для детей. Статья не содержит никакой теории, связанной с оптикой, ее в избытке хватает в других материалах.
Читать дальше →
Total votes 76: ↑75 and ↓1+111
Comments96

Определяем пульс по вебкамере в 50 строчек кода

Reading time4 min
Views34K

Привет Хабр.

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

Для тех кому интересно что получилось, продолжение под катом.

Читать далее
Total votes 67: ↑66 and ↓1+86
Comments72

Выбор VR шлема

Reading time2 min
Views46K
Продолжение темы «Часто задаваемые вопросы о VR шлемах и играх».

Таблица сравнения разных шлемов с реддит, некоторые цифры спорные, но примерное представление дают о разнице тех. характеристик:


Читать дальше →
Total votes 15: ↑14 and ↓1+22
Comments82

Как я чуть не выкинул 150к на ветер или история установки приточной вентиляции в квартире

Reading time19 min
Views645K

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


Читать дальше →
Total votes 285: ↑280 and ↓5+365
Comments595

За пять дней я прошел собеседования в пяти компаниях Силиконовой долины и получил пять предложений о работе

Reading time12 min
Views118K
За пять дней, с 24 по 28 июля 2017 года, я прошел собеседования в LinkedIn, Salesforce Einstein, Google, Airbnb и Facebook; все пять компаний предложили мне работу. Это был замечательный опыт и я понимаю, как мне повезло, что мои усилия оправдали себя, поэтому решил написать об этом. Здесь я расскажу о том, как готовился к собеседованиям, как они проходили и какое впечатление произвели на меня компании.



Как все началось


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

Жизнь коротка, а профессиональная жизнь еще короче. Обговорив все с женой и заручившись ее полной поддержкой, я решил сделать решительный шаг и в первый раз в жизни поменять работу.
Читать дальше →
Total votes 95: ↑88 and ↓7+81
Comments98

Обзор топологий глубоких сверточных нейронных сетей

Reading time18 min
Views108K
Это будет длиннопост. Я давно хотел написать этот обзор, но sim0nsays меня опередил, и я решил выждать момент, например как появятся результаты ImageNet’а. Вот момент настал, но имаджнет не преподнес никаких сюрпризов, кроме того, что на первом месте по классификации находятся китайские эфэсбэшники. Их модель в лучших традициях кэгла является ансамблем нескольких моделей (Inception, ResNet, Inception ResNet) и обгоняет победителей прошлого всего на полпроцента (кстати, публикации еще нет, и есть мизерный шанс, что там реально что-то новое). Кстати, как видите из результатов имаджнета, что-то пошло не так с добавлением слоев, о чем свидетельствует рост в ширину архитектуры итоговой модели. Может, из нейросетей уже выжали все что можно? Или NVidia слишком задрала цены на GPU и тем самым тормозит развитие ИИ? Зима близко? В общем, на эти вопросы я тут не отвечу. Зато под катом вас ждет много картинок, слоев и танцев с бубном. Подразумевается, что вы уже знакомы с алгоритмом обратного распространения ошибки и понимаете, как работают основные строительные блоки сверточных нейронных сетей: свертки и пулинг.

Читать дальше →
Total votes 108: ↑108 and ↓0+108
Comments57

Вероятностные модели: байесовские сети

Reading time8 min
Views86K
В этом блоге мы уже много о чём поговорили: были краткие описания основных рекомендательных алгоритмов (постановка задачи, user-based и item-based, SVD: 1, 2, 3, 4), о нескольких моделях для работы с контентом (наивный Байес, LDA, обзор методов анализа текстов), был цикл статей о холодном старте (постановка задачи, текстмайнинг, теги), была мини-серия о многоруких бандитах (часть 1, часть 2).

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


Читать дальше →
Total votes 49: ↑47 and ↓2+45
Comments35

Алгоритм Левенберга — Марквардта для нелинейного метода наименьших квадратов и его реализация на Python

Reading time9 min
Views66K



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



Для устранения недостатков, как это часто бывает, нужно глубже погрузиться в предметную область и добавить ограничения на входные данные. В частности: МНС и МН имеют дело с произвольными функциями. В статистике и машинном обучении часто приходится иметь дело с методом наименьших квадратов (МНК). Этот метод минимизирует сумму квадрата ошибок, т.е. целевая функция представляется в виде



\frac{1}{2}\sum \limits_{i=1}^{N}(y_i'-y_i)^2 = \frac{1}{2}\sum \limits_{i=1}^{N}r_i^2 \tag{1}


Алгоритм Левенберга — Марквардта является нелинейным методом наименьших квадратов. Статья содержит:


  • объяснение алгоритма
  • объяснение методов: наискорейшего спуска, Ньтона, Гаусса-Ньютона
  • приведена реализация на Python с исходниками на github
  • сравнение методов

Читать дальше →
Total votes 80: ↑78 and ↓2+76
Comments28

Kaggle – наша экскурсия в царство оверфита

Reading time19 min
Views37K
Kaggle — это платформа для проведения конкурсов по машинному обучению. На Хабре частенько пишут про неё: 1, 2, 3, 4, и.т.д. Конкурсы на Kaggle интересные и практичные. Первые места обычно сопровождаются неплохими призовыми (топовые конкурсы — более 100к долларов). В последнее время на Kaggle предлагали распознавать:


И многое-многое другое.

Мне давно хотелось попробовать, но что-то всё время мешало. Я разрабатывал много систем, связанных с обработкой изображений: тематика близка. Навыки более лежат в практической части и классических Computer Vision (CV) алгоритмах, чем в современных Machine Learning техниках, так что было интересно оценить свои знания на мировом уровне плюс подтянуть понимание свёрточных сетей.

И вот внезапно всё сложилось. Выпало пару недель не очень напряжённого графика. На kaggle проходил интересный конкурс по близкой тематике.Я обновил себе комп. А самое главное — подбил vasyutka и Nikkolo на то, чтобы составить компанию.

Сразу скажу, что феерических результатов мы не достигли. Но 18 место из 1.5 тысяч участников я считаю неплохим. А учитывая, что это наш первый опыт участия в kaggle, что из 3х месяц конкурса мы участвовали лишь 2.5 недели, что все результаты получены на одной единственной видеокарте — мне кажется, что мы хорошо выступили.

О чём будет эта статья? Во-первых, про саму задачу и наш метод её решения. Во-вторых, про процесс решения CV задач. Я писал достаточно много статей на хабре о машинном зрении(1,2,3), но писанину и теорию всегда лучше подкреплять примером. А писать статьи по какой-то коммерческой задаче по очевидным причинам нельзя. Теперь наконец расскажу про процесс. Тем более что тут он самый обычный, хорошо иллюстрирующий как задачи решаются. В-третьих, статья про то, что идёт после решения идеализированной задаче в вакууме: что будет когда задача столкнётся с реальностью.


Читать дальше →
Total votes 66: ↑65 and ↓1+64
Comments32

У семи программистов адрес без дома

Reading time4 min
Views97K
Привет, Хабр!

Мы в HumanFactorLabs парсим адреса в особо крупных размерах. Наши продукты упрощают ввод контактных данных и работу с ними.

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

Недавно на Хабре нас попросили привести примеры необычных адресов, в связи с чем и написана эта статья.
Читать дальше →
Total votes 104: ↑101 and ↓3+98
Comments211

swirl: стремительное погружение в R (learning by doing)

Reading time4 min
Views17K


Еще каких-нибудь полтора года назад я был одним из тех, кто убежденно говорил «Нет, программирование — это точно не для меня». Не рискну сказать, что я стал программистом, но за последний год R заменил мне большинство повседневных программ для работы. Я работаю исследователем. С интересом наблюдаю, как постепенно R становится стандартом в академическом мире. В общем, в мире ширится понимание того, что с компьютером имеет смысл общаться чуть свободнее, чем на уровне программ click&drag. Так, совсем недавно Медуза писала о том, что не все прогеры девственники программирование стоит изучать гораздо более широкому кругу людей, чем всегда было принято считать.

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

Почему именно R?
Короткий ответ: потому что только этим я могу поделиться, других языков программирования не знаю.

Развернутый ответ: R — универсальный инструмент, который может пригодиться очень широкому кругу специалистов. Это полностью открытый и очень динамично развивающийся проект с кучей вдохновенных последователей по всему миру. Каждый может написать свой пакет и выложить в открытом доступе (это действительно не очень сложно). R предоставляет безграничные возможности для визуализации данных. Чтобы вдохновиться, можно заглянуть в одну из галерей (например, вот или вот). Возможности анализа данных безграничны. Только чтобы обратить внимание на самое впечатляющее, предлагаю взглянуть на этот пост.

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

Для исследователя R — это просто must.

Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments7

Как устроены дыры в безопасности: переполнение буфера

Reading time29 min
Views132K
Прим. переводчика: Это перевод статьи Питера Брайта (Peter Bright) «How security flaws work: The buffer overflow» о том, как работает переполнение буфера и как развивались уязвимости и методы защиты.

Беря своё начало с Червя Морриса (Morris Worm) 1988 года, эта проблема поразила всех, и Linux, и Windows.



Переполнение буфера (buffer overflow) давно известно в области компьютерной безопасности. Даже первый само-распространяющийся Интернет-червь — Червь Морриса 1988 года — использовал переполнение буфера в Unix-демоне finger для распространения между машинами. Двадцать семь лет спустя, переполнение буфера остаётся источником проблем. Разработчики Windows изменили свой подход к безопасности после двух основанных на переполнении буфера эксплойтов в начале двухтысячных. А обнаруженное в мае сего года переполнение буфера в Linux драйвере (потенциально) подставляет под удар миллионы домашних и SMB маршрутизаторов.

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

На поверхности, это выглядит как весьма глупая ошибка. В конце концов, программа знает размер буфера, а значит, должно быть несложно удостоверится, что программа никогда не попытается положить в буфер больше, чем известный размер. И вы были бы правы, рассуждая таким образом. Однако переполнения буфера продолжают происходить, а результаты часто представляют собой катастрофу для безопасности.
Читать дальше →
Total votes 48: ↑47 and ↓1+46
Comments29

Титаник на Kaggle: вы не дочитаете этот пост до конца

Reading time31 min
Views82K
Привет, хабр!

#{Data Science для новичков}

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

Данная работа описывает мою попытку создать модель для предсказания выживших пассажиров «Титаника». Основная задача — тренировка в использовании инструментов применяемых в Data Science для анализа данных и презентации результатов исследования, поэтому данная статья будет очень и очень длинной. Основное внимание уделено исследовательскому анализу (exploratory research) и работе по созданию и выбору предикторов (feature engineering). Модель создаётся в рамках соревнования Titanic: Machine Learning from Disaster проходящего на сайте Kaggle. В своей работе я буду использовать язык «R».
Читать дальше →
Total votes 42: ↑35 and ↓7+28
Comments5

Привязка ресурсов в Microsoft DirectX 12

Reading time15 min
Views19K

20 марта 2014 года корпорация Microsoft объявила на конференции Game Developers Conference о выпуске DirectX* 12. За счет сокращения избыточной обработки ресурсов DirectX 12 будет способствовать более эффективной работе приложений и снижению потребления электроэнергии, благодаря чему можно будет дольше играть на мобильных устройствах без подзарядки.
На конференции SIGGRAPH 2014 специалисты Intel измерили потребляемую мощность ЦП при запуске простого демо с астероидами на планшете Microsoft Surface* Pro 3. Демонстрационное приложение можно переключать с API DirectX 11 на API DirectX 12 нажатием кнопки. Это демонстрационное приложение рисует огромное количество астероидов в космосе при фиксированной кадровой скорости. При использовании API DirectX 12 API потребляемая мощность ЦП снижается более чем вдвое по сравнению с DirectX 11**. Устройство работает в менее интенсивном тепловом режиме и способно дольше проработать от аккумулятора. В типичных игровых сценариях всю незадействованную мощность ЦП можно израсходовать на улучшение физики, искусственного интеллекта, алгоритмов поиска путей или других задач с интенсивной нагрузкой на ЦП. Таким образом, игра становится более мощной по функциональности или более экономичной с точки зрения потребления электричества.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments7

Атрибуты свойств в Objective-C. Инструкция для начинающих

Reading time9 min
Views82K
image

Есть множество разных мест, где описано значение атрибутов, используемых при объявлении свойств, но, как правило, все такие источники либо описывают применение только одного из атрибутов, либо содержат еще кучу ссылок на другие документы, переходя по которым со временем начинаешь терять нить рассуждений. Безусловно, нужно стремиться познать все тонкости, для чего нужно прочитать горы литературы. Но для начала вполне достаточно разобраться в основах. Ниже я постарался максимально просто изложить основные используемые при объявлении свойств атрибуты, их значение и основные случаи, когда стоит использовать то или иное значение атрибута.
Читать дальше →
Total votes 24: ↑20 and ↓4+16
Comments20

Налоговый суслик. Особенности упрощенной системы налогообложения при работе по договорам с Apple, Google и другими

Reading time46 min
Views54K
В данной статье я постараюсь провести краткий юридический ликбез для разработчиков по некоторым положениям Гражданского кодекса, имеющим значение в контексте деятельности индивидуальных предпринимателей и организаций, применяющих упрощенную систему налогообложения, в работе по договорам с Apple, Google и другими компаниями, а также обратить внимание на некоторые не всегда очевидные налоговые нюансы, которые, как показал личный опыт изучения данной темы, довольно часто ускользают от внимания разработчиков или вызывают множество вопрос и споров.

Прочтите внимательно эту статью, если вы применяете упрощенную систему налогообложения с объектом налогообложения «доход» по ставке 6 процентов и продаете игры или приложения в Google Play, Apple App Store, а также прочий цифровой контент — например, 3D-модели — в Steam, Unity Asset Store или на других площадках, в условиях договоров с которыми фигурируют комиссии, агентские вознаграждения и прочие формы разделения выручки между сторонами.

Из материала вы узнаете:

  • Почему разработчику желательно обладать хотя бы базовой юридической грамотностью
  • Чем с точки зрения Гражданского кодекса являются игры и приложения и какие права на них есть у разработчиков помимо авторского права
  • Что такое агентский договор и почему все это важно при работе по договору с Apple или Google
  • Кто такой налоговый суслик и почему он может превратиться в пушного зверя
  • Какой «подвох» существует для применяющих «упрощенку» в части определения налоговой базы
  • Почему налог на добавленную стоимость (НДС) продолжает преследовать нас, даже когда мы не являемся его плательщиками
  • Как, с точки зрения Федеральной налоговой службы, облагаются НДС внутриигровые покупки (InApp Purchases)
Покажите мне суслика!
Total votes 40: ↑36 and ↓4+32
Comments84

Технокнига, часть 1: литература по веб-технологиям, алгоритмам и структурам данных, углубленному программированию на С++

Reading time18 min
Views104K


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

Первый семестр призван «выровнять» знания студентов. Он содержит такие дисциплины, как алгоритмы и структуры данных, программирование на C++, а также обзорный курс по веб-технологиям. С книг по этим предметам и начнется обзор. Большая часть представленных книг относится к нестареющей «классике», являющейся собранием основополагающих концепций.
Читать дальше →
Total votes 40: ↑37 and ↓3+34
Comments10
1
23 ...

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity