15 using namespace shogun;
26 bool do_weighted_averaging,
30 REQUIRE(model != NULL && labs != NULL,
31 "%s::CStochasticSOSVM(): model and labels cannot be NULL!\n",
get_name());
34 "%s::CStochasticSOSVM(): number of labels should be greater than 0!\n",
get_name());
38 m_do_weighted_averaging = do_weighted_averaging;
42 void CStochasticSOSVM::init()
52 m_do_weighted_averaging =
true;
53 m_debug_multiplier = 0;
68 SG_DEBUG(
"Entering CStochasticSOSVM::train_machine.\n");
76 SG_DEBUG(
"The training setup is correct.\n");
90 if (m_do_weighted_averaging)
103 int32_t debug_iter = 1;
104 if (m_debug_multiplier == 0)
107 m_debug_multiplier = 100;
114 for (int32_t pi = 0; pi < m_num_iter; ++pi)
116 for (int32_t si = 0; si < N; ++si)
133 w_s.
scale(1.0 / (N*m_lambda));
143 if (m_do_weighted_averaging)
157 if (m_do_weighted_averaging)
158 w_debug = w_avg.
clone();
165 SG_DEBUG(
"pass %d (iteration %d), SVM primal = %f, train_error = %f \n",
166 pi, k, primal, train_error);
170 debug_iter =
CMath::min(debug_iter+N, debug_iter*(1+m_debug_multiplier/100));
175 if (m_do_weighted_averaging)
181 SG_DEBUG(
"Leaving CStochasticSOSVM::train_machine.\n");
202 m_num_iter = num_iter;
207 return m_debug_multiplier;
212 m_debug_multiplier = multiplier;
222 m_rand_seed = rand_seed;