Open lukeyf opened 1 year ago
analysis.py
script is beautifully written; the style and the cleanliness is amazing and the code is easy to read. Is the raw data archived somewhere? Is it accessible?
Because although not archived anywhere due to the large size, it is accessible via their scripts. Suggestions
data
folder so that reviewers can have an idea of what the data consists of and how it's structured. makefile
present but no instructions on how to run it. I was able to run it using make all
but someone without such knowledge would not know how to replicate the analysis using make
. The instructions should be added to the README
. make all
, it seems the majority of the analysis ran successfully but it encountered some error near the end. make clean
works well. This should be explored so that everything runs smoothly for Milestone 4. A screenshot of the error is shown belowresults
for clarity. Right now there are folders such as reports
and notebooks
which seem a bit ambiguous at first glance, although easy to explore. For a third party unaware of the project, a folder such as results
informs them right away that this is where they'd find relevant documents, figures, saved models, and so on. reports
directory would be ideal instead of simply having it in your README
. If desired, it can be kept in the README
but there should be a proper directory in which the final report resides. Score
. The top of each plot can have the model type as the title. This was derived from the JOSE review checklist and the ROpenSci review checklist.
The report rendered is professional. All of the visualizations in the repo are excellent.
Minor issues. Link to "flow" is not usable in https://github.com/UBC-MDS/customer_complaint_analyzer/blob/main/CONTRIBUTING.md#regarding-pull-requests-please-consult-this-flow-so-that-all-code-changes-are-made-through-pull-requests. In Table 2, 1 feature is written as "dropped". It seems that more features (e.g., state, zip_code) were actually dropped actually?
I am not sure whether using cross-validation per se is sufficient, without including the results with the testing set. If you are not doing hyperparameter tuning, using cross-validation seems to be equivalent to doing 5 train-test-splits. Right, its not breaking the golden rule. As I saw that you included testing data in the analysis script, the only limitation I can think about right now is that the readers may not understand the flow perfectly as we all expect some testing data set for performance evaluation. If you want to stick with cross-validation only (which may not be the case), it will be cool if you can show the variance in different folds.
Using a bar chart to represent class imbalance is effective. While around 75% of the entries are with unknown status. I personally would like to see explicitly how your team deal with those entries (dropping them, right?).
I think setting a particular model as a basis for future optimization is a nice idea to have. I want to suggest another simpler model: Consider a model which classifies all complaints as potentially disputed. It will have a recall of 100%, a precision of around 19.5%, and an f1 of 16.3. Yes the f1 is lower but the recall is much better than other models, with a little scarification in precision. Using this standard, maybe logistic regression is not that good...?
The reason why I didn't check the the box for conclusion is that I think it is too early to conclude logistic regression is suitable. First, without hyperparameter and threshold tuning, it is likely that other models can outperform logistic regression. Without these steps, it could be too optimistic or pessimistic to conclude a model is suitable or not.
This was derived from the JOSE review checklist and the ROpenSci review checklist.
Peer Review
Please provide more detailed feedback here on what was done particularly well, and what could be improved. It is especially important to elaborate on items that you were not able to check off in the list above.
This was derived from the JOSE review checklist and the ROpenSci review checklist.
Thank you to @stepanz25, @morrismanfung, @robindhillon1, and TAs for all your helpful feedback! All your feedback points were valuable and we hope we can address them all in the future. Due to the time constraint, here are a few points highlighting the feedback we have addressed:
Each of our team members has included and documented a few tests in the tests
directory. The tests were written using pytest
syntax and should be easily adapted in various IDEs like vscode and Jupiter.
The commits from the team members for all the tests are in: https://github.com/UBC-MDS/customer_complaint_analyzer/pull/70, https://github.com/UBC-MDS/customer_complaint_analyzer/pull/76 and https://github.com/UBC-MDS/customer_complaint_analyzer/pull/79.
We have included the test scores in addition to the validation scores in the final report. The change in the analysis file and report quarto file can be found at https://github.com/UBC-MDS/customer_complaint_analyzer/pull/73.
For the EDA part of this project, we correctly formatted the figure captions and formats. The corresponding change can be found at https://github.com/UBC-MDS/customer_complaint_analyzer/pull/78.
One of the feedback from Milestone 2 was the makefile did not automatically run to the end. We debugged that this is because the chart saving was not correctly done to all platforms. We update this in https://github.com/UBC-MDS/customer_complaint_analyzer/pull/56 for save_chart
functionality to make the make
process robust at https://github.com/UBC-MDS/customer_complaint_analyzer/pull/56.
Some of our scripts were not documented appropriately. We add the author and date in this commit https://github.com/UBC-MDS/customer_complaint_analyzer/pull/78/commits/cd0427f83f0c45f2324233d79cbfd2a3cd3e618a.
We had unused files like .vscode
and .Rproj
files in our repository. We added into gitignore also in this pull request https://github.com/UBC-MDS/customer_complaint_analyzer/pull/78/commits/4d944def7ffa69003d6422af6db62b282668e745.
Thanks again for the amazing comments!
Submitting authors: @tieandrews @lukeyf @dhruvinishar
Repository: https://github.com/UBC-MDS/customer_complaint_analyzer Report link: https://ubc-mds.github.io/customer_complaint_analyzer/reports/final_report.html Abstract/executive summary: We aim to investigate, analyze, and report using the customer complaint dataset. This dataset is published in DATA.GOV and it is intended for public access and use. This dataset is a collection of customer complaints regarding their purchased financial products. It contains information on the summary and content of the complaint, the responses from the companies, and whether the customer disputed after companies response. We aim to answer the following inferential and/or predictive questions: Can we predict whether a customer is going to dispute based on their complaint and the company's response?
We plan to analyze the data using a mix of tabular and natural language processing tools like the bag-of-words representation and apply proper categorical transformations to the company's responses. The data were transformed and analyzed using 5 different models using cross-validations and the recall score was selected for model evaluation. The results were presented in the report file and the logistic regression model was selected as the best model due to its high performance and interpretability.
Editor: @flor14 Reviewer: Dhillon Robin, Chan Morris, Zaiatc Stephen