Aplicación de métodos de aprendizaje automático en sitios web de StackExchange

37

Tengo un curso de Machine Learning este semestre y el profesor nos pidió que encontremos un problema del mundo real y lo resolvamos con uno de los métodos de machine learning introducidos en la clase, como:

Soy uno de los fanáticos de stackoverflow y stackexchange y sé que los volcados de la base de datos de estos sitios web se proporcionan al público porque son increíbles. Espero poder encontrar un buen desafío de aprendizaje automático sobre estas bases de datos y resolverlo.

Mi idea

Se me ocurrió una idea al predecir etiquetas para preguntas basadas en las palabras ingresadas en el cuerpo de la pregunta. Creo que la red bayesiana es la herramienta adecuada para aprender etiquetas para una pregunta, pero necesito más investigación. De todos modos, después de la fase de aprendizaje cuando el usuario termina de ingresar la pregunta, se le deben sugerir algunas etiquetas.

Por favor, dime :

Quiero preguntar a la comunidad de estadísticas como personas experimentadas acerca de dos preguntas sobre el aprendizaje automático:

  1. ¿Crees que la sugerencia de etiquetas es al menos un problema que tiene alguna posibilidad de resolver? ¿Tienes algún consejo al respecto? Estoy un poco preocupado porque stackexchange aún no implementa dicha característica.

  2. ¿Tiene alguna otra / mejor idea para el proyecto ML que se basa en la base de datos stackexchange? Me resulta muy difícil encontrar algo que aprender de las bases de datos de stackexchange.


Consideración acerca de los errores de la base de datos: me gustaría señalar que, aunque las bases de datos son enormes y tienen muchas instancias, no son perfectas y pueden eliminar errores. La obvia es la edad de los usuarios que no es confiable. Incluso las etiquetas seleccionadas para la pregunta no son 100% correctas. De todos modos, debemos considerar el porcentaje de exactitud de los datos al seleccionar un problema.

Consideración sobre el problema en sí: mi proyecto no debería ser sobre data-miningalgo como esto. Simplemente debería ser una aplicación de métodos de ML en el mundo real.

Isaac
fuente

Respuestas:

28

, creo que la predicción de etiquetas es interesante y para la que tienes una buena oportunidad de "éxito".

A continuación se presentan algunos pensamientos destinados a ayudar potencialmente en una lluvia de ideas y una mayor exploración de este tema. Creo que hay muchas direcciones potencialmente interesantes que tal proyecto podría tomar. Supongo que un intento serio de solo uno o dos de los siguientes elementos sería un proyecto más que adecuado y es probable que surjan preguntas más interesantes que las que he planteado.

Voy a tener una visión muy amplia de lo que se considera aprendizaje automático . Indudablemente, algunas de mis sugerencias se clasificarían mejor como análisis exploratorio de datos y análisis estadístico más tradicional . Pero, tal vez, ayudará de alguna manera a medida que formule sus propias preguntas interesantes. Notarás que trato de responder preguntas que creo que serían interesantes en términos de mejorar la funcionalidad del sitio. Por supuesto, también hay muchas otras preguntas interesantes que pueden no estar relacionadas con la amabilidad del sitio.

  1. Análisis descriptivo básico del comportamiento del usuario : supongo que existe un patrón cíclico semanal muy claro para la participación del usuario en este sitio. ¿Cuándo obtiene el sitio más tráfico? ¿Cómo se ve el gráfico de participación del usuario en el sitio, por ejemplo, estratificado por hora durante la semana? Debería ajustar los posibles cambios en la popularidad general del sitio a lo largo del tiempo. Esto lleva a la pregunta, ¿cómo ha cambiado la popularidad del sitio desde el inicio? ¿Cómo varía la participación de un usuario "típico" con el tiempo desde que se unió? Supongo que aumenta bastante rápido al principio, luego se estabiliza, y probablemente se dirige al sur después de unas semanas de unirse.
  2. Presentación óptima de preguntas y respuestas : Obtener información sobre la primera pregunta parece conducir naturalmente a algunas preguntas más interesantes (en sentido ML). Digamos que tengo una pregunta para la que necesito una respuesta. Si deseo maximizar mi probabilidad de obtener una respuesta, ¿cuándo debo enviarla? Si estoy respondiendo a una pregunta y quiero maximizar mi conteo de votos, ¿cuándo debo enviar mi respuesta? Tal vez las respuestas a estas dos son muy diferentes. ¿Cómo varía esto según el tema de la pregunta (por ejemplo, según lo definido por las etiquetas asociadas)?
  3. Biclustering de usuarios y temas : ¿Qué usuarios son más parecidos en términos de sus intereses, una vez más, tal vez como lo miden las etiquetas? ¿Qué temas son más similares según los usuarios que participan? ¿Se te ocurre una buena visualización de estas relaciones? Una consecuencia de esto sería tratar de predecir qué usuario (s) es más probable que envíe una respuesta a una pregunta en particular. (Imagine proporcionar dicha tecnología a SE para que los usuarios puedan ser notificados de preguntas potencialmente interesantes, no simplemente basadas en etiquetas).
  4. Agrupación de respondedores por comportamiento : Parece que hay algunos patrones de comportamiento básicos diferentes con respecto a cómo los respondedores usan este sitio. ¿Se te ocurren características y un algoritmo de agrupamiento para agrupar los respondedores de acuerdo con su comportamiento? ¿Los grupos son interpretables?
  5. Sugerir nuevas etiquetas : ¿Puede proponer sugerencias para nuevas etiquetas basadas en inferir temas de las preguntas y respuestas que se encuentran actualmente en la base de datos. Por ejemplo, creo que la etiqueta [mezcla-modelo] se agregó recientemente porque alguien notó que recibíamos un montón de preguntas relacionadas. Pero, parece que un enfoque de recuperación de información debería ser capaz de extraer dichos temas directamente y potencialmente sugerirlos a los moderadores.
  6. Aprendizaje semisupervisado de ubicaciones geográficas : ( Esta puede ser un poco delicada desde una perspectiva de privacidad ) . Algunos usuarios enumeran dónde se encuentran. Otros no lo hacen. Usando patrones de uso y potencialmente vocabulario, etc., ¿puede poner una región de confianza geográfica en la ubicación de cada usuario? Intuitivamente, parecería que esto sería (mucho) más preciso en términos de longitud que de latitud.
  7. Marcado automático de posibles duplicados y preguntas muy relacionadas : el sitio ya tiene una característica similar con la barra relacionada en el margen derecho. Encontrar duplicados casi exactos y sugerirlos podría ser útil para los moderadores. Hacer esto en todos los sitios de la comunidad SE parecería ser nuevo.
  8. Predicción de abandono y retención de usuarios : utilizando las funciones del historial de cada usuario, ¿puede predecir la próxima vez que espera verlas? ¿Puede predecir la probabilidad de que regresen al sitio condicional en cuanto tiempo han estado ausentes y las características de su comportamiento pasado? Esto podría usarse, por ejemplo, para tratar de notar cuándo los usuarios están en riesgo de "abandono" y comprometerlos (por ejemplo, por correo electrónico) en un esfuerzo por retenerlos. Un enfoque típico enviaría un correo electrónico después de un período fijo de inactividad. Pero, cada usuario es muy diferente y hay mucha información sobre muchos usuarios, por lo que se podría desarrollar un enfoque más personalizado.
cardenal
fuente
1
@ cardenal. Esa es una respuesta maravillosa, y dada la disponibilidad de todos estos datos, sería un proyecto fascinante.
richiemorrisroe
1
La mayoría de sus sugerencias me parecen prácticas y relacionadas con el LD. De todos modos, algunos de ellos deben tratar con datos erróneos e incompletos. Lamentablemente, no tengo un conocimiento profundo de la minería y la limpieza de datos ni tiempo suficiente para aprenderlo. Espero que otros miembros de estadísticas trabajen un poco sobre estas ideas y hagan una contribución a la comunidad de SE y las impresionen :)
Isaac
2
@ Isaac, la lista que proporcioné no tenía la intención de abrumar. Fue pensado simplemente para ayudar potencialmente con la lluvia de ideas. Dependiendo de la naturaleza del proyecto, pensaría que manejar 1-2 de ellos sería lo máximo que se podría esperar. Aclamaciones.
cardenal
1
todas las ideas son buenas o geniales, pero me gusta "Biclustering de usuarios y temas" mejor ... un sistema de recomendación para preguntas potencialmente interesantes sería increíble.
steffen
9

Estaba pensando en la predicción de etiquetas, también, me gusta la idea. Tengo la sensación de que es posible, pero es posible que deba superar muchos problemas antes de llegar a su conjunto de datos final. Así que especulo que la predicción de la etiqueta puede necesitar mucho tiempo. Además de las etiquetas incorrectas, el límite de un máximo de 5 etiquetas puede desempeñar un papel. Además, algunas etiquetas son subcategorías de otras (por ejemplo, las "comparaciones múltiples" se pueden ver como una subcategoría de "pruebas de significación").

No verifiqué si los tiempos de votación positiva están incluidos en la base de datos descargable, pero un proyecto más simple y aún interesante podría ser predecir el número "final" de votos (tal vez después de 5 meses) en una pregunta dependiendo de los votos iniciales, y el momento de aceptar una respuesta.

GaBorgulya
fuente
Por lo que parece recordar, para cada usuario tiene su voto con fecha + ID de pregunta.
chl
(+1) para predicción de voto. ¡Gran idea!
steffen
1
Este proyecto parece genial, especialmente si predecimos el recuento de vpvote muy pronto para el usuario. Otro trabajo puede ser decirle al usuario qué está frenando su pregunta y qué mejora puede hacer que su pregunta sea popular. De todos modos, como siempre, la elección de la característica es realmente una tarea importante y desafiante, y el desempeño de tales predicciones depende en gran medida de esta selección. TL; DR Me gusta tu idea
Isaac
2

Esta es una buena pregunta. Yo también he pensado que los conjuntos de datos StackExchange disponibles públicamente serían buenos temas para el análisis. Estos son lo suficientemente inusuales como para que también puedan ser buenos bancos de pruebas para nuevos métodos estadísticos. Tener una cantidad tan grande de datos bien estructurados es inusual, en cualquier caso.

cardinal sugirió un montón de cosas que en realidad serían útiles para StackExchange. No me limitaré a esto.

Aquí hay un candidato obvio para el análisis, aunque no tiene un uso obvio que se le ocurra. Es un efecto notable que los usuarios de altas repeticiones tienen más probabilidades de obtener votos a favor, en igualdad de condiciones. Sin embargo, este efecto probablemente no sea trivial para el modelo. Dado que no podemos comparar la utilidad entre los usuarios muy fácilmente, un enfoque obvio sería asumir que las respuestas de los usuarios siempre fueron igualmente útiles (no es cierto en general, pero uno tiene que comenzar en alguna parte) y luego agregar un término inflacionario para explicar su creciente reputación . Uno podría entonces (supongo) agregar en algunos términos que justifiquen que sus respuestas mejoren con el aumento de la experiencia. Tal vez esto podría ser manejado por algún tipo de serie temporal. No estoy seguro de cómo afectaría esto el intervalo de datos. Puede ser un ejercicio interesante.

Agregaré más ejemplos si / cuando pienso en ellos.

¿Alguien sabe de trabajos de investigación estadística basados ​​en datos de SE? Además, Isaac mencionó que los datos tienen errores. ¿Alguien sabe algo más sobre esto?

Faheem Mitha
fuente
Esta es, de hecho, una pregunta interesante y una que creo que AndyW comenzó a analizar en una publicación de blog y hace un tiempo. Encuentro curioso su afirmación de que existe un efecto "notable" de este tipo, que no estoy completamente convencido de que realmente exista. Luego sugiere una forma de modelar esto, pero ¿eso no incluye generalmente intentar responder la pregunta precisa que dice que ya tiene una respuesta afirmativa?
cardenal
@cardinal: ¿Tienes un enlace a la publicación del blog? No estoy seguro de entender tu última oración. Tes, creo que el efecto es real y notable, al menos si el nombre del usuario es Skeet, pero en este punto esto es solo una impresión anecdótica, aunque fuerte. Entonces, si lo prefiere, puede reemplazar el "efecto notable" con la hipótesis. Por supuesto, el análisis intentaría confirmarlo o negarlo, así como medir la fuerza del efecto si existiera.
Faheem Mitha