#algorithm #machine-learning #pca
#алгоритм #машинное обучение #pca
Вопрос:
Я изучаю UFLDL. Используя код из этого руководства
avg = mean(x, 1);
x = x - repmat(avg, size(x, 1), 1);
sigma = x * x' / size(x, 2);
[U,S,V] = svd(sigma);
xRot = U' * x;
xTilde = U(:,1:k)' * x;
Я могу получить результат, требуемый в этом руководстве (вычислить k в другом месте, скажем, k равно 300). В этом примере x представляет собой матрицу n * m (784 * 60000), каждый столбец представляет собой MNIST-изображение. На случай, если я ошибся, я видел код loadMNISTImages .m, который подготовил этот учебник, загружает изображения mnist в виде матрицы 28x28x [количество изображений MNIST] и изменяет форму матрицы до #пикселей x # примеров.
Из кода я вычисляю среднее значение пикселя и вычитаю его из каждого участка изображения, то есть m (60000) означает. А сигма — это матрица n * n (784 * 784), поэтому U. xTilde равно k * m (300 * 60000). Итак, этот код вычисляет среднее значение для каждого участка изображения (каждого столбца) и уменьшает размер для каждого участка изображения (размер строки уменьшается).
Затем я попытался реализовать простой пример PCA, как показано на этом изображении:
используя такой код
x = [-3.8,-2.5;-1.2,-2.5;1,1.5;2.7,2.5;3,1.3];
x = x';
x = x - repmat(mean(x, 2), 1, size(x, 2));
sigma = x * x' / size(x, 2);
[U, S, V] = svd(sigma);
xRot = U' * x;
xTilde = U(:,1)' * x;
Вы можете видеть, что x — это n * m (2 * 5, после транспонирования). Я вычисляю среднее значение для каждой строки, и размер строки уменьшается.
Оба этих двух случая уменьшили размер строки, но в первом случае вычисляется среднее значение для столбца, а во втором — для строки. Как я понимаю эту ситуацию?
Комментарии:
1. Вы говорите, что удивлены тем, что транспонирование матрицы заставляет вас использовать средние значения по строкам вместо средних значений по столбцам? Что в этом удивительного? Это в основном то же самое.
2. понимание простое — ваш первый подход неверен. Вы должны вычислять средние значения по характеристикам , а не по выборке , поэтому вам нужно среднее значение для каждого «пикселя», а не для каждого «изображения»
3. Но первый подход — это именно то, что говорится в руководстве UFLDL. Так это просто ошибка в руководстве или что-то, чего я не знаю?