SVM Lerner Optimization.


I am trying to optimize the performance of the SVM learner by testing different combinations between all of its available options, which they are:

  • Overlapping Penalty that accepts real numbers
  • Select one of the three available kernels using radio button style, therefore, one can be chosen at each time, where each kernel has it is own parameters. All parameters accept real numbers
    • Polynomial (has three parameters)
      • Power
      • Bias
      • Gama
    • HyperTangent (has two parameters)
      • Kappa
      • Delta
    • RBF (has one parameter)
      • Sigma

Can I do that using KNIME? Any tips or tricks are highly appreciated. Thank you for all.

Here a simple outline of the solution that might be seeking (provided I have understood your question correctly):

  1. create a dedicated optimisation workflow for each kernel type and collapse each one into a meta node - this may appear lengthy but it is probably the best solution for experimenting, maintenance and debugging reasons ;
  2. wrap a case switch around the 3 optimisation workflows ;
  3. use the rule engine (variable) node after the input node to map your radio button values (i.e. the kernel types) to the numbers 0, 1 and 2, so as to control the case switch ports.

Now put the whole thing into a meta node again.

I  think you can make a loop for masure likelihood making a combinatory file with the combination of variables yo want to test.

Thank you Geo for your time and effort. 

Attached is the workflow that I am working on. The bottom part has the nodes that I need to run inside a loop. Starting with SVM Lerner, I need to run this node using different values for the penalty parameter. For each iteration, the scorer node has to output the performance results of the ‘SVM predictor’ node. Later, I need to change the kernels along with their paprmaters too.

As you can see from the attached workflow, I have tried to use the 'parameter optimization loop' node, but I did not know how to connect it to the ‘loop end’ node.

Please help.

Here is one way to design the process for the optimisation loop:

  1. connect the optimisation loop start output port with the SVM Learner node's variable input port;
  2. in the configuration screen, set the required parameters in the flow variable screen - the parameters that you have defined in the optimisation start node will appear here as a choice;
  3. after the scorer, you need to select the metric to optimise, e.g. Cohen's Kappa, using the data manipulation nodes as needed, the idea being to have a single row with the metric as a single column ;
  4. use the Table Row to Variable node and connect it with the optimisation loop end node;
  5. finally, tailor the optimisation loop end node to your needs. 

Thanks Geo, it works. However, for some reason, the results are always similar to the first iteration result. When I tried manually to refresh the whole workflow nodes, I got different results at each time.

The question now is how can I make knime run the whole workflow nodes at every loop iteration? Have a great day.

For the whole workflow to repeat, all you've got to do is connect the flow variable to an earlier node, e.g. file reader. However, what I think doesn't work is an optimisation loop inside another loop.

Thank you very much Geo, have a great weekend.