23 using namespace shogun;
65 SG_ERROR(
"Specified features are not of type CDotFeatures\n");
72 for (int32_t i=0; i<num_vec; i++)
78 if (num_vec!=
lab.
vlen || num_vec<=0)
107 SG_INFO(
"Ocas Converged after %d iterations\n"
108 "==================================\n"
109 "timing statistics:\n"
110 "output_time: %f s\n"
115 "ocas_time %f s\n\n", result.nIter, result.output_time, result.sort_time,
116 result.add_time, result.w_time, result.qp_solver_time, result.ocas_time);
122 uint32_t num_cut_planes = result.nCutPlanes;
124 SG_DEBUG(
"num_cut_planes=%d\n", num_cut_planes);
125 for (uint32_t i=0; i<num_cut_planes; i++)
159 uint32_t nDim = (uint32_t) o->
w.
vlen;
163 for(uint32_t j=0; j <nDim; j++)
165 W[j] = oldW[j]*(1-t) + t*W[j];
166 sq_norm_W += W[j]*W[j];
183 float64_t *new_col_H, uint32_t *new_cut, uint32_t cut_length,
184 uint32_t nSel,
void* ptr)
188 uint32_t nDim=(uint32_t) o->
w.
vlen;
197 uint32_t i, j, nz_dims;
201 memset(new_a, 0,
sizeof(
float64_t)*nDim);
203 for(i=0; i < cut_length; i++)
208 c_bias[nSel]+=y[new_cut[i]];
214 for(j=0; j < nDim; j++ ) {
217 sq_norm_a += new_a[j]*new_a[j];
222 c_nzd[nSel] = nz_dims;
228 c_idx[nSel]=
SG_MALLOC(uint32_t, nz_dims);
232 for(j=0; j < nDim; j++ )
236 c_idx[nSel][idx] = j;
237 c_val[nSel][idx++] = new_a[j];
242 new_col_H[nSel] = sq_norm_a;
244 for(i=0; i < nSel; i++)
247 for(j=0; j < c_nzd[i]; j++)
248 tmp += new_a[c_idx[i][j]]*c_val[i][j];
279 for (int32_t i=0; i<nData; i++)
280 output[i]+=y[i]*o->
bias;
300 uint32_t nDim= (uint32_t) o->
w.
vlen;
313 for(uint32_t i=0; i<nSel; i++)
315 uint32_t nz_dims = c_nzd[i];
317 if(nz_dims > 0 && alpha[i] > 0)
319 for(uint32_t j=0; j < nz_dims; j++)
320 W[c_idx[i][j]] += alpha[i]*c_val[i][j];
322 bias += c_bias[i]*alpha[i];
333 void CSVMOcas::init()
354 "Indicates if bias is used.");
358 "SVMOcas solver type.");