О чем это написано?
Сегодня в деловом мире довольно часто можно услышать некоторые из этих важных (но неуловимых для многих) слов, таких как машинное обучение, искусственный интеллект, глубокие нейронные сети, контролируемое/неконтролируемое обучение, функция потерь и т. д. Особенно когда дело доходит до Людям вроде меня, которые работают в сфере HR (поскольку HR относительно поздно включился в эту гонку), иногда становится трудно следить за дискуссиями, включая эти аспекты. Использование данных или машин для принятия ключевых решений, возможно, является совсем недавней тенденцией для функции «человеческих» ресурсов в большинстве организаций. Хотя, несмотря на то, что HR поздно начали внедрять технологии, сегодня мы наблюдаем быстро меняющуюся тенденцию к инвестированию в технологии для оптимизации традиционной HR-деятельности. Мы начали использовать технологии для улучшения опыта сотрудников с помощью ботов, оптимизации повторяющихся задач с помощью автоматизации, улучшения оценки найма с помощью ИИ, прогнозирования потребности в рабочей силе и увольнения сотрудников с помощью моделей ML и во многих других областях, список которых бесконечен. Дело в том, что с такими быстрыми темпами развития технологий большая рабочая сила по-прежнему остается неуловимой для большинства основополагающих концепций, лежащих в основе любого решения, принимаемого машиной, и есть прекрасная возможность преодолеть существующий сегодня разрыв в возможностях.
В этой статье я попытаюсь изучить и объяснить некоторые из этих концепций с точки зрения специалиста по кадрам в главе 1 и проиллюстрировать практический пример машинного обучения в действии в главе 2 с использованием Python. Иллюстрацией будет классический случай прогнозирования увольнения сотрудников с помощью простых моделей машинного обучения. Набор данных, который я буду использовать, находится в свободном доступе от IBM и может быть загружен по этой ссылке. Я надеюсь, что к концу этого чтения вы лучше поймете, как работает машинное обучение и как оно может помочь предсказывать будущее на основе прошлых данных.
Обратите внимание, что цель этой статьи — осветить концепции с точки зрения непрофессионала с минимальным погружением в океан программирования и математики! Тем не менее, иногда эти погружения могут быть неизбежными и необходимыми, поэтому, пожалуйста, будьте со мной в такие моменты, и я позабочусь о том, чтобы мы вместе добрались до берега 😊
Глава 1
Итак, давайте начнем с основ, что такое машинное обучение и «глубокие» нейронные сети?
Определение машинного обучения
Существует множество распространенных определений машинного обучения. Некоторые из наиболее принятых:
1. Артур Сэмюэл определил машинное обучение как «область исследования, которая дает компьютерам возможность учиться без явного программирования».
2. Более современное определение Тома Митчелла звучит так: «Говорят, что компьютерная программа учится на опыте E в отношении некоторого класса задач T и показателя производительности P, если ее производительность при выполнении задач в T, измеряемая P, улучшается с опытом E. ”
Проще говоря, машинное обучение — это изучение компьютерных программ, которые изучают данные, чтобы со временем повышать их точность. Чтобы объяснить это дальше, позвольте мне привести вам примеры двух терминов, которые вы часто слышите: контролируемое и неконтролируемое машинное обучение.
1. Машинное обучение под наблюдением. Давайте возьмем пример программы, цель которой определить, изображена ли на картинке шимпанзе или лошадь. Легко для людей, но немного сложно для машин. При обучении с учителем подход будет заключаться в том, чтобы сначала показать сотни или тысячи изображений животных с этикеткой с названием животного. Затем программа создает модель, которая может понять основные различия между разными животными, в данном случае лошадью и шимпанзе. Что мы в основном сделали, так это обучили модель в соответствии с нашей «целью», которая является лошадью или шимпанзе. И как только модель будет обучена, она теперь сравнит изображение с тем, что она узнала, и скажет нам, лошадь это или шимпанзе. Это называется контролируемым обучением, когда мы предоставляем целевую переменную.
2. Машинное обучение без учителя. Машинное обучение без учителя отличается от обучения с учителем, поскольку мы не предоставляем никаких целевых переменных. Ссылаясь на наш пример с лошадью и шимпанзе, модель должна сама узнать, есть ли какое-либо сходство в изображениях, которые ей подаются во время обучения. Здесь мы не будем говорить модели, какое изображение лошади или шимпанзе. Машинное обучение попытается сгруппировать животных в разные группы на основе сходства изображений. Поскольку в этом случае мы не предоставляем никакой целевой переменной, машинное обучение — это обучение без учителя.
Как машина учится?
Вопрос, который вы могли бы задать, как машина учится? Чтобы понять это, давайте немного углубимся в пример обучения с учителем.
Возьмем гипотетический пример простой линейной модели:
Допустим, вступительные расходы сотрудника зависят только от его/ее возраста. Хотя в реальной жизни может быть гораздо больше факторов, таких как базовый город, семейное положение и т. д., которые могут влиять на вступительные расходы, но для целей этого обсуждения давайте предположим, что имеет значение только возраст. Если расходы на вступление указаны в Y, а возраст любого сотрудника — в X, мы можем представить прогностическую модель в виде простого линейного уравнения:
Y= (W)*(X) + B
В этом уравнении W — вес для X, а B — смещение. Приведенная ниже таблица лучше иллюстрирует примеры значений, которые могут принимать все эти переменные.
Теперь наша модель имеет вес 500 и смещение 500. Ее можно представить в виде графика, как показано ниже. На графике показана синяя линия, которая является нашей прогностической моделью, а оранжевые точки — фактические значения. Синяя линия находится рядом, а не на оранжевых точках, что говорит нам о точности модели. 100% точная модель совпала бы с оранжевыми точками.
Проще говоря, цель алгоритма машинного обучения — свести к минимуму разрыв между фактическим (оранжевые точки) и прогнозируемым значением (синие точки) затрат на присоединение. Он делает это, пробуя разные значения весов и смещений и, наконец, находя наиболее оптимальное значение W и B, которое имеет минимальную совокупную разницу между прогнозируемым значением и фактическим значением.
Сейчас самое время представить понятие целевой функции (или в данном случае функции потерь). Поскольку целью алгоритма ML является минимизация совокупной разницы между фактическим и прогнозируемым значением, это значение в данном примере называется целевой функцией. Программа машинного обучения будет пробовать разные значения W и B, чтобы минимизировать цель (или функцию потерь), и делает это с помощью различных методов оптимизации. Очень распространенным методом является метод градиентного спуска. Я не буду подробно описывать градиентный спуск или другие методы оптимизации, чтобы не вдаваться в математику.
Подводя итог, алгоритм машинного обучения создает модель (наше линейное уравнение в примере), которая предсказывает наилучший результат (закрывает прогнозируемое значение затраты на объединение) путем минимизации (или максимизации в некоторых случаях) целевой функции (разница в фактическом и прогнозируемом значениях) и использования наиболее подходящего метода оптимизации (может быть градиентной спуска или другие более продвинутые методы, такие как оптимизация Адама)
Недообучение против переоснащения
Реальная бизнес-задача машинного обучения будет иметь гораздо больше переменных, чем просто «Возраст», и связь может быть нелинейной. Однако цель состоит в том, чтобы приблизить прогностическую модель к фактическим значениям. Рассмотрим следующие 3 графика, которые демонстрируют три разные модели, которые по-разному соответствуют фактическим значениям.
Модель 1.Пунктирная линия – это простая линейная модель, которая пытается уместить наше значение с помощью прямой линии. Как и в нашем примере выше, здесь вы заметите большой разрыв между прогнозируемыми значениями (пунктирная линия) и фактическими значениями (синие точки). Поэтому можно сказать, что эта модель не соответствует, поскольку она не приближается к фактическим значениям.
Модель 2. Здесь пунктирная линия обозначает нелинейную модель. Помните алгебру из школы? Примером нелинейного уравнения является квадратное уравнение, имеющее x2. Но в любом случае, давайте не будем слишком углубляться в алгебру. Дело в том, что эта модель пытается соответствующим образом соответствовать фактическим значениям и является гораздо лучшей моделью по сравнению с моделью 1 с точки зрения точности.
Модель 3. Это классический случай переобучения, поскольку вы видите, что модель слишком сильно старается соответствовать фактическим значениям. Обычно это происходит, когда у нас есть выбросы в наборе данных, и модель также пытается соответствовать тому, что может не потребоваться. (Расходы на присоединение в размере 5000 являются выбросом в этих данных)
Вы спросите, а не в том ли был весь смысл, чтобы максимально приблизиться к реальным значениям? Тогда в чем проблема с переоснащением?
Ну да ! Цель состояла в том, чтобы уменьшить потери и точно подогнать режим, но переоснащение является проблемой в ML, потому что, когда ваша модель слишком сильно соответствует данным, которые она передала (данным обучения), она может не иметь такой же точности в реальном мире. когда он предсказывает результат на основе данных, которые он никогда не видел.
Мы всегда стараемся контролировать переоснащение, и обычно это делается путем разделения данных обучения на несколько частей: данные обучения (с которыми обучается модель), данные проверки (для проверки наличия переобучения) и тестовые данные (обучающие данные). финальный тест для проверки точности модели в реальных условиях). Это гарантирует, что мы проверяем точность модели после ее построения, передавая ей проверочные и тестовые данные. Хорошая модель будет иметь высокую точность во всех трех наборах данных. Соотношение обычно составляет 70:20:10 или 80:10:10, при этом обучающие данные имеют наибольшую долю.
Что такого глубокого в «глубоких» нейронных сетях?
Хорошо, надеюсь, теперь у вас есть общее представление о том, как создается модель машинного обучения и как она работает. Теперь я хотел бы рассказать, что такое нейронная сеть и почему ее называют «глубокой» нейронной сетью.
Нейронная сеть работает как линейная модель, которую мы видели, т. е. у нее также есть входной слой и выходной слой. Разница в том, что уравнение или модель, которую оно создает, могут быть более сложными и нелинейными. Нейронные сети имеют много скрытых слоев между входом и выходом и используются, когда есть несколько входов, а линейная модель может быть не лучшей моделью для работы (поскольку она может не соответствовать данным).
На приведенной ниже диаграмме простая линейная модель сравнивается с простой нейронной сетью. В простой линейной модели вход проходит через линейное преобразование и создает выход. Это линейное преобразование такое же, как мы видели ранее, и может быть представлено простым линейным уравнением: Y = W * X + B.
В реальных задачах всегда будет более одной входной переменной, и для идеального соответствия модели заданным данным модель должна будет пройти через нелинейное преобразование (вспомните проблему недообучения линейной модели). Нейронная сеть решает эту проблему и помогает вам создать модель, которая будет нелинейной и принимает несколько входных данных. Как вы можете видеть на диаграмме выше, нейронная сеть принимает «Возраст» и «Город» в качестве входных данных и использует нелинейные преобразования через свои скрытые слои и выдает «Расходы на присоединение». Стрелки, которые вы видите на диаграмме ниже, представляют собой нелинейные преобразования и будут иметь свои собственные веса и смещения.
Другой аспект того, чем глубокая нейронная сеть отличается от простой линейной модели, заключается в том, что входные данные подаются в первый скрытый слой, где он подвергается преобразованию, а затем выходные данные первого скрытого слоя становятся входными данными второго скрытого слоя и так далее. . Слово «глубокий» в глубоких нейронных сетях означает количество скрытых слоев. Чем больше количество скрытых слоев, тем больше глубина.
Итак, это подводит нас к концу главы 1. В следующей главе я продемонстрирую реальную бизнес-задачу прогнозирования увольнения и то, как построен алгоритм машинного обучения, способный предсказывать будущее увольнение сотрудников. В следующей главе будет больше рук и потребуется некоторое кодирование на Python для создания алгоритма машинного обучения. Если у вас есть базовое понимание любого вычислительного языка, вы сможете понять его лучше.
Я начну с обзора набора данных и проведу детальную предварительную обработку, чтобы подготовить данные для обучения модели. Сообщение, что я опишу нашу модель машинного обучения, которая использует нейронную сеть с прямой связью для прогнозирования истощения с точностью более 90% !! Быть в курсе…
Давайте подключимся: linkedin.com/in/manujgulati