Skip to content

[DOC] Add RotationForest Classifier Notebook for Time Series Classification #2592

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: main
Choose a base branch
from

Conversation

Kaustbh
Copy link
Contributor

@Kaustbh Kaustbh commented Mar 6, 2025

Reference Issues/PRs

Fixes: #2383

What does this implement/fix? Explain your changes.

This PR adds a new notebook demonstrating the use of the RotationForest classifier.

Does your contribution introduce a new dependency? If yes, which one?

Any other comments?

PR checklist

For all contributions
  • I've added myself to the list of contributors. Alternatively, you can use the @all-contributors bot to do this for you after the PR has been merged.
  • The PR title starts with either [ENH], [MNT], [DOC], [BUG], [REF], [DEP] or [GOV] indicating whether the PR topic is related to enhancement, maintenance, documentation, bugs, refactoring, deprecation or governance.
For new estimators and functions
  • I've added the estimator/function to the online API documentation.
  • (OPTIONAL) I've added myself as a __maintainer__ at the top of relevant files and want to be contacted regarding its maintenance. Unmaintained files may be removed. This is for the full file, and you should not add yourself if you are just making minor changes or do not want to help maintain its contents.
For developers with write access
  • (OPTIONAL) I've updated aeon's CODEOWNERS to receive notifications about future changes to these files.

Copy link

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

@aeon-actions-bot aeon-actions-bot bot added the examples Example notebook related label Mar 6, 2025
@aeon-actions-bot
Copy link
Contributor

Thank you for contributing to aeon

I did not find any labels to add based on the title. Please add the [ENH], [MNT], [BUG], [DOC], [REF], [DEP] and/or [GOV] tags to your pull requests titles. For now you can add the labels manually.
I have added the following labels to this PR based on the changes made: [ $\color{#45FD64}{\textsf{examples}}$ ]. Feel free to change these if they do not properly represent the PR.

The Checks tab will show the status of our automated tests. You can click on individual test runs in the tab or "Details" in the panel below to see more information if there is a failure.

If our pre-commit code quality check fails, any trivial fixes will automatically be pushed to your PR unless it is a draft.

Don't hesitate to ask questions on the aeon Slack channel if you have any.

PR CI actions

These checkboxes will add labels to enable/disable CI functionality for this PR. This may not take effect immediately, and a new commit may be required to run the new configuration.

  • Run pre-commit checks for all files
  • Run mypy typecheck tests
  • Run all pytest tests and configurations
  • Run all notebook example tests
  • Run numba-disabled codecov tests
  • Stop automatic pre-commit fixes (always disabled for drafts)
  • Disable numba cache loading
  • Push an empty commit to re-run CI checks

@Kaustbh Kaustbh changed the title Add RotationForest Classifier Notebook for Time Series Classification [DOC] Add RotationForest Classifier Notebook for Time Series Classification Mar 6, 2025
@Kaustbh Kaustbh changed the title [DOC] Add RotationForest Classifier Notebook for Time Series Classification Add RotationForest Classifier Notebook for Time Series Classification Mar 6, 2025
@Kaustbh Kaustbh changed the title Add RotationForest Classifier Notebook for Time Series Classification [DOC] Add RotationForest Classifier Notebook for Time Series Classification Mar 11, 2025
@MatthewMiddlehurst
Copy link
Member

It would be good if you can include a reference for the original paper. It would also be good to talk about why it is relevant for TSC. Have a mention some of the algorithms which use the classifier (STC, FreshPRINCE). I would take a look at https://arxiv.org/pdf/1809.06705 also which discusses why RotF is good for continuous features (which time series will always be, and most approaches extract features as).

@@ -0,0 +1,210 @@
{
Copy link
Member

@MatthewMiddlehurst MatthewMiddlehurst Apr 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Think there is still more that can be added but fine for a first iteration. Please remove the extra cell at the end then LGTM


Reply via ReviewNB

@Kaustbh
Copy link
Contributor Author

Kaustbh commented Apr 3, 2025

It will be great to add more, Please tell me what else we can do.

@@ -0,0 +1,210 @@
{
Copy link
Member

@MatthewMiddlehurst MatthewMiddlehurst Apr 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Our implementation uses the sklearn decision tree which is CART i believe. I would include this in brackets maybe.

Dont need to bold, in the last line use RotationForestClassifier.

I wouldnt say the second point is necessarily correct. The decision tree are built on the transformed/rotated features. You can use ChatGPT to find out more about the algorithm if that helps, just dont copy and paste the contents into the notebook. i.e. "When feature interactions and correlations are significant, Rotation Forest might capture these better through PCA rotations." is correct.


Reply via ReviewNB

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Our implementation uses the sklearn decision tree which is CART i believe.

I took this information from the paper https://arxiv.org/pdf/1809.06705, it is mentioned in 3rd point.

III. THE ROTATION FOREST ALGORITHM
Rotation forest is a tree-based ensemble with some key
differences to random forest. The two main differences are
that rotation forest transforms the attributes into sets of
principle components, and that it uses a C4.5 decision tree.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not our implementation

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have gone to the opposite end now, it is true that the original Rotation forest uses a C4.5 decision tree. It is only our implementation which uses the scikit-learn CART.

@MatthewMiddlehurst
Copy link
Member

Nah lets just tidy this up for now.

Copy link
Contributor

@TonyBagnall TonyBagnall left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, thanks

@MatthewMiddlehurst MatthewMiddlehurst added the documentation Improvements or additions to documentation label Apr 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation examples Example notebook related
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[DOC] Rotation forest notebook
3 participants