Understanding POD: the Proper Orthogonal Decomposition

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
    @ahmeda24762 жыл бұрын

    I think this is the best explanation of POD I have ever seen.

  • @zachzach8171
    @zachzach81713 жыл бұрын

    This is exactly what I need right now. Thank you for the amazing content. Please keep doing this!

  • @TheLarissaCoutinho9
    @TheLarissaCoutinho92 жыл бұрын

    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.

  • @dolfinskip
    @dolfinskip2 жыл бұрын

    Amazing explanation... the visualisation helped a lot! Thank you and may your ilk prosper!

  • @julianroth1952
    @julianroth19523 жыл бұрын

    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.

  • @tadeumf
    @tadeumf3 жыл бұрын

    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 =]

  • @diogocastelobranco8963
    @diogocastelobranco89632 жыл бұрын

    Excelente vídeo, cara!! Continua com esse trabalho que tá muito bom!

  • @TheRubencho176
    @TheRubencho1763 ай бұрын

    What an amazing explanation. Thank you very much!

  • @mateuscarvalho5959
    @mateuscarvalho5959 Жыл бұрын

    This is the best video about POD I have seen. Thanks a lot!

  • @tomcross9780
    @tomcross97802 жыл бұрын

    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!

  • @SlashSung
    @SlashSung9 ай бұрын

    Very good visualization of the interpretation of the V matrix. I just needed it, thank you

  • @ZirothTech
    @ZirothTech2 жыл бұрын

    Amazing video! Thank you

  • @lixinrong3094
    @lixinrong30944 ай бұрын

    excellent visualization! Very helpful!💖

  • @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!

  • @brtymn5804
    @brtymn58042 жыл бұрын

    Thank you Fernando, very well explained.

  • @Soul-rr3us
    @Soul-rr3us Жыл бұрын

    definitely one of the cooler SVD visualizations I've seen

  • @ClosiusBeg
    @ClosiusBeg2 жыл бұрын

    Thank you man! Extremely good explanation!

  • @SKKarthick12
    @SKKarthick12 Жыл бұрын

    Amazing job in visualizing the math man! kudos!

  • @shivamsundeep5328
    @shivamsundeep53285 ай бұрын

    Thanks a lot....This is the best POD explaination I have seen.... Very helpful... Keep it up.

  • @roopeshkumar2868
    @roopeshkumar28683 жыл бұрын

    Beautiful

  • @sagsolyukariasagi
    @sagsolyukariasagi2 жыл бұрын

    great video. Thank you very much.

  • @joseomardavalosramirez6380
    @joseomardavalosramirez6380 Жыл бұрын

    Great video, you are the master

  • @anurajmaurya7256
    @anurajmaurya72563 жыл бұрын

    perfect!

  • @abhishekkumarsingh-kb4cm3up2e
    @abhishekkumarsingh-kb4cm3up2e2 жыл бұрын

    Awesome !!!!

  • @EmranAram
    @EmranAram9 ай бұрын

    THanks!

  • @GRAYgauss
    @GRAYgauss2 жыл бұрын

    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!

  • @seunghoonhwang5604
    @seunghoonhwang5604 Жыл бұрын

    Really Thanks!, Now I can understand what is the POD .

  • @fzigunov

    @fzigunov

    Жыл бұрын

    I'm happy to hear it was useful to you!

  • @robinjoseph9548
    @robinjoseph95482 жыл бұрын

    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.

  • @shahryarhabibi7187
    @shahryarhabibi7187 Жыл бұрын

    Excellent, share more please!

  • @Wow_1991
    @Wow_1991 Жыл бұрын

    Nice video. Make more on POD please.

  • @hamzaich5703
    @hamzaich57033 жыл бұрын

    Niiiiiice keep going maan ❤️❤️❤️

  • @chiamatthew6829
    @chiamatthew68293 ай бұрын

    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
    @arunrajiitbaero2 жыл бұрын

    Can you upload a video on the coding part of POD. It would be a great help for many.

  • @patz7792
    @patz77923 жыл бұрын

    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!

  • @antoinetatin594
    @antoinetatin5942 жыл бұрын

    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 !

  • @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).

  • @andremombach2898
    @andremombach28982 жыл бұрын

    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.

  • @AG-cx1ug
    @AG-cx1ugАй бұрын

    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

    Ай бұрын

    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

    Ай бұрын

    @@fzigunov Yes thank you!!

  • @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.).

  • @ademolajayeola9846
    @ademolajayeola98463 жыл бұрын

    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

  • @AK56fire
    @AK56fire3 жыл бұрын

    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

    2 ай бұрын

    @@fzigunov Could you please briefly explain how to use your virtual environment?

  • @illama5330
    @illama53305 ай бұрын

    Great video and all but man why the 2 girls 1 cup music

  • @turbochargersutututu
    @turbochargersutututu2 жыл бұрын

    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!