Как найти наиболее подходящую линию, используя анализ главных компонентов?

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

Затем я прочитал о библиотеках PCA и Accord.net. Я написал некоторый код, но не понимаю, что конкретно делать дальше.

У меня есть список DataPoints графа.

DataTable dt = new DataTable();
dt.Columns.Add("X", typeof(double));
dt.Columns.Add("Y", typeof(double));

foreach (DataPoint dp in listOfPoints)
{
    DataRow dr = dt.NewRow();
    dr["X"] = dp.XValue; 
    dr["Y"] = dp.YValues[0];
    dt.Rows.Add(dr);
}

string[] columnNames;
double[,] sourceMatrix = dt.ToMatrix(out columnNames);
DescriptiveAnalysis sda = new DescriptiveAnalysis(sourceMatrix, columnNames);
sda.Compute();
AnalysisMethod method = AnalysisMethod.Center;

PrincipalComponentAnalysis pca = new PrincipalComponentAnalysis(sda.Source, method);
pca.Compute();
double[] mean = sourceMatrix.Mean();
double[,] eigenVectors = pca.ComponentMatrix;

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

1 ответ

Да, PCA найдет линию с наименьшим общим квадратом расстояния от набора данных.

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

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

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

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

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

Другие вопросы по тегам