BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс по MLOps и Data Science (ML, AI) » Анализ главных компонентов в машинном обучении

Анализ главных компонентов в машинном обучении

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

 

Анализ главных компонентов

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

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

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

 

Виды PCA

Есть четыре метода реализации PCA:

  1. Стандартный PCA: Стандартный PCA – это версия по умолчанию, но она работает только в том случае, если данные умещаются в памяти.
  2. Инкрементный PCA: инкрементный PCA полезен для больших наборов данных, которые не помещаются в памяти стандартного PCA, но он медленнее, чем обычный PCA, поэтому, если данные умещаются в памяти, вы должны использовать стандартный PCA. Инкрементальный PCA полезен для онлайн-задач, когда вам нужно на лету уменьшать размеры набора данных каждый раз, когда приходит новая выборка данных.
  3. Рандомизированный PCA. Рандомизированный PCA очень полезен, когда вы хотите резко уменьшить размерность, и чтобы набор данных умещался в памяти. В таких случаях он работает быстрее, чем стандартный анализ главных компонент.
  4. Kernal PCA: Kernal PCA предпочтительнее, только если набор данных является нелинейным.

 

Анализ главных компонентов с использованием Python

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

 

import numpy as np
np.random.seed(4)
m = 60
w1, w2 = 0.1, 0.3
noise = 0.1

angles = np.random.rand(m) * 3 * np.pi / 2 - 0.5
X = np.empty((m, 3))
from sklearn.decomposition import PCA

pca = PCA(n_components = 2)
X2D = pca.fit_transform(X)
print(X2D)

 

Результат:

 [[-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79207044e+256]

 [-1.31210990e+275 -1.79130276e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275  5.25933599e+257]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -2.90503278e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79147236e+256]

 [-1.31210990e+275 -1.79166311e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205612e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275  5.25908783e+257]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79165620e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205511e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -3.71913271e+256]

 [-1.31210990e+275 -1.79116717e+256]

 [-1.31210990e+275 -1.79205612e+256]

 [ 7.74144843e+276 -1.02176393e+241]

 [-1.31210990e+275 -1.79205512e+256]

 [-1.31210990e+275 -1.79205512e+256]]

 

При реализации PCA вы должны знать, что этот алгоритм предполагает, что набор данных сосредоточен вокруг источника. Класс PCA, предоставляемый scikit-learn, заботится о центрировании данных вокруг источника. Но если вы хотите реализовать его без использования Scikit-learn, не забудьте сначала отцентрировать данные. Вот как можно реализовать анализ основных компонентов с помощью Python без использования библиотеки scikit-learn:

 

X_centered = X - X.mean(axis=0)
U, s, Vt = np.linalg.svd(X_centered)
c1 = Vt.T[:, 0]
c2 = Vt.T[:, 1]

m, n = X.shape

S = np.zeros(X_centered.shape)
S[:n, :n] = np.diag(s)

np.allclose(X_centered, U.dot(S).dot(Vt))
W2 = Vt.T[:, :2]
X2D = X_centered.dot(W2)
print(X2D)

 

Результат:

 [[-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76220325e+256]

 [-1.31210990e+275  1.76143556e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275 -5.26232271e+257]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  2.87516558e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76160516e+256]

 [-1.31210990e+275  1.76179592e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218893e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275 -5.26207455e+257]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76178901e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76222579e+256]

 [-1.31210990e+275  1.76218793e+256]

 [-1.31210990e+275  3.68926551e+256]

 [-1.31210990e+275  1.76129997e+256]

 [-1.31210990e+275  1.76218893e+256]

 [ 7.74144843e+276  1.76216447e+256]

 [-1.31210990e+275  1.76218792e+256]

 [-1.31210990e+275  1.76218792e+256]]

 

Резюме

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

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

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
Уменьшение размерности в машинном обучении
Следующая статья →
Автоматический EDA с использованием Python

 

Внедряем AI в бизнес-процессы крупных компаний
От стратегии и инфраструктуры до AI-агентов, интеграций и промышленной эксплуатации.

Подробнее об AI-решениях

 

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • MoneyCare — кредитная платформа и сервис для ПОС-кредитования в магазинах, установленная в более чем 18 тысячах трейдинговых точек и сотрудничающая с 11 главными банками России.

  • Ситилинк

    Электронный дискаунтер «Ситилинк» — один из крупнейших онлайн‑ритейлеров России (3‑е место по объему онлайн‑продаж в рейтинге Data Insight и Ruward 2016 года E‑commerce Index TOP‑100, 8 место в рейтинге Forbes «20 самых дорогих компаний Рунета — 2017»). На рынке работает 9 лет.

    В ассортименте дискаунтера более 50 000 наименований компьютерной цифровой, бытовой и садовой техники, офисной мебели и других товарных категорий. Более 700 мировых брендов в портфеле. Около 4 000 сотрудников по всей России

  • С объединением компании Savencia Fromage & Dairy и молочного комбината в г.Белебей, одного из лидеров по производству твердых сычужных сыров в России, Savencia выходит на российский рынок не только как импортер, но и как производитель молочной продукции.

  • ИНВИТРО
    ИНВИТРО – крупнейшая частная медицинская компания в России, специализирующаяся на лабораторной диагностике и оказании других медицинских услуг.
     
    ИНВИТРО располагает 9 самыми современными лабораторными комплексами и крупнейшей в Восточной Европе сетью более чем из 900 медицинских офисов. Страны присутствия — Россия, Украина, Казахстан, Беларусь.
     
  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.