Red de conocimiento informático - Material del sitio web - Cómo construir mediante programación Shogun Toolbox v0.10.0

Cómo construir mediante programación Shogun Toolbox v0.10.0

SHOGUN es una caja de herramientas de aprendizaje automático que se centra en métodos del kernel a gran escala, especialmente la caja de herramientas de aprendizaje automático de vectores de soporte (SVM). Proporciona una interfaz de objeto SVM común para varias implementaciones de SVM diferentes, todas utilizando la misma implementación de kernel eficiente y subyacente. Además de admitir máquinas vectoriales y regresión, SHOGUN también contiene una gran cantidad de métodos lineales, como análisis discriminante lineal (LDA), máquina de programación lineal (LPM), percepción (kernel) y algoritmos para entrenar modelos ocultos de Markov.

Después de explorar el uso de funciones en el sitio web oficial de Shogun, sentí que era como una enorme caja negra. Para mí, que uso la interfaz estática de Matlab, los nombres de las funciones que utilicé fueron básicamente Ambos son sg, que es. la abreviatura de shogun, pero el número y los nombres de los parámetros son diferentes. Primero, usamos la función sg para cargar datos en el cuadro negro y especificar para qué se usan los datos, ya sea para entrenamiento o prueba. Luego está el entrenamiento de SVM u otros clasificadores. Esta caja de herramientas contiene muchos clasificadores. Creo que esta caja de herramientas es muy poderosa. Hay muchos ejemplos fáciles de entender en la biblioteca. Ahora solo quiero leer más ejemplos y encontrar las funciones que quiero usar.

En esta caja negra o gran almacén del shogun, todos los datos se acumulan por adelantado y se procesarán cuando sea necesario. Es como darle primero todas las materias primas al chef, preparar todos los ingredientes que quieras y luego decirle al chef qué platos quieres comer hoy. Por ejemplo, para calcular una matriz del núcleo para entrenamiento y prueba y mostrar:

sg('set_features','TRAIN',train_features_matrix);

sg('set_features', 'TEST ' , test_features_matrix);

sg('set_kernel', ?'GAUSSIAN', ?'REAL', ?40, 1);

[K_train]=sg('get_kernel_matrix) ' ,'TREN');

[K_test ]=sg('get_kernel_matrix', 'TEST');

[features_train]=sg('get_features','TRAIN')

[features_test ]=sg('get_features','TEST');

El paso anterior es diseñar los datos primero ¿Cuál es la matriz de características de mi entrenamiento y prueba? , ¿Qué tipo de función del kernel usar? En esta pieza, los datos simplemente se acumulan y los datos no se procesan porque usted configura la función del kernel, al igual que cuando le da las materias primas al chef, él no comienza. cocina inmediatamente, pero espera hasta que le digas qué tipo de plato quieres comer. La última parte le dice al sistema cómo procesar los datos y luego genera un retorno de 0540;, lo que equivale a decirle al chef qué tipo de platos quiere comer. Si dice que quiere comer pescado en escabeche, el chef lo hará. Saca las materias primas. Chucrut y pescado y otros ingredientes te dan este plato.

Realmente siento que el documento de instrucciones en su sitio web oficial se actualizó después de que se actualizó el paquete de software. Descubrí que muchas declaraciones de ejemplo en el paquete de software no pueden encontrar las instrucciones correspondientes en el documento.

Al usar la función sg interna, descubrí que hay configuraciones de parámetros como "set_features" y "add_features". Ahora todavía no tengo un conocimiento profundo de set y add.

Según la explicación en el sitio web oficial y mi propia experiencia al observar los ejemplos, déjame darte mi propia opinión. Esto involucra un problema de objeto o alcance. Al comienzo del programa, el uso de "set_features" asigna 0540; el objeto de característica predeterminado. Cuando se utiliza "add_features", se crea un nuevo objeto de característica y se asigna 0540 a este objeto. En otras palabras, cuando se usa set, está en el alcance predeterminado, y cuando se usa add, está en el nuevo dominio. Solo hay un dominio predeterminado, pero hay varios dominios nuevos, por lo que se debe distinguir la relación correspondiente entre add. . Otro problema es que cuando se usa "get_features" para leer funciones, se producirá un error una vez que aparezca antes la función "add_features".

Algunas notas:

1) ?Las características en shogun se almacenan en columnas y el vector de etiqueta debe ser un vector de fila

2) ?Comenzar a entrenar separación El procesador es sg('train_classifier'), el resultado de la clasificación es result =? sg('classify'), y el resultado devuelto es label0540;.

3) ?La etiqueta0540 ingresada en "set_label" debe comenzar desde cero en secuencia.

4) Función del kernel GAUSSIAN:

Función del kernel RBF:

Estas dos funciones del kernel son esencialmente iguales, pero tienen una forma diferente. Todavía me pregunto por qué esta caja de herramientas ni siquiera tiene la función del núcleo comúnmente utilizada RBF. Resulta que se puede convertir de esta manera. Puedo usar el sigma que optimicé usando Libsvm para hacer una cuenta regresiva.

5) "kernel combinado" debe colocarse antes de "add_kernel" y "add_feature".