Actualmente estoy enseñando Matemáticas a una clase grande de $200$ estudiantes de secundaria. En la primera clase, hice un examen que abarcaba todas las lecciones de Geometría (G), Álgebra (A), Estadística Básica (S) y Trigonometría (T). Personalmente creo que 200 estudiantes en una clase es demasiado así que quiero dividirlos en $10$ clases con 20 alumnos en cada una. Mi pregunta es, dado su vector de resultados (G, A, S, T), ¿cómo puedo formar los 10 grupos de forma que los niveles de los estudiantes en cada grupo sean lo más parecidos posible?
Respuestas
¿Demasiados anuncios?Si utiliza el algoritmo k-means para agrupar a sus alumnos, minimizará la suma de cuadrados dentro de cada grupo. Este algoritmo encuentra grupos penalizando las variaciones de habilidad en cada grupo. Cuanto mayores sean las diferencias de habilidad en relación con la media del grupo, mayor será la penalización. Por lo tanto, esto debería satisfacer sus necesidades. Puede hacerlo muy fácilmente en R con el comando kmeans(). Sin embargo, este algoritmo no impone tamaños de grupo iguales. Se discuten soluciones a esta limitación ici .
El problema de encontrar la asignación óptima de clases equivale a minimizar la siguiente función objetivo:
$$ \sum_{i=1}^{10} \sum_{j=1}^{20} \left\| \mathbf x_{ij} - \boldsymbol\mu_i \right\|^2 $$
donde:
$$\mathbf x_{ij} = \text{vector of test scores of the } j^{th} \text{ student in the } i^{th} \text{ class}\\ \boldsymbol\mu_{i} = \text{mean of the test score vectors of the students in the } i^{th} \text{ class}$$
Hay muchas formas de minimizar una función de este tipo, pero la que yo prefiero generalmente en problemas pequeños como éste es recocido simulado . El recocido simulado consiste en tomar una solución inicial propuesta e ir ajustándola de forma iterativa (al principio con grandes ajustes y luego con otros menores) hasta llegar a una respuesta final que, por lo general, es casi óptima.
Además de una función objetivo, el recocido simulado también requiere una noción de lo que constituye un "tweak" (más formalmente, lo que constituye un par de estados vecinos). En este caso, dicho ajuste consistiría en intercambiar dos estudiantes aleatorios de dos clases aleatorias.
Nota: La función objetivo que he proporcionado es equivalente a la suma de todas las distancias entre pares dentro de una misma clase, como se explica en la sección Descripción de la herramienta k-means wiki .
¿Cree que sería una tarea óptima para la clase? Personalmente, dividiría los grupos de modo que los mejores de cada categoría estuvieran en grupos diferentes. Los alumnos pueden aprovechar sus habilidades y mejorar de ese modo.
Podría plantear el problema como
$\arg\max\limits_{x \in Cat} Score_x \bigcup \arg\min\limits_{x \in Cat} Score_x$
donde se realiza un muestreo sin reemplazamiento.
0 votos
Una solución fácil pero chapucera es ésta: promediar el vector (G,A,S,T), ordenar los valores y hacer cortes en cada 20º alumno.
1 votos
Gran ejemplo escolar para algoritmos de agrupación como k-means (10-means en su caso) o k-medoids. ¡Deberías enseñarlo!