RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ Edu.Vsu.Ru

Содержание
  1. Метод главных компонент python
  2. Метод главных компонент в python
  3. Обучение базовой модели (модель №1, RF)
  4. Принцип работы метода главных компонент (PCA)
  5. Шаги для реализации метода главных компонент
  6. Загрузка данных
  7. Стандартизация данных
  8. Применение PCA
  9. Визуализация данных
  10. Оценка качества работы моделей на проверочных данных
  11. Как работает PCA?
  12. Метод главных компонент (PCA) в Python
  13. Обучение базовой RF-модели после применения к данным метода главных компонент (модель №2, RF + PCA)
  14. Еще примеры использования PCA
  15. Улучшение анализа текстовых данных
  16. Визуализация данных в больших временных рядах
  17. Улучшение анализа спектральных данных
  18. Улучшение обработки геоданных
  19. Заключение
  20. Применение PCA с помощью библиотеки Scikit-Learn
  21. Реализация PCA
  22. Ускорение обучения на больших данных
  23. Улучшение кластеризации
  24. Импорт данных
  25. Оптимизация гиперпараметров. Раунд 1
  26. Библиотека scikit-learn
  27. Разделение набора данных на учебные и проверочные данные
  28. Различные способы использования анализа главных компонентов
  29. Масштабирование данных
  30. GridSearchCV (окончательная подготовка параметров для модели №3, RF + PCA + HT)
  31. Пример использования PCA в Python
  32. Визуализация результатов
  33. Оценка и интерпретация результатов PCA
  34. Анализ объясненной дисперсии
  35. Интерпретация главных компонент
  36. Вывод
  37. Итоги

Метод главных компонент python

Метод главных компонент (Principal Component Analysis, PCA) — это статистический метод, используемый для уменьшения размерности данных, сохраняя при этом как можно больше информации.

Метод главных компонент в python

Метод главных компонент (PCA — Principal Component Analysis) — это один из основных методов снижения размерности данных, который используется в машинном обучении. Он особенно полезен, когда у нас есть данные большой размерности, и мы хотим уменьшить ее, сохраняя при этом как можно больше полезной информации.

Анализ главных компонентов (Principal Component Analysis – PCA) представляет собой алгебраический метод преобразования набора наблюдений возможно коррелированных переменных в набор значений линейных некоррелированных переменных.

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

Это исследование позволяет сделать важное наблюдение. Иногда RF-модель, в которой используется метод главных компонент и широкомасштабная оптимизация гиперпараметров, может работать не так хорошо, как самая обыкновенная модель со стандартными настройками. Но это — не повод для того, чтобы ограничивать себя лишь простейшими моделями. Не попробовав разные модели, нельзя сказать о том, какая из них покажет наилучший результат. А в случае с моделями, которые используются для предсказания наличия у пациентов рака, можно сказать, что чем лучше модель — тем больше жизней может быть спасено.

Уважаемые читатели! Какие задачи вы решаете, привлекая методы машинного обучения?


RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

Время на прочтение

Привет, уважаемые читатели!

Одной из ключевых задач при работе с данными является уменьшение размерности данных, чтобы улучшить их интерпретируемость, ускорить алгоритмы обучения машин и, в конечном итоге, повысить качество решений. Сегодня мы поговорим о методе, который считается одним из наиболее мощных инструментов в арсенале данных разработчиков — методе главных компонент, или PCA (Principal Component Analysis).

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

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

Несколько причин, почему PCA стоит внимания:

У специалистов по обработке и анализу данных есть множество средств для создания классификационных моделей. Один из самых популярных и надёжных методов разработки таких моделей заключается в использовании алгоритма «случайный лес» (Random Forest, RF). Для того чтобы попытаться улучшить показатели модели, построенной с использованием алгоритма RF, можно воспользоваться оптимизацией гиперпараметров модели (Hyperparameter Tuning, HT).


RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

Кроме того, распространён подход, в соответствии с которым данные, перед их передачей в модель, обрабатывают с помощью метода главных компонент (Principal Component Analysis, PCA). Но стоит ли вообще этим пользоваться? Разве основная цель алгоритма RF заключается не в том, чтобы помочь аналитику интерпретировать важность признаков?

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

Теперь — к делу. Мы будем работать с набором данных по раку груди — Scikit-learn «breast cancer». Мы создадим три модели и сравним их эффективность. А именно, речь идёт о следующих моделях:

Обучение базовой модели (модель №1, RF)

Сейчас создадим модель №1. В ней, напомним, применяется только алгоритм Random Forest. Она использует все признаки и настроена с использованием значений, задаваемых по умолчанию (подробности об этих настройках можно найти в документации к sklearn.ensemble. RandomForestClassifier). Сначала инициализируем модель. После этого обучим её на масштабированных данных. Точность модели можно измерить на учебных данных:

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import recall_score
rfc = RandomForestClassifier()
rfc.fit(X_train_scaled, y_train)
display(rfc.score(X_train_scaled, y_train))
# 1.0

Если нам интересно узнать о том, какие признаки являются самыми важными для RF-модели в деле предсказания рака груди, мы можем визуализировать и квантифицировать показатели важности признаков, обратившись к атрибуту feature_importances_:


RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

Визуализация «важности» признаков


RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

Принцип работы метода главных компонент (PCA)

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

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

Ковариационная матрица позволяет нам измерить, как признаки взаимосвязаны друг с другом. Ковариация между двумя признаками показывает, насколько они меняются вместе. Если ковариация положительна, это означает, что признаки увеличиваются вместе, в то время как отрицательная ковариация указывает на обратное изменение. Ковариационная матрица X обычно вычисляется следующим образом:

Основные шаги алгоритма PCA:

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

Шаги для реализации метода главных компонент

import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

Загрузка данных

Для примера мы будем использовать датасет Iris, который встроен в библиотеку sklearn.

Стандартизация данных

Перед применением PCA, важно привести все признаки к одному масштабу.

Применение PCA

Мы применяем PCA, чтобы снизить размерность данных до двух главных компонент.

Визуализация данных

Теперь мы можем визуализировать данные, используя только две главные компоненты.

Оценка качества работы моделей на проверочных данных

Теперь можно оценить созданные модели на проверочных данных. А именно, речь идёт о тех трёх моделях, описанных в самом начале материала.

Проверим эти модели:

y_pred = rfc.predict(X_test_scaled)
y_pred_pca = rfc.predict(X_test_scaled_pca)
y_pred_gs = gs.best_estimator_.predict(X_test_scaled_pca)

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


RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

Результаты работы трёх моделей

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

Учитывая это, можно сделать вывод о том, что базовая RF-модель дала наилучшие результаты. Её показатель полноты составил 94.97%. В проверочном наборе данных была запись о 179 пациентах, у которых есть рак. Модель нашла 170 из них.

Как работает PCA?

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

Метод главных компонент (PCA) в Python

Метод главных компонент, или PCA (Principal Component Analysis), это статистический метод, используемый для уменьшения размерности данных. P CA используется во многих областях, включая машинное обучение, компьютерное зрение и паттерн-рекогницию.

Обучение базовой RF-модели после применения к данным метода главных компонент (модель №2, RF + PCA)

Теперь мы можем передать в ещё одну базовую RF-модель данные X_train_scaled_pca и y_train и можем узнать о том, есть ли улучшения в точности предсказаний, выдаваемых моделью.

rfc = RandomForestClassifier()
rfc.fit(X_train_scaled_pca, y_train)
display(rfc.score(X_train_scaled_pca, y_train))
# 1.0

Модели сравним ниже.

Еще примеры использования PCA

В медицинской области, особенно в снимках МРТ или КТ, размерность данных может быть огромной, что затрудняет анализ:

# Генерация медицинского датасета
from sklearn.datasets import make_blobs
X, _ = make_blobs(n_samples=300, n_features=3000, random_state=42)

# Применение PCA
from sklearn.decomposition import PCA
pca = PCA(n_components=50)
X_reduced = pca.fit_transform(X)

Улучшение анализа текстовых данных

В анализе текста, особенно при работе с большими корпусами, можно использовать PCA для уменьшения размерности и выделения наиболее важных признаков:

Визуализация данных в больших временных рядах

При работе с временными рядами, PCA может помочь визуализировать изменения в данных, что может быть полезно при анализе финансовых рынков или мониторинге производственных процессов:

# Генерация временного ряда
import numpy as np
time = np.linspace(0, 10, 1000)
signal = np.sin(time) + np.random.normal(0, 0.1, 1000)

# Применение PCA для визуализации
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(signal.reshape(-1, 1))

Улучшение анализа спектральных данных

В анализе спектральных данных, таких как спектрограммы, PCA может помочь выделить важные частоты и уменьшить размерность данных:

Улучшение обработки геоданных

При работе с геоданными, такими как координаты GPS, PCA может быть использован для уменьшения размерности и выделения наиболее важных факторов:

# Генерация геодатасета
import numpy as np
latitude = np.linspace(37.7749, 37.8049, 1000)
longitude = np.linspace(-122.4194, -122.3894, 1000)
coordinates = np.column_stack((latitude, longitude))

# Применение PCA
from sklearn.decomposition import PCA
pca = PCA(n_components=1)
X_reduced = pca.fit_transform(coordinates)

Заключение

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

Статья подготовлена в рамках набора на онлайн-курс «Системный аналитик. Advanced». Чтобы узнать, достаточно ли ваших знаний для прохождения программы курса, пройдите вступительное тестирование.

Теперь зададимся вопросом о том, как можно улучшить базовую RF-модель. С использованием методики снижения размерности пространства признаков можно представить исходный набор данных через меньшее количество переменных и при этом снизить объём вычислительных ресурсов, необходимых для обеспечения работы модели. Используя PCA, можно изучить кумулятивную выборочную дисперсию этих признаков для того чтобы понять то, какие признаки объясняют большую часть дисперсии в данных.
Инициализируем объект PCA (pca_test), указывая количество компонент (признаков), которые нужно рассмотреть. Мы устанавливаем этот показатель в 30 для того чтобы увидеть объяснённую дисперсию всех сгенерированных компонент до того, как примем решение о том, сколько компонент нам понадобится. Затем передаём в pca_test масштабированные данные X_train, пользуясь методом pca_test.fit(). После этого визуализируем данные.


RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

После того, как число используемых компонент превышает 10, рост их количества не очень сильно повышает объяснённую дисперсию


RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

Этот датафрейм содержит такие показатели, как Cumulative Variance Ratio (кумулятивный размер объяснённой дисперсии данных) и Explained Variance Ratio (вклад каждой компоненты в общий объём объяснённой дисперсии)

Если взглянуть на вышеприведённый датафрейм, то окажется, что использование PCA для перехода от 30 переменных к 10 компонентам позволяет объяснить 95% дисперсии данных. Другие 20 компонент объясняют менее 5% дисперсии, а это значит, что от них мы можем отказаться. Следуя этой логике, воспользуемся PCA для уменьшения числа компонент с 30 до 10 для X_train и X_test. Запишем эти искусственно созданные наборы данных «пониженной размерности» в X_train_scaled_pca и в X_test_scaled_pca.

pca = PCA(n_components=10)
pca.fit(X_train_scaled)
X_train_scaled_pca = pca.transform(X_train_scaled)
X_test_scaled_pca = pca.transform(X_test_scaled)

Каждая компонента — это линейная комбинация исходных переменных с соответствующими «весами». Мы можем видеть эти «веса» для каждой компоненты, создав датафрейм.


RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

Датафрейм со сведениями по компонентам

Применение PCA с помощью библиотеки Scikit-Learn

В Python библиотека Scikit-Learn предоставляет простой способ реализации PCA. Сначала вам необходимо установить библиотеку Scikit-Learn, если она уже не установлена:

pip install scikit-learn

Затем вы можете использовать класс PCA в Scikit-Learn для применения PCA к вашим данным:

principalComponents = pca.fit_transform(data)

В этом коде ‘n_components=2’ означает, что мы хотим уменьшить размерность наших данных до двух измерений.

Реализация PCA

В этом примере мы используем библиотеку scikit-learn для применения PCA к набору данных Iris и улучшения классификации с использованием метода опорных векторов (SVM).

Accuracy after PCA: 1.00

Ускорение обучения на больших данных

PCA также может быть полезен для ускорения обучения моделей на больших наборах данных. В этом примере мы используем библиотеку TensorFlow и PCA для уменьшения размерности данных перед обучением нейронной сети.

import tensorflow as tf
from sklearn.decomposition import PCA

# Загрузка большого набора данных
(X_train, y_train), (X_test, y_test) = tf.keras.datasets.mnist.load_data()

# Преобразование изображений в векторы
X_train = X_train.reshape(-1, 28 * 28)
X_test = X_test.reshape(-1, 28 * 28)

# Применение PCA
pca = PCA(n_components=50)
X_train_pca = pca.fit_transform(X_train)
X_test_pca = pca.transform(X_test)

# Здесь мы могли бы обучить нейронную сеть на данных X_train_pca

Улучшение кластеризации

PCA также может быть использован для улучшения кластеризации данных. В следующем примере мы используем библиотеку K-means для кластеризации данных и сравниваем результаты до и после применения PCA.


RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

Мы используем набор данных Iris и применяем PCA для сокращения размерности до 2 компонентов и визуализации данных в двумерном пространстве.


RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

Импорт данных

Для начала загрузим данные и создадим датафрейм Pandas. Так как мы пользуемся предварительно очищенным «игрушечным» набором данных из Scikit-learn, то после этого мы уже сможем приступить к процессу моделирования. Но даже при использовании подобных данных рекомендуется всегда начинать работу, проведя предварительный анализ данных с использованием следующих команд, применяемых к датафрейму (df):

В нашем наборе данных столбец cancer (рак) — это целевая переменная, значение которой мы хотим предсказать, используя модель. 0 означает «отсутствие заболевания». 1 — «наличие заболевания».


RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

Фрагмент датафрейма с данными по раку груди. Каждая строка содержит результаты наблюдений за пациентом. Последний столбец, cancer, содержит целевую переменную, которую мы пытаемся предсказать. 0 означает «отсутствие заболевания». 1 — «наличие заболевания»

Оптимизация гиперпараметров. Раунд 1

После обработки данных с использованием метода главных компонент можно попытаться воспользоваться оптимизацией гиперпараметров модели для того чтобы улучшить качество предсказаний, выдаваемых RF-моделью. Гиперпараметры можно рассматривать как что-то вроде «настроек» модели. Настройки, которые отлично подходят для одного набора данных, для другого не подойдут — поэтому и нужно заниматься их оптимизацией.

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

В ходе работы мы генерируем сущность param_dist, содержащую, для каждого гиперпараметра, диапазон значений, которые нужно испытать. Далее, мы инициализируем объект rs с помощью функции RandomizedSearchCV(), передавая ей RF-модель, param_dist, число итераций и число кросс-валидаций, которые нужно выполнить.

Гиперпараметр verbose позволяет управлять объёмом информации, который выводится моделью в ходе её работы (наподобие вывода сведений в процессе обучения модели). Гиперпараметр n_jobs позволяет указывать то, сколько процессорных ядер нужно использовать для обеспечения работы модели. Установка n_jobs в значение -1 приведёт к более быстрой работе модели, так как при этом будут использоваться все ядра процессора.

Мы будем заниматься подбором следующих гиперпараметров:

При значениях параметров n_iter = 100 и cv = 3, мы создали 300 RF-моделей, случайно выбирая комбинации представленных выше гиперпараметров. Мы можем обратиться к атрибуту best_params_ для получения сведений о наборе параметров, позволяющем создать самую лучшую модель. Но на данной стадии это может не дать нам наиболее интересных данных о диапазонах параметров, которые стоит изучить на следующем раунде оптимизации. Для того чтобы выяснить то, в каком диапазоне значений стоит продолжать поиск, мы легко можем получить датафрейм, содержащий результаты работы алгоритма RandomizedSearchCV.


RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

Теперь создадим столбчатые графики, на которых, по оси Х, расположены значения гиперпараметров, а по оси Y — средние значения, показываемые моделями. Это позволит понять то, какие значения гиперпараметров, в среднем, лучше всего себя показывают.


RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

Анализ значений гиперпараметров

Если проанализировать вышеприведённые графики, то можно заметить некоторые интересные вещи, говорящие о том, как, в среднем, каждое значение гиперпараметра влияет на модель.

Библиотека scikit-learn

В Python для реализации метода главных компонент используется библиотека scikit-learn. Для установки библиотеки можно использовать следующую команду:

Разделение набора данных на учебные и проверочные данные

Теперь разделим данные с использованием функции Scikit-learn train_test_split. Мы хотим дать модели как можно больше учебных данных. Однако нужно, чтобы в нашем распоряжении было бы достаточно данных для проверки модели. В целом можно сказать, что, по мере роста количества строк в наборе данных, растёт и объём данных, которые можно рассматривать в качестве учебных.

Например, если есть миллионы строк, можно разделить набор, выделив 90% строк на учебные данные и 10% — на проверочные. Но исследуемый набор данных содержит лишь 569 строк. А это — не так уж и много для тренировки и проверки модели. В результате для того, чтобы быть справедливыми по отношению к учебным и проверочным данным, мы разделим набор на две равные части — 50% — учебные данные и 50% — проверочные. Мы устанавливаем stratify=y для обеспечения того, чтобы и в учебном, и в проверочном наборах данных присутствовало бы то же соотношение 0 и 1, что и в исходном наборе данных.

Различные способы использования анализа главных компонентов

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

Масштабирование данных

Прежде чем приступать к моделированию, нужно выполнить «центровку» и «стандартизацию» данных путём их масштабирования. Масштабирование выполняется из-за того, что разные величины выражены в разных единицах измерения. Эта процедура позволяет организовать «честную схватку» между признаками при определении их важности. Кроме того, мы конвертируем y_train из типа данных Pandas Series в массив NumPy для того чтобы позже модель смогла бы работать с соответствующими целевыми показателями.

import numpy as np
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
X_train_scaled = ss.fit_transform(X_train)
X_test_scaled = ss.transform(X_test)
y_train = np.array(y_train)

GridSearchCV (окончательная подготовка параметров для модели №3, RF + PCA + HT)

После применения алгоритма RandomizedSearchCV воспользуемся алгоритмом GridSearchCV для проведения более точного поиска наилучшей комбинации гиперпараметров. Здесь исследуются те же гиперпараметры, но теперь мы применяем более «обстоятельный» поиск их наилучшей комбинации. При использовании алгоритма GridSearchCV исследуется каждая комбинация гиперпараметров. Это требует гораздо больших вычислительных ресурсов, чем использование алгоритма RandomizedSearchCV, когда мы самостоятельно задаём число итераций поиска. Например, исследование 10 значений для каждого из 6 гиперпараметров с кросс-валидацией по 3 блокам потребует 10⁶ x 3, или 3000000 сеансов обучения модели. Именно поэтому мы и используем алгоритм GridSearchCV после того, как, применив RandomizedSearchCV, сузили диапазоны значений исследуемых параметров.

Итак, используя то, что мы выяснили с помощью RandomizedSearchCV, исследуем значения гиперпараметров, которые лучше всего себя показали:

Здесь мы применяем кросс-валидацию по 3 блокам для 540 (3 x 1 x 5 x 6 x 6 x 1) сеансов обучения модели, что даёт 1620 сеансов обучения модели. И уже теперь, после того, как мы воспользовались RandomizedSearchCV и GridSearchCV, мы можем обратиться к атрибуту best_params_ для того чтобы узнать о том, какие значения гиперпараметров позволяют модели наилучшим образом работать с исследуемым набором данных (эти значения можно видеть в нижней части предыдущего блока кода). Эти параметры используются при создании модели №3.

Пример использования PCA в Python

Для демонстрации работы метода главных компонент на примере данных о цветках ириса выполним следующие шаги:

from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

Визуализация результатов

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

Оценка и интерпретация результатов PCA

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

Метод локтя: Этот метод заключается в анализе доли объясненной дисперсии в зависимости от числа компонент. Мы строим график, где по оси X отложено число компонент, а по оси Y — доля объясненной дисперсии. График будет иметь форму локтя, и точка, где снижение доли объясненной дисперсии замедляется, будет указывать на оптимальное число компонент.

Пример кода для метода локтя:

from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# Создаем экземпляр PCA
pca = PCA()

# Обучаем PCA на данный X
pca.fit(X)

# Строим график объясненной дисперсии
explained_variance_ratio = pca.explained_variance_ratio_
plt.plot(range(1, len(explained_variance_ratio) + 1), explained_variance_ratio, marker=’o’)
plt.xlabel(«Число компонент»)
plt.ylabel(«Доля объясненной дисперсии»)
plt.title(«Метод локтя для выбора числа компонент»)
plt.show()

Метод объясненной дисперсии: Этот метод заключается в выборе числа компонент так, чтобы доля объясненной дисперсии достигла заданного порога (например, 95% или 99%). Это позволяет сохранить большую часть информации при снижении размерности.

Пример кода для метода объясненной дисперсии:

from sklearn.decomposition import PCA

# Создаем экземпляр PCA с заданным порогом
pca = PCA(0.95) # сохраняем 95% доли объясненной дисперсии

# Обучаем PCA на данный X
X_reduced = pca.fit_transform(X)

Анализ объясненной дисперсии

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

Пример кода для анализа объясненной дисперсии:

explained_variance_ratio = pca.explained_variance_ratio_
cumulative_variance = explained_variance_ratio.cumsum()

# Визуализация объясненной дисперсии
plt.plot(range(1, len(cumulative_variance) + 1), cumulative_variance, marker=’o’)
plt.xlabel(«Число компонент»)
plt.ylabel(«Накопленная доля объясненной дисперсии»)
plt.title(«Анализ объясненной дисперсии»)
plt.show()

Интерпретация главных компонент

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

Для интерпретации главных компонент можно анализировать их веса (собственные векторы) и связанные с ними признаки. Например, в случае анализа изображений, можно выяснить, что первая главная компонента может быть связана с освещенностью изображений, а вторая — с ориентацией объектов.

Пример кода для анализа главных компонент:

Интерпретация главных компонент зависит от конкретной задачи и данных, над которыми вы работаете. Это может потребовать дополнительного анализа и доменных знаний для полного понимания значения главных компонент.

Вывод

В этом руководстве мы узнали об анализе основных компонентов с помощью Python, его использовании и объектах, а также о том, как использовать его в наборе данных для анализа наборов тестирования и обучения данных.

Изучаю Python вместе с вами, читаю, собираю и записываю информацию опытных программистов.

Результаты PCA можно интерпретировать с помощью атрибутов ‘explained_variance_ratio_’ и ‘components_’ экземпляра PCA:

‘explained_variance_ratio_’ показывает долю общей дисперсии, объясняемой каждой из главных компонент, а ‘components_’ содержит сами главные компоненты.


RANDOM FOREST МЕТОД ГЛАВНЫХ КОМПОНЕНТ И ОПТИМИЗАЦИЯ ГИПЕРПАРАМЕТРОВ

Итоги

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

Метод главных компонент является мощным инструментом для уменьшения размерности данных, сохраняя при этом важную информацию. Библиотека scikit-learn предоставляет простой способ реализации PCA в Python.

Оцените статью