Como dividir trem / teste em sistemas de recomendação

8

Estou trabalhando com o conjunto de dados MovieLens10M, prevendo as classificações dos usuários. Se eu quiser avaliar meu algoritmo de maneira justa, como devo dividir meu treinamento versus dados de teste?

Por padrão, acredito que os dados são divididos em conjuntos de treinamentos v. Test, nos quais 'test' contém filmes anteriormente não vistos no conjunto de treinamentos. Se meu modelo exige que cada filme tenha sido visto pelo menos uma vez no conjunto de treinamento, como devo dividir meus dados? Devo pegar todas as classificações de N de todos os usuários, com exceção de N, e avaliar meu desempenho nas classificações NxUser_num realizadas?

jamesmf
fonte

Respostas:

2

Leave-one-outa validação cruzada é provavelmente a maneira mais direta de resolver isso. Se você estiver usando um modelo que exige muito tempo para treinar, deixar n% de fora pode ser mais apropriado.

O método envolve a eliminação de uma classificação conhecida e a tentativa de prever. Se você deseja remover n por cento das classificações, escolha-as aleatoriamente, em vez de escolher um número específico das classificações de todos os usuários. E mantenha n bem pequeno - da ordem de 10% ou menos.

Aqui está um bom tratamento dos métodos de validação cruzada para sistemas de recomendação . Geralmente:

O holdout é um método que divide um conjunto de dados em duas partes: um conjunto de treinamento e um conjunto de testes. Esses conjuntos podem ter proporções diferentes. Na configuração dos sistemas de recomendação, o particionamento é realizado selecionando aleatoriamente algumas classificações de todos (ou alguns) dos usuários. As classificações selecionadas constituem o conjunto de testes, enquanto as demais são o conjunto de treinamento. Esse método também é chamado de deixar sair. Em [17], Sarwar et al. divida o conjunto de dados em 80% de treinamento e 20% de dados de teste. Em [18] várias razões entre treinamento e teste (de 0,2 a 0,95 com um incremento de 0,05) são escolhidas e, para cada uma, o experimento é repetido dez vezes com diferentes conjuntos de treinamento e teste e, finalmente, a média dos resultados. Em [13], o conjunto de testes é realizado por 10% dos usuários: 5 classificações para cada usuário no conjunto de testes são retidas.

Deixar de fora é um método obtido pela configuração de k = 1 no método de deixar de fora. Dado um usuário ativo, retemos um item classificado por sua vez. O algoritmo de aprendizado é treinado nos dados restantes. O elemento retido é usado para avaliar a correção da previsão e a média dos resultados de todas as avaliações para calcular a estimativa final da qualidade. Este método tem algumas desvantagens, como o sobreajuste e a alta complexidade computacional. Essa técnica é adequada para avaliar a qualidade recomendada do modelo para usuários que já estão registrados como membros do sistema. Karypis et al. [10] adotaram uma versão trivial do sistema de criação de testes, selecionando aleatoriamente uma das entradas diferentes de zero para cada usuário e as restantes para treinamento. Em [7], Breese et al.

Uma variante simples do método de validação é a validação cruzada m-fold. Consiste em dividir o conjunto de dados em m dobras independentes (para que as dobras não se sobreponham). Por sua vez, cada dobra é usada exatamente uma vez como conjunto de teste e as dobras restantes são usadas para treinar o modelo. De acordo com [20] e [11], o número sugerido de dobras é 10. Essa técnica é adequada para avaliar a capacidade de recomendação do modelo quando novos usuários (ou seja, usuários ainda não pertencem ao modelo) ingressam no sistema. Ao escolher um número razoável de dobras, podemos calcular a média, a variação e o intervalo de confiança.

Espero que isto ajude!

AN6U5
fonte