Próbuję powielić pomysły ze strony Eigenface na wikipedii. Ze stu przykładowych obrazów reprezentowanych przez macierz danych (gdzie każdy obraz jest spłaszczony do wektora o długości n , więc X jest 100 na n macierzą ), obliczyłem rozkład SVD:
W związku z tym:
Biorąc podzbiór największych trybów własnych, mogę aproksymować macierz (niech σ 1 ≥ σ 2 ≥ ⋯ ):
Teraz otrzymuje nowy wektor , która reprezentuje obraz nie w X , jak mogę określić ważenie q wektorów własnych U do najlepiej reprezentować mój nowy obraz y ? Czy z wyjątkiem przypadków patologicznych ta reprezentacja jest unikalna?
Krótko mówiąc, chciałbym to zrobić (ze strony wiki):
Te twarze własne mogą teraz służyć do reprezentowania zarówno istniejących, jak i nowych twarzy : możemy projektować nowy (średnio-odejmowane) obrazu na eigenfaces a tym samym nagrać jak to nowych twarzy różni się od średniej twarzy.
Jak wykonać tę projekcję?
źródło
Odpowiedzi:
„Projekcja”, o której mowa, jest projekcją wektorową . Aby obliczyć rzut wektora na wektor b , użyj iloczynu wewnętrznego dwóch wektorów:a b
w tym przypadku jest elementem wektora, która leży w tym samym kierunku Baproj a b . W przestrzeni euklidesowej wewnętrzny operator produktu jest zdefiniowany jako ich iloczyn iloczynu :
gdzie jest liczbą składników w wektorach i b i ı a b I są i -ty składnik wektorów a i b , odpowiednio. Intuicyjnie, obliczając iloczyn wewnętrzny dwóch wektorów, znajdujesz „ile” wektora a idzie w kierunku wektora b . Zauważ, że jest to liczba ze znakiem, więc wartość ujemna oznaczałaby, że kąt między dwoma wektorami jest większy niż 90 stopni, co ilustruje alternatywna definicja dla operatora rzutowania:n a b ai bi i a b a b
gdzie jest kątem między dwoma wektorami.θ
Tak więc, biorąc pod uwagę to wektor i kilka wektorów bazowych b I , można znaleźć „ile ” idzie w każdym z kierunków każdy z wektorów bazowych. Zazwyczaj wszystkie te wektory bazowe będą wzajemnie prostopadłe. W twoim przypadku SVD jest rozkładem ortogonalnym, więc ten warunek powinien być spełniony. Tak więc, aby osiągnąć to, co opisujesz, wziąłbyś macierz wektorów własnych U i obliczysz iloczyn wewnętrzny wektora kandydującego y dla każdej z kolumn macierzy:a bi a U y
Wartość skalarna , którą otrzymujesz z każdego produktu wewnętrznego, pokazuje, jak dobrze wektor y „zrównał się” z i-tym wektorem własnym. Ponieważ wektory własne są ortonormalne , możesz następnie zrekonstruować oryginalny wektor y w następujący sposób:pi y i y
Zapytałeś, czy ta reprezentacja jest unikalna; Nie jestem do końca pewien, co masz na myśli, ale nie jest to unikalne w tym sensie, że dany wektor mógłby zostać rozłożony przez rzut na dowolną liczbę zasad ortonormalnych. Wektory własne zawarte w macierzy U są jednym z takich przykładów, ale można użyć dowolnej liczby innych. Na przykład, obliczenia dyskretnej transformaty Fouriera z Y może być postrzegane jako wystający, a na jego podstawie ortonormalnych wykładniczej o wartościach zespolonych wektorów o różnej częstotliwości.y U y
źródło