Understanding POD: the Proper Orthogonal Decomposition

  Рет қаралды 19,871

Fernando Zigunov

Fernando Zigunov

Күн бұрын

This was a lot of fun to make! 3blue1brown has inspired me a lot to make a math video with cool animations! This is my take on the Proper Orthogonal Decomposition, an incredibly powerful and useful algorithm for data analysis ! I'm a fluid dynamicist by trade, so my examples come from there. Hope you found this useful!
This was produced with Manim, a python library developed by 3blue1brown and maintained by the community to make mathematical animation videos! Thanks to all contributors for making this possible!
0:00 Intro
0:29 2D Measurements
1:34 Optimal basis vectors
3:14 Basis vectors in 3D
3:55 Higher dimensional data
4:44 Building the data matrix A
5:10 Formal definition of POD
6:34 The spatial mode matrix U
7:18 The energy matrix Sigma
7:45 The temporal mode matrix V
8:06 A simple traveling wave example
10:06 My take on interpretation of POD modes

Пікірлер: 71
@ahmeda2476
@ahmeda2476 2 жыл бұрын
I think this is the best explanation of POD I have ever seen.
@zachzach8171
@zachzach8171 3 жыл бұрын
This is exactly what I need right now. Thank you for the amazing content. Please keep doing this!
@TheLarissaCoutinho9
@TheLarissaCoutinho9 2 жыл бұрын
Excellent! Please, continue with this series of videos. Can't describe how much helpful and clear they are!
@fzigunov
@fzigunov 2 жыл бұрын
Thanks, Larissa! I'm humbled to hear the positive feedback from the community =)
@ad2181
@ad2181 Жыл бұрын
Thanks for keeping the subject understandable, now I can keep this knowledge in my head and recall this days, months, years from now. The animation are excellect.
@tomcross9780
@tomcross9780 2 жыл бұрын
Excellent video Fernando - your take on the subject really hasn't got the attention it deserves - amazing work
@fzigunov
@fzigunov 2 жыл бұрын
Thanks, Tom! I'm really happy I'm able to help and spread knowledge on this amazing technique!
@dolfinskip
@dolfinskip 2 жыл бұрын
Amazing explanation... the visualisation helped a lot! Thank you and may your ilk prosper!
@TheRubencho176
@TheRubencho176 2 ай бұрын
What an amazing explanation. Thank you very much!
@mateuscarvalho5959
@mateuscarvalho5959 Жыл бұрын
This is the best video about POD I have seen. Thanks a lot!
@diogocastelobranco8963
@diogocastelobranco8963 2 жыл бұрын
Excelente vídeo, cara!! Continua com esse trabalho que tá muito bom!
@lixinrong3094
@lixinrong3094 3 ай бұрын
excellent visualization! Very helpful!💖
@SlashSung
@SlashSung 8 ай бұрын
Very good visualization of the interpretation of the V matrix. I just needed it, thank you
@ZirothTech
@ZirothTech Жыл бұрын
Amazing video! Thank you
@SKKarthick12
@SKKarthick12 Жыл бұрын
Amazing job in visualizing the math man! kudos!
@Soul-rr3us
@Soul-rr3us Жыл бұрын
definitely one of the cooler SVD visualizations I've seen
@julianroth1952
@julianroth1952 3 жыл бұрын
I am currently working on POD-ROM and I must say that I really like your video. Amazing job! I especially like how at the example of the flow around the cylinder you were able to visually explain the essence of the POD. Very nice!
@RamKumar-ve6eo
@RamKumar-ve6eo 2 жыл бұрын
Julian Roth, May I have your email id. Actually I'm also working on ROM techniques.
@ClosiusBeg
@ClosiusBeg 2 жыл бұрын
Thank you man! Extremely good explanation!
@brtymn5804
@brtymn5804 2 жыл бұрын
Thank you Fernando, very well explained.
@tadeumf
@tadeumf 3 жыл бұрын
Very instructive video! Clear and concise explanation of a rather abstract mathematical tool that has very interesting applications in the fluid dynamics field.
@fzigunov
@fzigunov 3 жыл бұрын
I'm glad you found it useful!! Hope I can find more time to do these =]
@shivamsundeep5328
@shivamsundeep5328 4 ай бұрын
Thanks a lot....This is the best POD explaination I have seen.... Very helpful... Keep it up.
@umedina98
@umedina98 Жыл бұрын
Amazing video! Thanks for sharing, really insightful. Looking forward for a continuation video were you show how U represents the eigenvectors of the correlation matrix, and the physical interpretation behind them! Still fuzzy on what a mode really is. Thanks again!
@sagsolyukariasagi
@sagsolyukariasagi 2 жыл бұрын
great video. Thank you very much.
@roopeshkumar2868
@roopeshkumar2868 3 жыл бұрын
Beautiful
@joseomardavalosramirez6380
@joseomardavalosramirez6380 Жыл бұрын
Great video, you are the master
@anurajmaurya7256
@anurajmaurya7256 3 жыл бұрын
perfect!
@EmranAram
@EmranAram 8 ай бұрын
THanks!
@seunghoonhwang5604
@seunghoonhwang5604 Жыл бұрын
Really Thanks!, Now I can understand what is the POD .
@fzigunov
@fzigunov Жыл бұрын
I'm happy to hear it was useful to you!
@abhishekkumarsingh-kb4cm3up2e
@abhishekkumarsingh-kb4cm3up2e 2 жыл бұрын
Awesome !!!!
@GRAYgauss
@GRAYgauss 2 жыл бұрын
Very well presented, I skipped through a bit, but it truly does feel like an homage to 2B1B and you demonstrate clear understanding. Keep up the good work, I'll be following you. I particularly like that you take your profession and apply it. You add some novelty by having a unique and deep perspective. If I had anything to recommend, it's to not be TOO simple like every other channel and provide abstract/high level knowledge relevant to you/your interests/perspective.
@fzigunov
@fzigunov 2 жыл бұрын
Damn I missed your comment, this is a really good take! Thanks for checking out my work! I also feel there is a big gap in content of this kind of advanced math where it doesn't quite reach enough people for creators to justify economically building a whole video on it. My hope is that more people get interested in these amazing techniques, as they're so powerful!
@shahryarhabibi7187
@shahryarhabibi7187 Жыл бұрын
Excellent, share more please!
@Wow_1991
@Wow_1991 Жыл бұрын
Nice video. Make more on POD please.
@robinjoseph9548
@robinjoseph9548 2 жыл бұрын
Hey Fernando, incredible work. Very helpful!!
@fzigunov
@fzigunov 2 жыл бұрын
Hey Robin, thanks for the comment! I'm happy that it was helpful!
@robinjoseph9548
@robinjoseph9548 2 жыл бұрын
@@fzigunov I work in a very similar field (PIV analysis of boundary layer transition) and I also use POD. I had sent a connection request to you on Linkedin. Please have a look.
@chiamatthew6829
@chiamatthew6829 2 ай бұрын
Great video Fernando. Is there a website that I can view relevant code to the fluid dynamic example you showed? I would love to explore that more. Thanks!
@lightnlies
@lightnlies Жыл бұрын
Beautiful! Can you make a video about Proper Generalized Decomposition?
@arunrajiitbaero
@arunrajiitbaero 2 жыл бұрын
Can you upload a video on the coding part of POD. It would be a great help for many.
@hamzaich5703
@hamzaich5703 3 жыл бұрын
Niiiiiice keep going maan ❤️❤️❤️
@antoinetatin594
@antoinetatin594 2 жыл бұрын
Hi Fernando, it is a really well done educational video, good job. I'm reading about POD and Bi orthogonal decomposition but I am struggling to understand how to calculate the topos and chronos with the initial data. Here given A, how do you obtain U S and V matrix please ? Thank you for your work :)
@fzigunov
@fzigunov 2 жыл бұрын
Thanks, Antoine, I'm glad you're interested! I'm not covering the computation of POD because there's many algorithms out there with varying efficiency. If you are using a library such as Matlab or Python, just use SVD (singular value decomposition, it's another name for POD): [U, S, V] = svd(A,0); Where U is the topos matrix and V is the chronos matrix if A is structured as shown in the video. If you really want to dive into building your own SVD algorithm, then I'm afraid you'll have to look into other resources. I know Prof. Nathan Kutz has a really nice video on SVD and the naive algorithm for its computation, might be worth checking it out. Thanks!
@antoinetatin594
@antoinetatin594 2 жыл бұрын
@@fzigunov Thank you, with the SVD i managed to do what i wanted !
@patz7792
@patz7792 3 жыл бұрын
hi Fernando, really good job, this video helps me a lot in understanding pod. A tiny problem, the data set at the beginning 0:51, is not zero mean. Correct me if I’m wrong, I think we should first shift the original coordinate system to the mean, and then find the optimal coordinates. Or the pod energy might be dominated by the mean vector and the error is not directly associated with tke, etc.
@fzigunov
@fzigunov 3 жыл бұрын
Thanks for the encouragement! I actually forgot to remove the mean and only noticed in editing (these animations take several days to render!). It doesn't impact anything, though, because the POD will separate the mean in the first mode; provided the mean norm is sufficiently large (mostly always the case in fluid dynamics data sets). Glad this helped you! Edit: The mean of the data set is actually zero; it's just that I'm only showing three of its dimensions (i.e., the cylinder data set that is shown later in the video). If you had an n-dimensional view, the point cloud would be centered in the origin.
@patz7792
@patz7792 3 жыл бұрын
@@fzigunov Thanks for the response! I'm doing PIV recently, these animations are far more understandable than JL Lumley's POD papers with tons of equations. Looking forward to more of your videos!
@uchennaogunka
@uchennaogunka Жыл бұрын
Thank you for the video. Please, can POD be performed for one time (Nt = 1) to determine the spatial modes?
@fzigunov
@fzigunov Жыл бұрын
If I'm understanding correctly, you want to perform POD with a single snapshot? I'm afraid that is not possible, as it doesn't have enough statistics to show anything meaningful. In fact the only mode you get will, by definition, be exactly the snapshot given (divided by its norm).
@uchennaogunka
@uchennaogunka Жыл бұрын
@@fzigunov Thank you for your reply. So does that mean that the number of modes is determined by the number of snapshots (i.e., the number of time data) provided?
@fzigunov
@fzigunov Жыл бұрын
@@uchennaogunka You're correct for most applications. The number of modes is min(N_grids,N_snapshots); where N_grids is the number of grid points of the mesh examined times the number of variables (say vx,vy,vz,p).
@AG-cx1ug
@AG-cx1ug 22 күн бұрын
What does it mean by spatial patterns where the data is most temporally correlated? Like the spatial patterns across consecutive time? Or across like periodically when a time step repeats if something is periodic..?
@fzigunov
@fzigunov 22 күн бұрын
Very good question. If the correlation between some variable X and Y is high (close to +1), then X and Y move together (i.e., when X is up, Y is also up). If correlation is low, (close to -1), we get the opposite effect and when X is high, Y is low. For POD, it calculates from the data given how they are most correlated (i.e., instead of X and Y, you have many X variables, all contained in the matrix A). So if in a mode a hot spot shows in two different regions of an image (on a high rank mode), it is safe to say they have a high correlation (i.e. , they vary in unison). Hope this helps understand a little better.
@AG-cx1ug
@AG-cx1ug 18 күн бұрын
@@fzigunov Yes thank you!!
@andremombach2898
@andremombach2898 2 жыл бұрын
What a masterpiece! Thank you! I got a question: why U matrix has the same numbers of columns of A matrix? I mean, columns in A matrix aren't simply timesteps? Why modes are correlated with this?
@fzigunov
@fzigunov 2 жыл бұрын
Thanks André, your feedback is really appreciated! Regarding your question, the number of columns of U and A match as you pointed out. As to why they have the same number of columns, it is a very good question. Here's a technical description, which may not be 100% accurate (I'm a mere fluid dynamicist, not a mathematician!): In a rectangular matrix where n_rows>n_columns, the column space of the rectangular data matrix I displayed in the video (A) does not span the entire n_rows-dimensional space. What we are seeking with the SVD (and POD) is to find a set of singular vectors that is mutually orthogonal *AND spans the column space of the original data matrix*. Since the original data matrix only spans n_columns dimensions (it does not have more than n_columns vectors in it), then it stands that the mode matrix U only needs n_columns singular vectors to completely span the column space of A. If that sounds too complicated, maybe a simpler example with a 3 row by 2 column A matrix may help: If A has 2 columns, each with 3 rows, then you can build two vectors in 3D space, one for each column. These two vectors span a plane in 3D space, but do not span the whole 3D space (you cannot build points outside the plane by linearly combining the two vectors from the columns). Thus, the singular vectors of U only need to span this 2D plane. Thus, you only need 2 singular vectors, which by construction will be unitary and orthogonal. Hopefully this helps!
@andremombach2898
@andremombach2898 2 жыл бұрын
@@fzigunov I will have to read about 20 times to start understanding, but your answer certainly is a great intro to the question. You rock! Hope your channel achieve what it seeks.
@ademolajayeola9846
@ademolajayeola9846 3 жыл бұрын
Please i wish you can give a more simplified demonstration analysis video on this POD application to analyzing a turbulent flow structure. i am currently in dire-hard need of such knowledge. Please, Fernando Zigunov. Anticipating your response!
@pinakibhattacharyya7853
@pinakibhattacharyya7853 2 жыл бұрын
Check out eigensteve's channel
@ademolajayeola9846
@ademolajayeola9846 2 жыл бұрын
@@pinakibhattacharyya7853 thanks
@angtrinh6495
@angtrinh6495 Жыл бұрын
POD can reduce dimensions but the matrix U after POD still has the same size as the original. Once truncated, it only reduces the time columns not the dimension of the original matrix A ( U -size nxr * Σ - size rxr * V transposed - size rxr = matrix size nxr). Then how can POD reduces dimensions, could you kindly explain to me please?
@fzigunov
@fzigunov Жыл бұрын
Great question, @angtrinh6495. It doesn't reduce dimensions, it only classifies the data by ranking the most energetic directions the point cloud formed by the data spreads. The dimensionality reduction step is done by the human as a processing step (say, keep X% of the total energy, or the X most energetic modes, etc.).
@AmitKumar-xw5gp
@AmitKumar-xw5gp 3 жыл бұрын
Beautiful animation.. Could you please share the code too..
@fzigunov
@fzigunov 3 жыл бұрын
I'm glad you liked them! Here's the github repo! Codes are a little janky though =) github.com/3dfernando/POD_Intro_Animations
@jziinn99
@jziinn99 Ай бұрын
@@fzigunov Could you please briefly explain how to use your virtual environment?
@illama5330
@illama5330 4 ай бұрын
Great video and all but man why the 2 girls 1 cup music
@turbochargersutututu
@turbochargersutututu 2 жыл бұрын
Love your videos, please talk slower! Thanks
@fzigunov
@fzigunov 2 жыл бұрын
Still on my video production learning curve! Thanks for the feedback!
@turbochargersutututu
@turbochargersutututu 2 жыл бұрын
@@fzigunov no worries! But that said, your video was extremely useful! Thanks a ton! Keep it up!
The Spectral Proper Orthogonal Decomposition
16:33
Fernando Zigunov
Рет қаралды 11 М.
ОСКАР ИСПОРТИЛ ДЖОНИ ЖИЗНЬ 😢 @lenta_com
01:01
He sees meat everywhere 😄🥩
00:11
AngLova
Рет қаралды 10 МЛН
DO YOU HAVE FRIENDS LIKE THIS?
00:17
dednahype
Рет қаралды 67 МЛН
Deriving the Dirac Equation
16:34
Richard Behiel
Рет қаралды 86 М.
Alireza Ghasemi   Application of POD and DMD in Fluid Dynamics Analysis
38:41
Bridgette Connell
Рет қаралды 2,2 М.
Visualizing Complex-Valued Functions
23:38
Lemmaxiom
Рет қаралды 26 М.
The Proper Orthogonal Decomposition (Prof. Scott T.M. Dawson)
38:10
von Karman Institute for Fluid Dynamics
Рет қаралды 14 М.
Optimal Basis Elements:  The POD Expansion
30:41
Nathan Kutz
Рет қаралды 4 М.
Data-Driven Control: Balanced Proper Orthogonal Decomposition
27:41
Steve Brunton
Рет қаралды 13 М.
POD for Partial Differential Equations
27:17
Nathan Kutz
Рет қаралды 10 М.
6. Singular Value Decomposition (SVD)
53:34
MIT OpenCourseWare
Рет қаралды 218 М.
Nathan Kutz - The Dynamic Mode Decomposition - A Data-Driven Algorithm
1:28:45
The Alan Turing Institute
Рет қаралды 3,6 М.
100+ Linux Things you Need to Know
12:23
Fireship
Рет қаралды 87 М.
ОСКАР ИСПОРТИЛ ДЖОНИ ЖИЗНЬ 😢 @lenta_com
01:01