-
-
Notifications
You must be signed in to change notification settings - Fork 9
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
[Feature Request] Train a gradient-boosted decision tree #28
Comments
Here are 10 users' datasets: tiny_dataset.zip You can use them for testing your model. PR is welcome. I can help you benchmark the model. |
I'll see what sort of results I can get with this. Thanks for the data! |
So, I'm trying to run your script.py with this dataset, and it creates an evaluation directory, but it is empty. (I put the dataset in the dataset directory). Can you help me with the next steps, please? By the way, this is Pavlik, working with Hannah-Joy Simms |
Not sure if that helps, but I use cmd (Windows) and the following command: |
That doesn't produce changes. I think the problem is that it may not be finding the data, but I'm not sure how to check for that. |
Do you have the fsrs-optimizer repo downloaded too? script.py relies on fsrs_optimizer.py.
|
I did it like this, is it right: |
Try running this line in cmd again (and make sure that fsrs-benchmark and fsrs-optimizer have the same parent folder, for example C:\Users\ppavl\Dropbox\Active projects\fsrs-benchmark and C:\Users\ppavl\Dropbox\Active projects\fsrs-optimizer): |
Yes, it was there from the start. It is unchanged after running the script |
Could you paste the output of script displayed in the terminal? |
Yes, but it is blank: PS C:\Users\ppavl\Dropbox\Active projects\fsrs-benchmark> $env:DEV_MODE="1"; python script.py and PS C:\Users\ppavl\Dropbox\Active projects\fsrs-benchmark> set DEV_MODE=1 |
Weird. Nothing happened after the execution? I'm sorry I can't help you because I don't have a windows device. |
Could you check the file path of your dataset? |
It's weird. Could you add |
It says: C:\Users\ppavl\Dropbox\Active projects\fsrs-benchmark |
Maybe you can print(unprocessed_files) to check whether the dataset has been read. |
So, for my configuration it wasn't overwriting the old results directory that was there in github, I renamed this directory to results2, and now it creates the results directory as expected. I'll likely have some questions, so I'll send you an email unless you prefer I post them here as new issues. |
@imrryr how's the progress? |
Well, pretty good. I'm trying to get some appropriate data to compare this with some of our methods (e.g. https://scholar.google.com/citations?view_op=view_citation&hl=en&user=Ye48zsYAAAAJ&sortby=pubdate&citation_for_view=Ye48zsYAAAAJ:iyewoVqAXLQC ). I contacted Dae and am also looking at the MaiMemo data. I'm a little confused now since I realize I don't know the formal relationship of FSRS 4.5 and SSP-MMC. I'd be happy if someone could explain that... @Expertium Could one simply use the MaiMemo data with the FSRS 4.5 algorithm? @L-M-Sherlock |
They are all based on DSR model. But the difficulty of cards is predetermined because we have millions users learning the same set of vocabulary.
It's hard because the MaiMemo data doesn't contains every user's entire review data. |
@L-M-Sherlock OK, got it. So, DSR= difficulty, stability, recall... So when I unpack the SSP-MMC notation in your paper I will see it corresponds closely with FSRS model, except the difficulties are fixed in SSP-MMC method? Also, I got the full data, so I may have more questions as I move forward on this with Hannah |
My bad, imrryr. All this time I thought you were the person who is implementing a decision tree algorithm. |
@L-M-Sherlock I am looking at the revlog format in the data archive. Do you have existing code to convert it to your CSV format? I guess I need to do that. |
Do you mean this? |
@L-M-Sherlock Maybe I do, but the format this code creates is different than is in the dataset folder. Do you know how to make them into the same format it needs for input: e.g. card_id,review_th,delta_t,rating Can you elaborate on how to get to this final format? I may be able to right the code from what you sent already, but help is appreciated. Also |
The code used to generate that format data is at here: https://github.com/open-spaced-repetition/fsrs-benchmark/blob/main/revlogs2dataset.py |
So, this code seemed to work at first, but doesn't produce the same results as the tiny dataset had. Its weirdly similar, with the number of card_id and length the same... just corrupted review_th and delta t.... For example... correct file: the output I get from revlogs2dataset.py: |
Please open a new issue to report the details. I hope you can share the revlogs file and your script code. |
Well that's a bummer. Why did you close it? |
Because I don't plan to implement the model and I have shared the dataset with the creator of this issue. |
Yeah, but did the creator of the issue himself say that he's not planning to work on it? |
Hi all, I'm still working on this, but progress is slow since I don't have a ton of time to spend on this. I got what I wanted out of this issue, which is a public subset of the data, thanks a lot for that. I'm okay with closing this, I don't need the issue to be open to work on it. |
@maxencefrenette I think it's best to keep the number of trainable parameters around 500-600, since that's roughly how many parameters our LSTM and Transformer have. Ideally, we want to see how much architecture affects the results. If the number of parameters across different algorithms is similar, then we can clearly see which architecture is superior. |
@maxencefrenette Hello again! Me and LMSherlock have re-defined RMSE and are finishing benchmarking algorithms again. If you still want to participate (and I hope you do), now is a good time. |
Although transformers are probably what would give the best performance with enough training and tweaking of hyperparameters, I suspect that a gradient boosted decision tree ensemble model might outperform FSRS with very little tweaking using a methodology similar to this: https://machinelearningmastery.com/xgboost-for-time-series-forecasting/. It would, however be a much heavier model with many more parameters than even the LSTM that was attempted.
This is something i'd be interested in exploring if I could have access to the training data.
The text was updated successfully, but these errors were encountered: