If you look at the decision matrix and voices, they seem to correspond more to the answers:
> predict(out, newdata = testdat, type = "response") [1] 0 0 1 1 Levels: 0 1 > predict(out, newdata = testdat, type = "decision") [,1] [1,] -0.07077917 [2,] -0.01762016 [3,] 0.02210974 [4,] 0.04762563 > predict(out, newdata = testdat, type = "votes") [,1] [,2] [,3] [,4] [1,] 1 1 0 0 [2,] 0 0 1 1 > predict(out, newdata = testdat, type = "prob") 0 1 [1,] 0.7198132 0.2801868 [2,] 0.6987129 0.3012871 [3,] 0.6823679 0.3176321 [4,] 0.6716249 0.3283751
Link to kernlab ( ?predict.ksvm ) help pages on paper Probability estimates for classifying several classes using TF Wu, CJ Lin and RC Van pairing.
Section 7.3 states that decisions and probabilities may vary:
... We explain why probability-based results and decision-based methods can be so different. For some problems, the parameters chosen by ฮดDV are very different from the parameters, the other five rules. In the waveform, with some parameters, all probability-based methods give much higher accuracy for checking cross-references than ฮดDV. We observe, for example, the values โโof the solution for validating the set are in [0.73, 0.97] and [0.93, 1.02] for data in two classes; therefore, all data in the validation sets is classified as in the same class and the error is high. In contrast, probability-based methods correspond to solution values โโby a sigmoid function, which may be better to separate the two classes by cutting the solution value to about 0.95. This observation shed some light on the difference between probability-based and decision-based methods ...
I do not know enough about these methods to understand the problem, but maybe you are doing it. It seems that there are different forecasting methods with probabilities and some other method, and type=response corresponds to a different method than that used for forecasting probabilities.