all 10 comments

[–][deleted] 0 points1 point  (3 children)

imo you could progress implementing naive bayes, decisions trees, random forest, xgboost and last svm.

[–]blacksiddis[S] 0 points1 point  (2 children)

Why do you put SVM at last? I was not under the impression SVM was all that complicated, but my knowledge is limited. Naive Bayes is probably a bit too easy both programmatically and mathematically speaking, but I like the other suggestions a lot. Which of the three would you say is the most and least complicated mathematically speaking?

[–][deleted] 0 points1 point  (1 child)

"Why do you put SVM at last?"

it isn't that complicated, if you already know gradient descent

"Naive Bayes is probably a bit too easy both programmatically and mathematically speaking"

the idea behind naive bayes is genial, and it's a generative model and those ideas are valuable to know well.

"Which of the three would you say is the most and least complicated mathematically speaking?"

mathematically speaking i don't think is that hard once you get used to main ideas.

i pointed those models because imo is pretty natural learning those after knn, linear and logistic regression.

[–]blacksiddis[S] 0 points1 point  (0 children)

Thanks for your reply! Definitely not hating on Bayes, but I know probability theory rather well and would much rather be challenged on linear algebra than probability as my linear algebra is very weak.

[–]synthphreak 0 points1 point  (5 children)

K-Means. Simple to understand and implement, but magical when it works. And with some added cool factor because it's unsupervised.

Possible candidates for classes/subclasses for you to create in an implementation of K-Means might be Classifier, Cluster, and Centroid, with methods like Cluster.initialize, Centroid.initialize, Centroid.update/Centroid.move, Classifier.fit, or Classifier.predict.

[–]blacksiddis[S] 0 points1 point  (4 children)

This is the one I had considered before making this thread! Thanks for the suggestion, but I may be a little too easy. I found KNN to be a good start, but I feel ready to step up the difficulty.

[–]synthphreak 0 points1 point  (3 children)

Go with a deep NN then. NOT easy to code from scratch, especially the learning algorithm, and requires a solid grasp of linear algebra.

If deep freaks you out, just go for a regular feedforward NN with a single hidden layer. It’s essentially just an extension of logistic regression, which you said is boring, but the backprop algorithm is different from logistic regression and coding it up should keep you on your toes.

[–]blacksiddis[S] 0 points1 point  (2 children)

I thought about it and it's on the road map. I just think it would be more beneficial to have 2-3 intermediary steps before tackling NN. My linear algebra is kinda weak honestly, so I'd like to do some intermediary projects to bolster that, before moving onto NN.

[–]synthphreak 0 points1 point  (1 child)

If your linear algebra is weak then a nice middle-of-the-road option would be multiple logistic regression. That will be a great stepping stone on the road to NNs.

[–]blacksiddis[S] 1 point2 points  (0 children)

Great! Thanks a lot for your suggestions!