Hello Christine:

I tried your code using the sweep function (which is totally mysterious to me and so like Elroch, I'd like to ask how you arrived at this function). I got the following error message (using r in spanish):

Code:

Error en sweep(x[, 2:3], MARGIN = 1, y, "*") :
subíndice fuera de los límites
Ejecución interrumpida

In other words, subindex out of bounds.

So I tried my version of the H matrix:

Code:

H <- kernelPol(vanilladot(),x,,y)

where x and y are the input matrix and output vector respectively. This is what I got:

Code:

Error en solve.default(AP, c(c.x, c.y)) :
sistema es computacionalmente singular: número de condición recíproco = 1.92544e-16
Calls: ipop -> ipop -> solve -> solve.default
Ejecución interrumpida

Hmmm... So a computationally singular matrix. I played around with the u vector of upper constraints like so:

Code:

u <- matrix(rep(1e3,N))

And it somehow went through (sometimes). However, apart from the fact that the results were complete nonsense the in sample error was invariably non zero. As Elroch remarked, I also had the intuitive realization that if the upper matrix was not high enough, some alpha values were always reaching the upper bound (in this case 1e3=1000), and that did not seem right....

Ahh... quadratic programming and its mysteries!

That's why I gave up on ipop altogether and decided to use ksvm:

Code:

x <- as.matrix(training_data[,2:3]) #pull out x_0
y <- as.matrix(training_data[,4])
svmmodel <- ksvm(x,y,kernel="vanilladot",C=100,type="C-svc")

But my answers obtained in Q9 and Q10 were not correct.