Потому что наука о данных, как ни странно, в основном касается ... данных и исследователей данных;)
Машинное обучение (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
, мы можем легко создавать и обучать общие модели машинного обучения: регрессии, деревья решений, ансамблевые модели или даже нейронные сети для глубокого обучения!
Здесь я решил придерживаться двух основных моделей:
- линейная регрессия: она использует числовые характеристики для предсказания числового значения - ее довольно легко интерпретировать, потому что она связывает коэффициенты с каждой характеристикой, которые напрямую дают нам важность каждого в прогнозе; но это очень (даже слишком?) просто, особенно когда речь идет о категориальных функциях, как здесь
- случайный лес: это модель ансамбля (что означает, что она проверяет несколько вариантов, прежде чем выбрать «лучший» в соответствии с критерием оценки), и они известны своими хорошими результатами, например линейная регрессия, мы можем довольно легко извлечь важность функций и интерпретировать результат, но она намного лучше справляется с категориальными функциями
Моя целевая колонка - это годовая зарплата (это значение, которое я хочу спрогнозировать), и мои характеристики: название должности, отдел должностей, работа с полной или частичной занятостью и пол человека.
Обучение проходит быстро, потому что у меня мало данных и я использую простые модели. Обучив свои модели, я могу предсказать годовую зарплату по кучке выдуманных примеров - я просто нарисую случайные «профили» людей и посмотрю, что алгоритм посоветует для их зарплаты. . Например, я могу смоделировать вычисления для полицейского-мужчины, работающего полный рабочий день, и получу результат примерно 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 долларов США):
Мы ничего не меняли ни в процессе обучения, ни в настройках нашей модели; единственное, что мы изменили, - это данные. И после этой модификации мы видим, что наши выводы полностью изменились! Это показывает важность обучающего набора данных для прогнозов, которые может сделать модель машинного обучения.
Размышляя о результатах
Что все это значит? Наш анализ был «быстрым и грязным» и содержал слишком мало данных, чтобы считать его серьезным исследованием. Однако мы все же можем сделать несколько полезных замечаний и довести до конца:
- модель машинного обучения - это всего лишь математическая функция, поэтому она не является предвзятой по своей природе; с другой стороны, специалист по анализу данных выбирает модель из большого набора моделей, которые мы разрабатывали на протяжении многих лет, и он / она должен быть осторожным, чтобы выбрать ту, которая адаптирована к проблеме - в противном случае это может преувеличить или подорвать результаты и внесение недостатков или неточностей в проект
- Кроме того, ваши данные могут содержать предвзятые тенденции, нежелательные шаблоны и неожиданное поведение, которые будут воспроизведены вашей моделью и могут остаться незамеченными.
- независимо от того, являются ли ваши данные предвзятыми или нет, вы все равно сталкиваетесь с проблемой «черного ящика», столь характерной для ИИ: из-за того, как работает машинное обучение (путем вывода собственного набора математических правил из паттерны в вашем наборе обучающих данных), обычно трудно - если не невозможно - точно знать, как алгоритм пришел к прогнозированию. Хотя я уже упоминал, что модели линейной регрессии и случайного леса довольно легко интерпретировать, помните, что мы все еще не можем попросить алгоритм провести нас через процесс обучения и понимания ...
Мы живем в эпоху, когда мы применяем ИИ повсюду: транспорт, банки, жилье, здравоохранение, безопасность, образование ... Список секторов, в которые мы добавляем машинное обучение, чтобы помочь в повседневной работе, продолжает расти! Хотя это неплохо само по себе, мы должны быть осторожны и действительно понимать преимущества и недостатки этой технологии. ИИ все еще относительно новый, и ученые уже открыли удивительные инструменты; пришло время также обсудить этику, ограничения и неожиданные последствия этой области, чтобы она не ускользнула от нас. К счастью, люди уже начали задумываться над этим вопросом и реальными рисками ИИ…
Если мы не приложим усилий, чтобы проверить, что мы на самом деле вкладываем в наши алгоритмы и как мы их используем, мы можем еще больше усугубить неравенство и предубеждения, которые уже присутствуют в наших современных обществах: слепо полагаясь на эту ложную идею о том, что «алгоритмы машинного обучения беспристрастны», мы молча (и, возможно, неосознанно) будем внедрять эти предубеждения в основу каждого решения в ближайшем будущем. Однако так быть не должно: всегда будучи более информированными, воодушевленными достижениями и критикой эксцессов, все мы вместе можем построить более безопасное и равноправное общество завтрашнего дня.
Если вам понравилась эта статья, вы можете найти больше сообщений в блоге о технологиях, искусственном интеллекте и программировании на моем сайте :)