Это часть серии статей об анализе основных компонентов (АПК), и это еще не все.

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

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

Цитата ниже относится к обучению с учителем, но мнение распространяется и на PCA.

«У каждого алгоритма есть вход и выход: данные поступают в компьютер, алгоритм делает с ними то, что хочет, и на выходе получается результат. Машинное обучение меняет ситуацию: на вход поступают данные и желаемый результат, а на выходе появляется алгоритм, который превращает одно в другое. Алгоритмы обучения, также известные как обучающиеся, — это алгоритмы, которые создают другие алгоритмы. Благодаря машинному обучению компьютеры пишут свои собственные программы, поэтому нам это не нужно».

Выдержка из: Педро Домингос. «Мастер-алгоритм».

Затем алгоритм PCA принимает входные данные:

  • X: которую можно рассматривать как матрицу данных, состоящую из n наблюдений p переменных действительных чисел.
  • k: целое число от 1 до p.

и производит вывод, который имеет два необходимых атрибута:

  • список k ранжированных векторов размера p, которые являются собственными векторами ковариационной матрицы X. Мы назовем это components.
  • список k скалярных значений, которые объясняют, какая часть дисперсии данных понимается каждым из k векторов. Мы назовем это explained_variance.

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

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

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

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

Мы намеренно игнорируем важные детали, такие как выбор k, масштабирование до единичной дисперсии, нулевое центрирование, использование корреляционной матрицы вместо ковариационной, а также детали алгоритма, используемого для нахождения собственных значений и собственные векторы (спектральное или SVD-разложение). Эти темы будут рассмотрены позднее.

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