## Description

1) Linear-kernel separable SVM a) Implement a linear-kernel separable SVM [Slope,Intercept] = LKS_SVM(x0,x1) by solving the dual quadratic program, where x0,x1 are matrices of D columns listing the points in the two classes, for yi=1 respectively Slope is the D dimensional direction of the max-gap classifier (w in class/slides) Intercept is the scalar offset of this classifier (b in class/slides) [25 points] b) Test your program in 2D in runs separating simulated sets of points sized of fixed size on the cyan vs. black portions of the Tanzanian flag (using SimPolyHedra) measuring the quality (margin) of the solution and finding the support vectors for each. Do this by writing a function [Margin, SupportVs, Slope, Intercept, x0, x1] = Test_LKS_SVM(N) With input N that is the number of points to simulate in each class, and outputs that include the simulated inputs for the SVM, its output, the scalar margin Margin which is the distance between the per-class half planes (m in the notation of the class/slides), and k×2 matrix of the k support vectors in 2D, SupportVs (usually k=3). Submit also a plot of the margin as a function of N for N=5,10,15,…,50 , along with respective 10×6 text files that detail the output of Test_LKS_SVM Output_[N]_x0 Output_[N]_x1 Output_[N]_Intercept Output_[N]_Slope Output_[N]_SupportVs Output_[N]_Margin [25 points]

2) Non-separable linear SVM: a) Add ability to handle non-separable data by [Slope,Intercept] = NSL_SVM(x0,x1,C) by solving the dual quadratic program, where all arguments are as before, except C the factor that controls the weight of the slack (misclassified points) vs. the gap. [25 points]

b) Test your program in 2D in runs separating simulated sets of points sized of fixed size on the cyan vs. black portions of the Tanzanian flag (using SimPolyHedra) measuring the quality (margin, number of misclassifications) of the solution while tuning the slack weight. Do this by writing a function [Nmiss, Margin, SupportVs, Slope, Intercept, x0, x1] = Test_NSL_SVM(N,Nfalse) With input N that is the number of simulated points labeled to be in each class. These N ponts include N-Nfalse that are a labeled according to the color of the region that they are in, and Nfalse that are in the opposite-color region. Outputs are as before, with the addition of Nmiss, the number of misclassified points. Submit also a plot of the margin and the number misclassified as a function of C for 10 values of C of your choice (try to zoom in on the best performance), and for three configurations: N=10,20,50 , when every dataset includes 10% false points. Submit respective 3×10×7 text files that detail the output of Test_NSL_SVM Output_[C]_[N]_x0 Output_[C]_[N]_x1 Output_[C]_[N]_Intercept Output_[C]_[N]_Slope Output_[C]_[N]_SupportVs Output_[C]_[N]_Margin Output_[C]_[N]_Nmiss [25 points]