bool CMultitaskL12LogisticRegression::train_locked_implementation(SGVector<index_t>* tasks) { SGVector<float64_t> y(m_labels->get_num_labels()); for (int32_t i=0; i<y.vlen; i++) y[i] = ((CBinaryLabels*)m_labels)->get_label(i); malsar_options options = malsar_options::default_options(); options.termination = m_termination; options.tolerance = m_tolerance; options.max_iter = m_max_iter; options.n_tasks = ((CTaskGroup*)m_task_relation)->get_num_tasks(); options.tasks_indices = tasks; #ifdef HAVE_EIGEN3 malsar_result_t model = malsar_joint_feature_learning( features, y.vector, m_rho1, m_rho2, options); m_tasks_w = model.w; m_tasks_c = model.c; #else SG_WARNING("Please install Eigen3 to use MultitaskL12LogisticRegression\n") m_tasks_w = SGMatrix<float64_t>(((CDotFeatures*)features)->get_dim_feature_space(), options.n_tasks); m_tasks_c = SGVector<float64_t>(options.n_tasks); #endif return true; }
bool CMultitaskL12LogisticRegression::train_machine(CFeatures* data) { if (data && (CDotFeatures*)data) set_features((CDotFeatures*)data); ASSERT(features) ASSERT(m_labels) ASSERT(m_task_relation) SGVector<float64_t> y(m_labels->get_num_labels()); for (int32_t i=0; i<y.vlen; i++) y[i] = ((CBinaryLabels*)m_labels)->get_label(i); malsar_options options = malsar_options::default_options(); options.termination = m_termination; options.tolerance = m_tolerance; options.max_iter = m_max_iter; options.n_tasks = ((CTaskGroup*)m_task_relation)->get_num_tasks(); options.tasks_indices = ((CTaskGroup*)m_task_relation)->get_tasks_indices(); malsar_result_t model = malsar_joint_feature_learning( features, y.vector, self->m_rho1, self->m_rho2, options); m_tasks_w = model.w; m_tasks_c = model.c; SG_FREE(options.tasks_indices); return true; }
bool CMultitaskL1L2LogisticRegression::train_machine(CFeatures* data) { if (data && (CDotFeatures*)data) set_features((CDotFeatures*)data); ASSERT(features); ASSERT(m_labels); SGVector<float64_t> y(m_labels->get_num_labels()); for (int32_t i=0; i<y.vlen; i++) y[i] = ((CBinaryLabels*)m_labels)->get_label(i); slep_options options = slep_options::default_options(); options.termination = m_termination; options.tolerance = m_tolerance; options.max_iter = m_max_iter; SGVector<index_t> ind = ((CIndexBlockGroup*)m_task_relation)->get_SLEP_ind(); options.ind = ind.vector; options.n_tasks = ind.vlen-1; #ifdef HAVE_EIGEN3 slep_result_t model = malsar_joint_feature_learning( features, y.vector, m_rho1, m_rho2, options); m_tasks_w = model.w; m_tasks_c = model.c; #endif ASSERT(m_task_relation); return true; }
bool CMultitaskL12LogisticRegression::train_locked_implementation(SGVector<index_t>* tasks) { SGVector<float64_t> y(m_labels->get_num_labels()); for (int32_t i=0; i<y.vlen; i++) y[i] = ((CBinaryLabels*)m_labels)->get_label(i); malsar_options options = malsar_options::default_options(); options.termination = m_termination; options.tolerance = m_tolerance; options.max_iter = m_max_iter; options.n_tasks = ((CTaskGroup*)m_task_relation)->get_num_tasks(); options.tasks_indices = tasks; malsar_result_t model = malsar_joint_feature_learning( features, y.vector, self->m_rho1, self->m_rho2, options); m_tasks_w = model.w; m_tasks_c = model.c; return true; }