Потому что наука о данных, как ни странно, в основном касается ... данных и исследователей данных;)

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

Как я уже упоминал в предыдущих статьях блога об ИИ, все зависит от этого начального набора данных (называемого обучающим набором данных). Алгоритм машинного обучения - это, по сути, чистый лист, как маленький ребенок, который смотрит на сотни примеров, чтобы узнать, что хорошо, а что нет, и постепенно установить связь между тем, что значит быть правильным или неправильным! Это этап обучения, во время которого алгоритм настраивает свои тысячи маленьких ручек, чтобы проверить миллионы комбинаций: алгоритм ищет комбинацию, которая дает правильный ответ в максимально возможном количестве случаев при просмотре примеров наборов обучающих данных. В конечном итоге цель машинного обучения состоит в том, чтобы иметь в некоторой степени способную программу, которая может предсказать достоверный ответ для нового примера, т. Е. Примера, который не в наборе обучающих данных, а в совершенно другом ( и не перекрывающиеся) набор тестовых данных. Тип ответа может сильно отличаться от алгоритма машинного обучения к алгоритму (это может быть цена дома, тип животного на картинке, динамика цен на акции…).

Тем не менее, этот прогноз необходимо учитывать и использовать с осторожностью:

  • Во-первых: один алгоритм всегда отвечает на вопросы одного типа. Если вы научите свою программу машинного обучения различать фотографии кошек и собак, она не сможет предсказать, какая у нас будет погода завтра. Идея наличия одной программы, способной решать несколько вопросов, широко известна как общий искусственный интеллект (AGI) - многие исследователи считают, что ее невозможно реализовать (либо вообще, либо, по крайней мере, в ближайшее время).
  • Во-вторых, ответ всегда имеет степень уверенности. Поскольку алгоритму никогда не сообщалось фактическое точное правило и он должен был вывести из начального набора данных наиболее логические закономерности, у него нет возможности утверждать с абсолютной уверенностью, что прогноз является точным. Вместо этого он должен давать как ответ, так и соответствующую уверенность.

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

  • В-третьих: все зависит от набора данных для обучения. Это то, на чем я хочу сосредоточиться сегодня: поскольку алгоритм машинного обучения ничего не знает, кроме набора данных, которые он вводит на этапе обучения (этот набор данных является всей его реальностью), любые повороты, ошибки или смещения, присутствующие в наборе обучающих данных, будут непоправимо вновь появятся в логике алгоритма после обучения.

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

Но что это значит для машинного обучения? Что значит предвзятость в ваших данных? Насколько далеко могут зайти эти предубеждения в нашей жизни, когда ИИ начинает проникать во все больше и больше мест?

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

Пример из практики: зарплаты в Чикаго в 2018 г.

Для этой статьи я решил поработать над набором данных с открытым исходным кодом, опубликованным городом Чикаго в 2018 году, в котором указаны имя, должность, отдел работы и годовая или почасовая зарплата более 30 000 сотрудников. (одни работают полный рабочий день, другие - неполный рабочий день). Он доступен на знаменитой платформе науки о данных Kaggle, скомпилирован в единый CSV-файл из официального источника открытых данных о заработной плате.

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

  • Могу ли я действительно наблюдать разрыв в заработной плате мужчин и женщин в данных?
  • после обучения моего алгоритма, если бы я скармливал ему тот же самый профиль, где различается только пол, будут ли прогнозы похожими или существенно разными? (имеется в виду: научится ли мой ИИ неравенству?)
  • если был пробел, можно ли «заставить» алгоритм изучить более равный набор правил, «перебалансировав» набор обучающих данных?

Полный код (с наборами данных и файлом readme) доступен в виде zip-архива здесь.

Предварительный анализ данных

Я проводил очистку данных, преобразование данных и анализ данных, используя известные библиотеки Python pandas (https://pandas.pydata.org/) и matplotlib (https://matplotlib.org/). CSV-файл Kaggle содержит данные для 33 183 человек.

Поскольку исходные данные не содержат пол, я использовал общие списки мужских и женских имен, чтобы получить наиболее вероятный пол для каждого на основе их имени (вот два списка, для мужчин и женщин. , который я использовал). Таким образом, я мог бы добавить в набор данных новый категориальный столбец со значением мужской или женский. Я решил отбросить строки, по которым я не мог определить пол - у меня осталось 28 837 образцов. Это не так уж и много для серьезного проекта машинного обучения, но для целей этой публикации это вполне нормально.

Я также преобразовал все зарплаты в годовую зарплату: для заработной платы с почасовой оплатой я взял среднее количество часов, отработанных в неделю, и умножил его на 52.

В этот момент я мог построить гистограмму зарплат с распределением по полу (женщина или мужчина):

Это показывает нам несколько вещей:

  • набор данных не сбалансирован, у нас около 75% мужчин и 25% женщин
  • средняя заработная плата мужчин выше средней заработной платы женщин (86 590 долларов против 70 376 долларов).
  • но в целом зарплаты женщин и мужчин следуют схожим тенденциям
  • есть 2 группы: более низкие зарплаты распределяются примерно одинаково между мужчинами и женщинами, но более высокие показывают разницу - мы можем проверить, что первая группа соответствует работе с частичной занятостью, а вторая соответствует работе с полной занятостью

Обучение двух базовых моделей: линейной регрессии и случайного леса

Используя модуль Python scikit-learn, мы можем легко создавать и обучать общие модели машинного обучения: регрессии, деревья решений, ансамблевые модели или даже нейронные сети для глубокого обучения!

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

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

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

Обучение проходит быстро, потому что у меня мало данных и я использую простые модели. Обучив свои модели, я могу предсказать годовую зарплату по кучке выдуманных примеров - я просто нарисую случайные «профили» людей и посмотрю, что алгоритм посоветует для их зарплаты. . Например, я могу смоделировать вычисления для полицейского-мужчины, работающего полный рабочий день, и получу результат примерно 87 500 долларов в год с линейной регрессией и примерно 82 660 долларов в год со случайным лесом. Для сравнения, для женщины-полицейского, работающей полный рабочий день, мы получаем зарплату ~ 79 105 долларов с линейной регрессией и ~ 82 650 долларов со случайным лесом.

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

Отступая от высокого коня, иначе говоря, предвзятость в аналитике данных

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

Разве это не потрясающе? Пол, очевидно, является одной из самых важных характеристик и имеет огромное влияние на прогнозы! Но теперь давайте посмотрим на распределение прогнозируемых годовых зарплат, сгруппированных по полу, как и раньше:

Видите проблему? Этот передел не имеет ничего общего с исходным предыдущим. Это чрезмерное упрощение наших данных, в котором учитывались только 2 характеристики: пол и работа с полной / частичной занятостью. Почему? Потому что линейная регрессия плохо обрабатывает категориальные характеристики и не может понять наши названия должностей и особенности отдела вакансий. Для этой модели имеют смысл только реальные числовые значения или логические (0/1) значения. Таким образом, он сосредоточился только на двух логических функциях, которые у него были, и полностью проигнорировал остальные. Это мощный, но недопустимый аргумент для нашего случая.

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

Возвращение на путь разума… и обнаружение предвзятости в данных

Ясно, что линейную регрессию использовать не следует. Однако случайный лес показывает гораздо лучшие результаты с точки зрения передела:

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

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

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

Но наша модель хорошо усвоила: она воспроизвела тенденции набора обучающих данных ... включая смещение! Обратите внимание, что мы говорим о статистических тенденциях в крупном масштабе; поэтому, хотя в одном примере она может давать равные зарплаты для мужчин и женщин с аналогичными профилями, в более общем плане модель имеет тенденцию предсказывать несколько более низкие зарплаты для женщин (для 40 000 выборок с исходными 75% / 25% перераспределения мужчин и женщин, мы получаем среднюю годовую зарплату ~ 55 020 долларов для мужчин и ~ 52 148 долларов для женщин).

«Ребалансировка» данных

Последний вопрос: если бы у нас были сбалансированные данные, в которых мужчины и женщины с одинаковой квалификацией получали одинаковую заработную плату, имел бы алгоритм такой перекос? Чтобы смоделировать эти сбалансированные данные (которых у нас, к сожалению, нет…), мы просто скопируем зарплаты, которые у нас есть для мужчин, применим немного случайности, чтобы не иметь точно таких же значений, и возьмем треть результатов, чтобы сохранить наши 75% / 25% гендерный перераспределение. Это очень просто и не годится для фактического исследования конкретного случая, но для нас этого достаточно и действительно дает нам ожидаемое новое перераспределение с почти идентичными гистограммами для мужчин и женщин:

Интересно то, что если мы обучим наш случайный лес точно, как мы делали раньше, теперь мы получим такую ​​же среднюю зарплату для мужчин и женщин на наших 40 000 выборок (что составляет около 51 400 долларов США):

Мы ничего не меняли ни в процессе обучения, ни в настройках нашей модели; единственное, что мы изменили, - это данные. И после этой модификации мы видим, что наши выводы полностью изменились! Это показывает важность обучающего набора данных для прогнозов, которые может сделать модель машинного обучения.

Размышляя о результатах

Что все это значит? Наш анализ был «быстрым и грязным» и содержал слишком мало данных, чтобы считать его серьезным исследованием. Однако мы все же можем сделать несколько полезных замечаний и довести до конца:

  • модель машинного обучения - это всего лишь математическая функция, поэтому она не является предвзятой по своей природе; с другой стороны, специалист по анализу данных выбирает модель из большого набора моделей, которые мы разрабатывали на протяжении многих лет, и он / она должен быть осторожным, чтобы выбрать ту, которая адаптирована к проблеме - в противном случае это может преувеличить или подорвать результаты и внесение недостатков или неточностей в проект
  • Кроме того, ваши данные могут содержать предвзятые тенденции, нежелательные шаблоны и неожиданное поведение, которые будут воспроизведены вашей моделью и могут остаться незамеченными.
  • независимо от того, являются ли ваши данные предвзятыми или нет, вы все равно сталкиваетесь с проблемой «черного ящика», столь характерной для ИИ: из-за того, как работает машинное обучение (путем вывода собственного набора математических правил из паттерны в вашем наборе обучающих данных), обычно трудно - если не невозможно - точно знать, как алгоритм пришел к прогнозированию. Хотя я уже упоминал, что модели линейной регрессии и случайного леса довольно легко интерпретировать, помните, что мы все еще не можем попросить алгоритм провести нас через процесс обучения и понимания ...

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

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

Если вам понравилась эта статья, вы можете найти больше сообщений в блоге о технологиях, искусственном интеллекте и программировании на моем сайте :)