PCA на большом наборе данных - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть большой набор дат, состоящий из 6 входных переменных (температуры, давления, скорости потока и т. Д. c), чтобы дать выходные данные, такие как урожайность, чистота и конверсия. Всего насчитывается около 47600 экземпляров, и все это в таблице Excel. Я применил к этим данным как алгоритмы искусственной нейронной сети, так и алгоритмы случайных лесов, и получил прогнозные графики и метрики точности. (в Python) Модель случайного леса имеет особенность, которая придает значение входной переменной. Теперь я хотел бы выполнить PCA для этих данных, чтобы сначала сравнить их со случайными лесными результатами, а также получить больше информации о том, как мои входные данные взаимодействуют друг с другом, чтобы дать мой вывод. Я посмотрел несколько видео и уроков на YouTube, чтобы получить представление о PCA, однако используемые ими данные сильно отличаются от моих.

Ниже приведен фрагмент моих данных. Первые 6 столбцов являются входными данными, а последние 3 - выходными. enter image description here

Как я могу проанализировать это с помощью PCA? Мне удалось построить ее в python, однако сюжет очень занят и почти не дает много информации.

Любая помощь или советы приветствуются! Возможно, другой инструмент анализа? Я не против использовать Python или Matlab

Спасибо:)

1 Ответ

0 голосов
/ 30 апреля 2020

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

Чтобы включить алгоритм, мы должны установить ключ KarhunenLoeveSVDAlgorithm-UseRandomSVD в ResourceMap. Затем клавиша KarhunenLoeveSVDAlgorithm-RandomSVDMaximumRank устанавливает количество вычисляемых значений (по умолчанию оно равно 1000).

Предусмотрены две реализации:

  • Натан Халко, Per- Гуннар Мартинссон, Джоэл А. Тропп. Нахождение структуры со случайностью: вероятностные алгоритмы c для построения приближенных матричных разложений,
  • Натан Халко, Пер-Гуннар Мартиссон, Йоэль Школьнский и Марк Тигерт. Алгоритм анализа главных компонентов больших наборов данных.

Эти алгоритмы можно выбрать с помощью клавиши KarhunenLoeveSVDAlgorithm-RandomSVDVariant.

В следующем примере я моделирую большую выборку процесса из гауссовского процесса с AbsoluteExponential ковариационной моделью.

import openturns as ot
mesh = ot.IntervalMesher([10]*2).build(ot.Interval([-1.0]*2, [1.0]*2))
s = 0.01
model = ot.AbsoluteExponential([1.0]*2)
sampleSize = 100000
sample = ot.GaussianProcess(model, mesh).getSample(sampleSize)

Затем используется случайный алгоритм SVD:

ot.ResourceMap_SetAsBool('KarhunenLoeveSVDAlgorithm-UseRandomSVD', True)
algorithm = ot.KarhunenLoeveSVDAlgorithm(sample, s)
algorithm.run()
result = algorithm.getResult()

Объект result содержит разложение Кархунена-Лоэва обработать. Это соответствует PCA с регулярной сеткой (и равными весами).

...