1
resposta

Avaliador de recomendador retorna avaliações diferentes a cada execução

        File arquivo = new File("dados.csv");
        DataModel modeloDeDados = new FileDataModel(arquivo);

        RecommenderBuilder construtorDeRecomendador = new RecomendadorDeProdutosBuilder();
        DataModelBuilder d = new ModeloDeDadosBuilder();

        RecommenderEvaluator avaliadorDeRecomendador = new AverageAbsoluteDifferenceRecommenderEvaluator();
        double taxaDeErro = avaliadorDeRecomendador.evaluate(construtorDeRecomendador, d, modeloDeDados, 
                0.9, 1.0);
        System.out.println("[A tava de erro do seu recomendador é " + taxaDeErro + "]");

A cada execução o avaliador retorna uma taxa de erro diferente para o meu recomendador, existe algum motivo ou foi algum erro meu?

1 resposta

Oii Caio, tudo bem?

Desculpa a demora para te responder. Vamos lá!

Acredito que seu código está tendo essa variação por conta que não existe uma SEED definida. Na aula 3 do curso de Machine Learning com Java, o Guilherme explica sobre a aleatoriedade que o Mahout faz quando não temos esse valor da SEED definido, para isso você precisa inserir no seu código a linha de comando abaixo:

RandomUtils.useTestSeed();

No seu código, ficaria assim:

    RandomUtils.useTestSeed();

    File arquivo = new File("dados.csv");
        DataModel modeloDeDados = new FileDataModel(arquivo);

        RecommenderBuilder construtorDeRecomendador = new RecomendadorDeProdutosBuilder();
        DataModelBuilder d = new ModeloDeDadosBuilder();

        RecommenderEvaluator avaliadorDeRecomendador = new AverageAbsoluteDifferenceRecommenderEvaluator();
        double taxaDeErro = avaliadorDeRecomendador.evaluate(construtorDeRecomendador, d, modeloDeDados, 
                0.9, 1.0);
        System.out.println("[A tava de erro do seu recomendador é " + taxaDeErro + "]");

Você consegue testar e me contar se deu certo? :)

Bons estudos^^