Aplicação de métodos de aprendizado de máquina nos sites StackExchange

37

Eu tenho um curso de Aprendizado de Máquina neste semestre e o professor nos pediu para encontrar um problema do mundo real e resolvê-lo por um dos métodos de aprendizado de máquina introduzidos na classe, como:

Sou um dos fãs de stackoverflow e stackexchange e sei que os dumps de bancos de dados desses sites são fornecidos ao público porque são incríveis! Espero encontrar um bom desafio de aprendizado de máquina sobre esses bancos de dados e resolvê-lo.

Minha ideia

Uma ideia surgiu: prever tags para perguntas com base nas palavras inseridas no corpo da pergunta. Eu acho que a rede bayesiana é a ferramenta certa para aprender tags para uma pergunta, mas precisa de mais pesquisas. De qualquer forma, após a fase de aprendizado, quando o usuário terminar de inserir a pergunta, algumas tags deverão ser sugeridas a ele.

Por favor me diga :

Quero perguntar à comunidade de estatísticas como pessoas experientes sobre o ML duas perguntas:

  1. Você acha que a sugestão de tags é pelo menos um problema com alguma chance de solução? Você tem algum conselho sobre isso? Estou um pouco preocupado porque o stackexchange ainda não implementa esse recurso.

  2. Você tem alguma outra / melhor ideia para o projeto ML que se baseia no banco de dados stackexchange? Acho realmente difícil encontrar algo para aprender com os bancos de dados stackexchange.


Consideração sobre erros de banco de dados: gostaria de salientar que, embora os bancos de dados sejam enormes e tenham muitas instâncias, eles não são perfeitos e estão sujeitos a erros. O óbvio é a idade dos usuários que não é confiável. Mesmo as tags selecionadas para a pergunta não estão 100% corretas. De qualquer forma, devemos considerar a porcentagem de correção de dados na seleção de um problema.

Consideração sobre o problema em si: Meu projeto não deve ser sobre data-miningou algo assim. Deve ser apenas uma aplicação dos métodos de ML no mundo real.

Isaac
fonte

Respostas:

28

Sim , acho que a previsão de tags é interessante e para a qual você tem uma boa chance de "sucesso".

Abaixo estão algumas idéias destinadas a potencialmente ajudar no brainstorming e na exploração adicional deste tópico. Eu acho que existem muitas direções potencialmente interessantes que esse projeto poderia tomar. Eu acho que uma tentativa séria de apenas um ou dois dos itens abaixo resultaria em um projeto mais do que adequado e é provável que você faça perguntas mais interessantes do que as que eu propus.

Vou ter uma visão muito ampla do que é considerado aprendizado de máquina . Sem dúvida, algumas das minhas sugestões seriam melhor classificadas como análise exploratória de dados e análise estatística mais tradicional . Mas, talvez, ajude de alguma maneira à medida que você formula suas próprias perguntas interessantes. Você observará que tento abordar questões que acho interessantes em termos de aprimoramento da funcionalidade do site. Obviamente, também existem muitas outras questões interessantes que podem não estar relacionadas à facilidade de uso do site.

  1. Análise descritiva básica do comportamento do usuário : Suponho que exista um padrão semanal cíclico muito claro para a participação do usuário neste site. Quando o site recebe mais tráfego? Como é o gráfico de participação do usuário no site, digamos, estratificado por hora durante a semana? Você deseja se ajustar a possíveis alterações na popularidade geral do site ao longo do tempo. Isso leva à pergunta: como a popularidade do site mudou desde o início? Como a participação de um usuário "típico" varia com o tempo desde a adesão? Suponho que ele acelere muito rapidamente no início, depois planaltos, e provavelmente vá para o sul depois de algumas semanas de ingresso.
  2. Apresentação ideal de perguntas e respostas : obter informações sobre a primeira pergunta naturalmente leva a algumas questões mais interessantes (no sentido de ML). Digamos que eu tenha uma pergunta para a qual preciso de uma resposta. Se eu quiser maximizar minha probabilidade de obter uma resposta, quando devo enviá-la? Se estou respondendo a uma pergunta e quero maximizar minha contagem de votos, quando devo enviar minha resposta? Talvez as respostas para esses dois sejam muito diferentes. Como isso varia de acordo com o tópico da pergunta (por exemplo, conforme definido pelas tags associadas)?
  3. Bicluster de usuários e tópicos : Quais usuários são mais parecidos em termos de interesses, novamente, talvez medidos por tags? Quais tópicos são mais semelhantes de acordo com quais usuários participam? Você pode criar uma boa visualização desses relacionamentos? As ramificações disso seriam tentar prever quais usuários têm mais probabilidade de enviar uma resposta para uma pergunta específica. (Imagine fornecer essa tecnologia ao SE para que os usuários possam ser notificados de perguntas potencialmente interessantes, não simplesmente baseadas em tags.)
  4. Agrupamento de respondentes por comportamento : Parece que existem alguns padrões comportamentais básicos diferentes sobre como os respondentes usam este site. Você pode criar recursos e um algoritmo de agrupamento para agrupar respondedores de acordo com o comportamento deles. Os clusters são interpretáveis?
  5. Sugestão de novas tags : você pode sugerir novas tags com base nos tópicos inferidos das perguntas e respostas atualmente no banco de dados. Por exemplo, acredito que a tag [modelo de mistura] foi adicionada recentemente porque alguém percebeu que estávamos recebendo um monte de perguntas relacionadas. Mas, parece que uma abordagem de recuperação de informações deve poder extrair esses tópicos diretamente e sugeri-los aos moderadores.
  6. Aprendizado semissupervisionado de localizações geográficas : ( Este pode ser um pouco sensível da perspectiva da privacidade. ) Alguns usuários listam onde estão localizados. Outros não fazem. Usando padrões de uso e potencialmente vocabulário, etc., você pode colocar uma região de confiança geográfica na localização de cada usuário? Intuitivamente, parece que isso seria (muito) mais preciso em termos de longitude do que latitude.
  7. Sinalização automatizada de possíveis duplicatas e perguntas altamente relacionadas : o site já possui um tipo de recurso semelhante com a barra Relacionada na margem direita. Encontrar duplicatas quase exatas e sugeri-las pode ser útil para os moderadores. Fazer isso em sites da comunidade SE parece ser novo.
  8. Previsão de rotatividade e retenção de usuários : usando os recursos do histórico de cada usuário, você pode prever a próxima vez que espera vê-los? Você pode prever a probabilidade de que eles retornem ao site, dependendo de há quanto tempo estão ausentes e os recursos de seu comportamento passado? Isso poderia ser usado, por exemplo, para tentar perceber quando os usuários correm o risco de "agitar" e envolvê-los (por exemplo, por e-mail) em um esforço para mantê-los. Uma abordagem típica enviaria um email após um período fixo de inatividade. Porém, cada usuário é muito diferente e há muitas informações sobre muitos usuários; portanto, uma abordagem mais personalizada pode ser desenvolvida.
cardeal
fonte
11
@ cardeal. Essa é uma resposta maravilhosa e, dada a disponibilidade de todos esses dados, seria um projeto fascinante.
richiemorrisroe
11
A maioria de suas sugestões parece prática e relacionada a ML para mim. De qualquer forma, alguns deles devem lidar com dados errados e incompletos. Infelizmente, não tenho profundo conhecimento de mineração e limpeza de dados nem tempo suficiente para aprendê-lo. Espero que outros membros de estatísticas fazer algum trabalho sobre essas idéias e fazer uma contribuição para a comunidade SE e impressioná-los :)
Isaac
2
@ Isaac, a lista que forneci não teve como objetivo sobrecarregar. O objetivo era simplesmente ajudar potencialmente o brainstorming. Dependendo da natureza do projeto, eu pensaria que lidar com 1-2 deles seria o máximo que se poderia esperar. Felicidades.
cardeal
11
todas as idéias são boas ou ótimas, mas eu gosto mais do "Bicluster de usuários e tópicos" ... um sistema de recomendação para perguntas potencialmente interessantes seria incrível.
Steffen
9

Também estava pensando na previsão de tags, gosto da ideia. Tenho a sensação de que isso é possível, mas talvez você precise superar muitos problemas antes de chegar ao seu conjunto de dados final. Especulo que a previsão de tags pode levar muito tempo. Além das tags incorretas, o limite máximo de 5 tags pode desempenhar um papel. Além disso, algumas tags são subcategorias de outras (por exemplo, “comparações múltiplas” podem ser vistas como uma subcategoria de “teste de significância”).

Não verifiquei se os tempos de votação estão incluídos no banco de dados para download, mas um projeto mais simples e ainda interessante poderia prever o número "final" de votos (talvez depois de cinco meses) em uma pergunta, dependendo dos votos iniciais, e o momento de aceitar uma resposta.

GaBorgulya
fonte
Pelo que me lembro, para cada usuário você tem seu voto com data + ID da pergunta.
chl
(+1) para previsão de votação. Boa ideia!
Steffen
11
Este projeto parece ótimo, especialmente se prevermos a contagem de vpvote muito em breve para o usuário. Um trabalho adicional pode ser dizer ao usuário o que está retendo sua pergunta e que aprimoramento pode torná-la popular. De qualquer forma, como sempre, a escolha do recurso é realmente uma tarefa importante e desafiadora, e o desempenho de tais previsões depende muito dessa seleção. TL; DR Eu gosto da sua ideia #
Isaac
2

Essa é uma boa pergunta. Eu também pensei que os conjuntos de dados StackExchange publicamente disponíveis seriam bons assuntos para análise. Estes são suficientemente incomuns para que também possam ser bons testes para novos métodos estatísticos. Ter uma quantidade tão grande de dados bem estruturados é incomum, pelo menos.

O cardeal sugeriu várias coisas que seriam realmente úteis para o StackExchange. Não vou me restringir a isso.

Aqui está um candidato óbvio para análise, apesar de não ter nenhum uso óbvio que me vem à mente. É um efeito notável que os usuários com alta reputação têm maior probabilidade de obter votos positivos, outras coisas sendo iguais. No entanto, esse efeito provavelmente não é trivial para modelar. Como não podemos comparar a utilidade entre os usuários com muita facilidade, uma abordagem óbvia seria assumir que as respostas dos usuários sempre foram igualmente úteis (não é verdade em geral, mas é preciso começar em algum lugar) e adicionar um termo inflacionário para explicar sua reputação crescente . Alguém poderia então (suponho) acrescentar em alguns termos que explicariam que as respostas dele melhoravam com o aumento da experiência. Talvez isso possa ser tratado por algum tipo de série temporal. Não tenho certeza de como o intervalo de dados afetaria isso. Pode ser um exercício interessante.

Vou adicionar mais exemplos se / quando pensar neles.

Alguém está ciente dos trabalhos de pesquisa estatística com base nos dados da SE? Além disso, Isaac mencionou que os dados têm erros. Alguém sabe mais alguma coisa sobre isso?

Faheem Mitha
fonte
Esta é, de fato, uma pergunta interessante e que acredito que AndyW começou a analisar em um post de um blog e a questionar há algum tempo. Acho curiosa sua afirmação de que existe um efeito "perceptível", que não estou totalmente convencido de que exista. Você então sugere uma maneira de modelar isso, mas isso geralmente não inclui tentar responder à pergunta exata que você diz que já tem uma resposta afirmativa?
cardeal
@ cardinal: Você tem um link para o post do blog? Não sei se entendi sua última frase. Tes, acho que o efeito é real e perceptível, pelo menos se o nome do usuário for Skeet, mas neste momento é apenas uma impressão anedótica, embora forte. Portanto, se você preferir, pode substituir "efeito perceptível" por hipótese. É claro que a análise tentaria confirmá-la ou negá-la, além de medir a força do efeito, se existir.
FaHememit Mitha