[mlpack] GSoC Idea - New methods (LDA, QDA, and KDA)

Ryan Curtin ryan at ratml.org
Thu Apr 14 00:19:57 EDT 2022


On Wed, Apr 13, 2022 at 02:01:55PM +0530, Suvarsha Chennareddy wrote:
> On Wed, Apr 6, 2022 at 5:31 PM Suvarsha Chennareddy <
> suvarshachennareddy at gmail.com> wrote:
> 
> > Hello everyone,
> > My name is Suvarsha Chennareddy and I’m a fresher (first year) at my
> > university, VIT (Vellore Institute of Technology). I’ve contributed to
> > mlpack a few times over the past few months, and I would like to
> > participate in GSoC. I have an idea, but want approval to begin working on
> > the proposal.
> >
> > I’ve been thinking about adding a new method (or methods) to mlpack as a
> > medium sized project. More specifically, I was wondering if I could work on
> > the implementation for ‘LDA’ (Linear Discriminant Analysis) and maybe even
> > ‘QDA’ (Quadratic Discriminant Analysis) for my summer project.
> >
> > Please let me know if this isn’t going to work out. If it is indeed ok,
> > should I add both or just ‘LDA’? Once I’m sure that this proposed idea is
> > alright, I’ll start working on a proposal. Thank you for taking the time to
> > read this.
> >
> > Thanks,
> > Suvarsha Chennareddy
> >
> 
> Hello everyone,
> 
> I’ve also decided to implement KDA (along with LDA and QDA). The following
> link will direct you to my proposal:
> https://docs.google.com/document/d/1EieZ5lq6BchFHp2F62lJODvi_GFwvoPtjr30fIJlTWM/edit?usp=sharing
> 
> Any feedback would be greatly appreciated.

Hey Suvarsha,

I took a quick look through.  I think it's totally reasonable to propose
3 methods, especially since they are all related.  Everything you wrote
in your proposal seems to be reasonable to me.  I have just two primary
comments and they are minor:

 * It would be useful to implement a binding for each of these methods,
   so users can use them from other languages.  I don't think you will
   find it difficult to write a binding (if you take a look at the one
   for PCA it is quite simple), but it does take some time to write good
   tests for them.

 * In the tests, maybe you are already thinking this but you will
   certainly want more than just one test per method. :)  Many tests
   will seem trivial, like basic sanity checks to make sure that it runs
   without crashing on random data, or that it behaves reasonably with
   empty input, or that it returns data of the desired dimensionality.
   That class of test (where you think as deviously as possible about
   how you might break the interface) is different than the algorithmic
   tests you suggested, but it is equally important.  I promise that
   users are always able to be more devious than developers imagine. :)

I hope this is helpful!

Thanks,

Ryan

-- 
Ryan Curtin    | "If you understood everything I said, you'd be me."
ryan at ratml.org |   - Miles Davis


More information about the mlpack mailing list