Again, I mostly focused on designing edge cases and here ere are some of the ways that I attempted for the edge cases of PCA. First of all, I tried to see if the component matrices returned by standard PCA and the implemented PCA are approximately the same. After adjusting for the signs (in PCA, signs are non deterministic unless some other measures are implemented), I checked that the component matrix returned by both algorithms are almost identical, which adds more credibility to the implemented PCA. I also checked the performance of implemented PCA by changing the number of partitions and by checking the performance on synthetic data matrix, which was generated from collinear vectors. For both methods, the performance of implemented PCA was on par with the standard PCA. Then I tried different methods related to hyperbox method by designing special cases for loading and component matrices. So far, no noticeable differences were present and for the coming week, I need to brush up the conceptual confusion that I'm having on this issue.
What did I do this week?
Design test cases to differentiate between standard PCA and implemented PCA
What will I work on next week?
Further work on testing framework for PCA. Continue implementing NNMF