GSOC'23: Final Report

GSOC'23: Final Report

Project Details

Title: Addition of regression GAM and kNN classification functionality in statistics package

Organization(s): GNU Octave, Google Summer of Code

Mentors: Andreas Bertsatos and Nick Jankowski

Community Discussion thread : [ Discourse Thread ]

Project Fork: [ Fork ]

All Contributions : [ ALL ]

Project Proposal : [ Proposal Archive ]

patches and contributions

  1. Implementation of kNN ClassificationKNN

    • Improving knnsearch function : [Link]

      Added include-ties search method

      Added k-d tree search method

    • Implementing k-Nearest Neighbour function for classification: [Link]

    • Implementation of classdef for kNN: [Link]

      ClassificationKNN and predict

    • Additional PRs : [Link] [Link]

  2. Implementation of Generalised Additive Models (GAM) Regression

    • Function implementation of GAM Regression: [Link]

      gampredict

    • Classdef for GAM Regression: [Link]

      RegressionGAM and predict

    • Additional PRs : [Link] [Link]

ALL PRs : [ Link to all my Contributions ]

Weekly Overview

WEEK / TIME PERIOD

PROPOSED TASKS

week 0: May 4 - May 28: Community Bonding Period

- fixing bugs, and adding missing functionalities to the statistics package. Getting familiar with the codebase of Octave and its Packages, Understanding the structure of Octave, Identifying the missing and pre-existing functionalities in the package

Week 1: May 29 - June 4

a. Implementing the missing functionalities. b. adding BISTs and Demo to ridge function.

Week 2&3: June 5 - June 23

a. Improving knnsearch function with different distance metrics. b. adding kdtree search method c. adding BISTs and Demos to knnsearch d. Rough Implementation of knnpredict for predicting labels from Input data for query points.

Week 4: June 24 - Jul 4

a. Implementing knnpredict function b. adding BISTs and Demo for knnpredict c. Implementation of classdef for classificationKNN , d. Implementing fitcknn to fit values into the

Week 5: July 5 - Jul 10

a. Optimization of implemented functions by identifying the time taken by the part of codes, vectorising, using octaves built-in functionalities and Clearing large matrices. b. Using profiler-guided optimization to improve runtime performance. c. Buffer period for any pending Tasks.

Week 6 & 7: July 15 - July 25

a. Implementing the missing functionalities. b. Fixing bugs and adding functionalities dependent for implementing GAM. c. Implementing gampredict GAM regression using input data.

Week 8 & 9: July 26 - Aug 15

a. Rough Implementation of GAM regression classdef RegressionGAM. b. Implementation of GAM regression predict function from RegressionGAM Object. c. Implementing fitrgam for fitting a RegressionGAM object.

Week 10: Aug 15 - Aug 22

a. Adding BISTs and DEMO to the GAM regression function gampredict and RegressionGAM. b. Optimization of implemented functions by identifying the time taken by the part of codes, vectorising, using octaves built-in functionalities and Clearing large matrices.

Week 11: Aug 23 - Aug 28

a. Additional Tasks and Buffer Time Before Final evaluations

Weekly Blogs :

[ Week 1&2 ]

[ Week 3 ]

[ Week 4&5]

[ Week 6&7 ]

[ Week 8 ]

[ Week 9&10 ]

Further Improvements and Future Work

In Generalised Additive Model (GAM) Regression implementation can benefit from additional methods of fitting like Gradient Boosting Trees, Making the runtime with large datasets considerably small. Further, the Statistics Package Lacks the Full implementation of Linear models which are partially supported as of now.

acknowledgments

I would like to express my sincere gratitude and heartfelt thanks to my mentors, Andreas Bertsatos and Nick Jankowski, for their invaluable guidance and unwavering support throughout my journey in the Google Summer of Code program. Octave Community as a Whole has Helped me a Lot during the times when I was stuck in Problems. The last three months have been a very Fun and Productive learning Experience. My Skills have seen a lot of new palettes and my interest in contributing to open-source communities has replenished. I am very Excited and Motivated to work more closely with the Octave community for its betterment.

Did you find this article valuable?

Support Azmat Khan by becoming a sponsor. Any amount is appreciated!