-
Notifications
You must be signed in to change notification settings - Fork 46
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
[WIP] An implementation of discontiguous sampling of the SRerf variant; we call it MTORF(?) #353
Open
adam2392
wants to merge
47
commits into
neurodata:staging
Choose a base branch
from
adam2392:dev/mtorf
base: staging
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…random number generation" This reverts commit dd381ae.
…atrix and tried switching linear systems
Deploy preview for rerf failed. Built with commit fcfabaa https://app.netlify.com/sites/rerf/deploys/5fc67a8a27fa4f00074b09d8 |
Currently some tests failed for me due to:
Not sure if this is related to us tho. |
adam2392
commented
Dec 1, 2020
} // END randMatStructured | ||
|
||
|
||
inline void randMatMultivariateTimePatchv2(std::vector<weightedFeature>& featuresToTry, std::vector<std::vector<int> > patchPositions){ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this version can be safely ignored. I need to get rid of this one.
2 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
@ChesterHuynh and I were interested in extending the SRerf variant that seems work very well on low-sample image datasets to low-sample multivariate-time series (mts). A corresponding issue was created here: adam2392#1 to discuss and design how this might look. This PR addresses the issue raised and implements MTORF(?).
We would love some feedback and potentially get this merged in so that way we can "pip install" this variant.
Details of Implementation
Assuming that mts are structured as (S x T), where S are time series signals and T is time, then MTORF essentially discontiguizes the sampling along the row dimensions, while keeping contiguous chunks in time (T).
@ChesterHuynh did a c++ implementation in the code that is attached and we have been running experiments to further some studies we have. I will summarize them here below.
Studies to Back it up
First, we did a simulation study that takes a 3-dim Gaussian and then generate 3 white noise signals. We generate ~1000 samples of each. Then we stack them as such:
This was the result:
This essentially demonstrates when MTORF vs SRERF is desirable. This motivated us to then proceed w/ some real data.
Classification task for epilepsy:
I used this variant when I set up an epilepsy outcome classification task based on the quantiles of features computed from iEEG data around a seizure onset. It was very helpful because I was able to utilize the fact that my input matrix was correlated in time, but I did not have to impose that each of the quantiles were correlated to its neighboring quantiles (SRerf vs MTORF). This example is a bit difficult to explain, so happy to add more details if desired.
motor decoding from iEEG data:
Chester and I are currently working on a research project trying to decode motor movements (L, R, Up, Down) from iEEG signals. We hypothesize that a subset of the iEEG data that we recorded is actually useful for decoding movement, and hence the MTORF variant is particularly useful.
Additional Information
Jesse helped me navigate where we might want to make the code change back in Feb 2020(?). Lol sorry for the delay in floating this back up. Jovo initially showed me the SRerf variant during I think a summer workshop he hosted. I prolly should do more tests comparing the different variants, but haven't found the time. I also briefly discussed things w/ Ronan and Hayden a long long time ago, so just trying to get this back on track :p.
Any critiques are appreciated.