cs229_hw2_3de


I've uploaded the files I used for HW2 problem 3 D & E here:

hw2_svm_3de.zip

 

There are seven files in the archive: smo_test, smo_train, svm_test, and svm_train were explained in the HW question.  j_rand_not_i and clip_alpha are just helper functions from the SMO code to make it cleaner.  Beware: svm_test, and svm_train are slightly modified from the class version (see the first few lines) and I will discuss that below. 

 

If you run smo_verify and get a plot like the one below, then your SMO code works, and you just need to characterize it's performance. 

Once you have smo_verify correct you can try out svm_test, first you need to run svm_train to get w & b. 

There a two parameters to play with to see how the algo performs on different data sets; max_passes and tol.  Some of the iterations can take up to 10min, so it's worth while to automate the testing.  I did a crude version of this in the attached file: char_svm.  In order for char_svm to call the train and test scripts I had to make them into functions.  This was a very small change and only the first line was altered. 

 

With max_passes set to 100 and training on the 1400 samples I was able to achieve a test accuracy of 0.005 or 0.5%.  That is amazing performance! 

 

The simplified smo algo has a random component so you won't get the same results every time, so it's a good idea to take multiple samples, and average out the results. Below is one example where I took three samples. 

 

 

If you have any questions, feel free to contact me.