Введение:

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

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

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

В следующем разделе я объясню пошаговую методологию, которую я использую для уменьшения размерности в SAS. Не сердитесь на то, почему я использую SAS, почему не python или R. Честно говоря, я не нашел ничего эквивалентного SAS по этому поводу. Я использовал и R, и Python, но результаты были очень посредственными.

  1. Факторный анализ:

Методология продемонстрирована на эмпирической ситуации. В следующей таблице показан частичный список переменных набора данных, который состоит из более чем 1000 переменных. Аналитику необходимо построить модель ответа на этом наборе данных. Любой алгоритм ML может принимать любое количество переменных, но выброс необработанного набора данных всегда дает результат, который может быть не очень чистым и стабильным. Теоретически факторный анализ работает только для числовых переменных, но вы можете заменить категории дискретной переменной их IV и сделать ее псевдонепрерывной, чтобы опробовать факторный анализ. По моему опыту, такой подход всегда давал значимые результаты. Факторный анализ - это промежуточное состояние, у специалистов по данным всегда есть возможность управлять категориальными переменными с помощью простой непараметрической корреляции. Это обсуждение будет сосредоточено на факторном анализе только с непрерывными переменными.

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

1 ›Обеспечьте максимальную вариативность данных с минимальным количеством переменных.

2 ›Минимизируйте перекрытие информации между переменными, например средний баланс сберегательного счета и доход. Следует выбрать только один, а не оба, поскольку они сильно коррелированы.

Синтаксис SAS для факторного анализа:

PROC FACTOR DATA = ‹набор данных›
METHOD = PRINCIPAL SCREE Simple Corr
% * MINEIGEN = 0 NFACTOR = 12 *%
ROTATE = VARIMAX REORDER OUT = ‹выходные данные›;
VAR ‹Список RawVariable›;
run;

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

МЕТОД = ОСНОВНОЙ

Это определяет, какой тип метода будет использоваться для извлечения начальных факторов. Метод анализа главных компонентов (PCA) (PRINCIPAL) был выбран для извлечения начального фактора. Метод PCA просто преобразует набор переменных в другой набор переменных; то есть данные суммируются посредством линейной комбинации наблюдаемых данных, это преобразование выполняется из-за цели, упомянутой ранее, чтобы учесть как можно больше вариаций в данных. В PCA первый «компонент» или фактор определяется таким образом, что наибольшая разница в данных объясняется первым компонентом. Второй идентифицированный «компонент» или фактор объясняет второй наиболее важный аспект дисперсии данных И является перпендикулярным (таким образом, некоррелированным) первому компоненту. Остальные компоненты или факторы построены аналогичным образом.

SCREE

Эта опция запрашивает печать осыпи собственных значений.

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

ROTATE = method

Эта опция вызывает один из доступных методов вращения. Если ROTATE не указан, по умолчанию SAS использует «без вращения», иначе SAS по умолчанию использует параметр VARIMAX. Вращение VARIMAX - это преобразование, которое упрощает интерпретацию факторов за счет максимизации дисперсии возведенных в квадрат нагрузок для каждого фактора, которые являются столбцами шаблона факторов.

(Собственное значение фактора - это не что иное, как мера для вычисления дисперсии Данных, объясняемой этим фактором, факторная нагрузка - это мера корреляции между фактором и переменной)

ПЕРЕЗАКАЗ:

Эта опция переупорядочивает выходные данные факторной процедуры, поэтому переменные, которые объясняют наибольшую величину дисперсии для фактора 1, печатаются в порядке убывания вниз до тех, которые объясняют наименьшую величину дисперсии для фактора 1. Остальные коэффициенты печатаются аналогичным образом. Это вариант, аналога в Python я найти не мог.

OUT = набор данных

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

2. Пошагово - факторный анализ:

Шаг 1. Создайте диаграмму осыпи

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

Это даст представление о том, какой% общей дисперсии фиксируется выбранными факторами. Здесь шесть основных факторов отражают только 53% общей дисперсии. Желательно, чтобы выбранные факторы отражали минимум 85% общей дисперсии. При этом майнер данных также должен помнить, что это этап сокращения переменных, поэтому он / она не должны сталкиваться с слишком большим количеством факторов.

Шаг 2. Определите количество факторов

Теперь тот же код нужно запустить снова с MINEIGEN / NFACTOR. Оба варианта дают одинаковый результат. Чтобы зафиксировать количество факторов, аналитик должен ввести NFACTOR = 10 или MINEIGEN = 2,9589292.

NFACTOR = n

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

MINEIGEN = n

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

Шаг 3. Как читать результаты

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

В крайнем левом столбце матрицы указаны все переменные.

Aij = Корреляция между i-й переменной и j-м фактором. Посмотрим, как матрица нам поможет. Значения ячеек A11 (0,97558), A21 (0,97557) и A31 (0,93751) очень высоки по сравнению с другими значениями столбца 1. Это означает, что первые три переменные сильно коррелированы с фактором 1 или существует общая сильная ненаблюдаемая связь между три переменные. Итак, чтобы зафиксировать максимальную изменчивость данных с минимальным количеством переменных, хороший специалист по анализу данных должен рассмотреть одну из этих трех. Следующий важный вопрос - «Какой выбрать». Здесь DS должен использовать свое деловое чутье и выбрать тот, который более действенен, легко объясним или связан с бизнес-ключевыми показателями эффективности. Давайте рассмотрим несколько примеров, чтобы понять это.

В моем первом примере я предполагаю, что эти данные были подготовлены для создания оценочной карты инвестиционного продукта X-sell для владельцев сберегательных счетов. Задача состоит в том, чтобы точно настроить количество переменных и прогнать их с помощью различных алгоритмов машинного обучения, чтобы оценить вероятность того, что клиенты купят паевой фонд, страхование, связанное с инвестициями, или паевые инвестиционные фонды с высокой стоимостью. В этом контексте я всегда буду выбирать экономию баланса счета (переменная 3) вместо первых двух. Мы всегда предпочитаем делать долгосрочные инвестиции в тех банках, в которых мы строим наш баланс. Ни одна из двух других переменных - Max Debit / Credit Branch 6th Month не предоставляет такой информации. Даже если ваша ежемесячная сумма кредита в банке составляет 100 000 долларов США, это не означает, что вы откладываете там свои деньги. Возможно, вы просто используете его для оплаты университетских счетов вашего ребенка. Вам предстоит сложная битва для менеджера филиала по сравнению с клиентом, который ежемесячно перечисляет эквивалентную сумму с сохранением остатка на счете около 1 миллиона долларов США.

Эта аналогия полностью изменится, если вы предположите, что основная цель - построить модель машинного обучения, предсказывающую склонность к сокращению возобновляемого баланса для клиентов кредитной карты. В этом случае лучше выбрать максимальную сумму кредита филиала (переменная 2). Значительное увеличение суммы кредита (через филиал) указывает на то, что клиенту удалось получить дополнительные средства извне, и высока вероятность того, что он / она погасит остаток по кредитной карте в ближайшее время, когда процентная ставка, как правило, очень высока. Средний баланс сберегательного счета также может отражать ту же тенденцию, но было бы слишком поздно предпринимать какие-либо действия, если вы сделаете ставку.

В случае фактора 5 две переменные имеют высокую корреляцию, но максимальная корреляция составляет 0,99 (максимальный дебетовый интернет-банкинг 6-й месяц), тогда как следующая (максимальная дебетовая транзакция в банкоматах 6-го месяца) - 0,68. В этом сценарии для анализа могут использоваться как верхние, так и нижние переменные, поскольку разница между корреляциями велика. Итак, Data Scientist может рискнуть.

Конец примечания:

За исключением последней части шага 3, в этом процессе нет ничего, что нельзя было бы автоматизировать. Результат факторного анализа следует передать на следующий этап проектирования функций с соответствующими замечаниями. Как я уже упоминал ранее, это промежуточный шаг. Так что совершенно нормально, если два специалиста по данным имеют только 50% -ное совпадение в выводах факторного анализа. Несомненно, они попадут в два разных списка переменных в качестве отправной точки для машинного обучения, и в конечном итоге алгоритмы решат, кто лучше всех справился с выполнением различных этапов проектирования функций. Если ваша окончательная модель машинного обучения не дает желаемых результатов, это нормально.

Мое предложение: вам следует избегать факторного анализа, когда вы планируете попробовать глубокое обучение или любую завершенную нейронную сеть. По моему опыту, Encoder - Decoder - лучший подход в таких случаях. Я расскажу об этом как-нибудь на днях. Если вы видели какой-либо хороший пакет Python или R, который выполняет хороший факторный анализ, дайте мне знать. Я пробовал Factor Analyzer (https://pypi.org/project/factor-analyzer/) и Prince (https://github.com/MaxHalford/prince), результаты мне не понравились.

Спасибо, что зашли на это. Приятного чтения.