¿Cómo clasificar los datos que tienen forma espiral?

Respuestas:

11

Hay muchos enfoques para este tipo de problema. La más obvia es crear nuevas funciones . Las mejores características que se me ocurren es transformar las coordenadas en coordenadas esféricas .

No he encontrado una manera de hacerlo en el patio de recreo, así que acabo de crear algunas características que deberían ayudar con esto (características de pecado). Después de 500 iteraciones se saturará y fluctuará a un puntaje de 0.1. Esto sugiere que no se realizarán más mejoras y probablemente debería ampliar la capa oculta o agregar otra capa.

No es una sorpresa que después de agregar solo una neurona a la capa oculta, obtenga fácilmente 0.013 después de 300 iteraciones. Algo similar ocurre al agregar una nueva capa (0.017, pero después de 500 iteraciones significativamente más largas. Tampoco sorprende ya que es más difícil propagar los errores). Lo más probable es que puedas jugar con un ritmo de aprendizaje o hacer un aprendizaje adaptativo para hacerlo más rápido, pero este no es el punto aquí.

ingrese la descripción de la imagen aquí

Salvador Dalí
fuente
Coordenadas esféricas! Me recordó el cálculo de pregrado.
Souradeep Nanda
44
@SouradeepNanda encontrarás muchas cosas de matemáticas que las personas consideran inútiles en la escuela extremadamente importantes en ML
Salvador Dali
Solo para aquellos curiosos como yo, trato de replicar los resultados , pero las cosas no salen tan bien
codevision
4

X1X2

Solución sin características adicionales.

Dheeraj Pb
fuente
3

thetaarctan(y,x)r(x2+y2)

x2y2

ingrese la descripción de la imagen aquí

anonisnotanon
fuente
¿Puedes explicar cómo te "engañaste"? ¿Cómo agregaste estas características? ¿Descargó el patio de juegos de GitHub y lo modificó? ¿O hay una forma más directa de hacer esto?
Jim
Me preguntaba cómo aplicar este truco también. Intenté hacerlo dentro del navegador pero no tuve suerte con eso. Luego decidí bifurcar el código fuente y agregué las nuevas características de entrada. Puedes verlo aquí
Cankut
0

solución espiral de vainilla tensorflow playground

Este es un ejemplo del patio de juegos Tensorflow de vainilla sin características adicionales y sin modificaciones. La carrera por Spiral fue entre 187 y ~ 300 Epoch, dependiendo. Utilicé Lasso Regularization L1 para poder eliminar los coeficientes. Disminuí el tamaño del lote en 1 para evitar que la salida se ajuste demasiado. En mi segundo ejemplo, agregué algo de ruido al conjunto de datos y luego subí el L1 para compensar.

ingrese la descripción de la imagen aquí

Jamin Quimby
fuente
0

La solución que alcancé después de una hora de prueba generalmente converge en solo 100 épocas .

Sí, sé que no tiene el límite de decisión más uniforme que existe, pero converge bastante rápido.

! [0.6% error de prueba

Aprendí algunas cosas de este experimento en espiral:

  • La capa de salida debe ser mayor o igual que la capa de entrada . Al menos eso es lo que noté en el caso de este problema espiral.
  • Mantenga la tasa de aprendizaje inicial alta , como 0.1 en este caso, luego, cuando se acerque a un error de prueba bajo como 3-5% o menos, disminuya la tasa de aprendizaje en una muesca (0.03) o dos. Esto ayuda a converger más rápido y evita saltar alrededor de los mínimos globales.
  • Puede ver los efectos de mantener alta la tasa de aprendizaje marcando el gráfico de error en la esquina superior derecha.
  • Para lotes más pequeños como 1, 0.1 es una tasa de aprendizaje demasiado alta ya que el modelo no puede converger ya que salta alrededor de los mínimos globales.
  • Por lo tanto, si desea mantener una alta tasa de aprendizaje (0.1), mantenga el tamaño del lote alto (10) también. Esto generalmente da una convergencia lenta pero más suave.

Casualmente, la solución que se me ocurrió es muy similar a la proporcionada por Salvador Dalí .

Agregue amablemente un comentario, si encuentra más intuiciones o razonamientos.

dracarys3
fuente