Meutilização Criativa do RapidMiner
Um dos eventos mais divertidos da conferência RapidMiner Wisdom é a competição ao vivo de design do processo analítico preditivo “Quem Quer Ser um Mineiro de Dados? Nesta competição, os participantes devem desenhar os processos RapidMiner para um determinado objectivo em poucos minutos. As tarefas estão relacionadas com a análise preditiva e análise de dados em geral, mas são bastante incomuns. Na verdade, a maioria dos desafios pede coisas que o RapidMiner nunca deveria ter feito.
Durante o RapidMiner Wisdom 2016 em Nova Iorque, tivemos novamente duas tarefas preparadas para o público. Três corajosos concorrentes lutaram uns contra os outros e o relógio para encontrar a solução certa (ou pelo menos algo que esteja suficientemente próximo). A primeira tarefa este ano foi:
Criar a letra completa de “99 Bottles of Beer on the Wall”
De acordo com a Wikipedia, “99 Bottles of Beer é uma canção popular anônima dos Estados Unidos que data de meados do século 20. É uma canção tradicional tanto nos Estados Unidos como no Canadá. É popular para cantar em longas viagens, pois tem um formato muito repetitivo que é fácil de memorizar, e pode levar muito tempo para cantar”
Bem, sim. Alguns dizem que há inúmeros problemas com esta canção, mas este não é – embora seja uma leitura engraçada – o tema deste post. (A propósito, a canção também tem aparecido muitas vezes na cultura popular: talvez mais notavelmente, pelo menos para alguns, no jogo Monkey Island.)
Anyway, aqui vai a canção:
99 garrafas de cerveja na parede, 99 garrafas de cerveja.
Encolhe uma e passa-a por aí, 98 garrafas de cerveja na parede.
98 garrafas de cerveja na parede, 98 garrafas de cerveja.
Encolhe uma e passe-a, 97 garrafas de cerveja na parede.
97 garrafas de cerveja na parede, 97 garrafas de cerveja.
Encolhe uma e passe-a, 96 garrafas de cerveja na parede.
…
1 garrafa de cerveja na parede, 1 garrafa de cerveja.
Encolhe uma e passe-a, 0 garrafas de cerveja na parede.
A letra completa pode ser encontrada aqui, mas acho que você tem a ideia.
Então como podemos resolver a tarefa acima com o RapidMiner?
>
Vamos começar com uma imagem da solução primeiro:
Iniciamos com o operador “Gerar Dados” e geramos um conjunto de dados aleatórios com apenas 1 coluna e 100 exemplos (faça as configurações apropriadas nos parâmetros do operador). Esta talvez não seja a forma mais elegante, mas uma das formas mais fáceis no RapidMiner para obter um conjunto de dados com uma estrutura e tamanho específicos. Como próximo passo, precisamos agora de números de 1 a 100 numa coluna extra. Mais uma vez, existem várias maneiras de conseguir isto, mas a mais simples é provavelmente usar o operador “Generate ID”, que está a fazer exactamente isso. Agora podemos usar “Select Attributes” e remover as colunas que foram originalmente geradas por “Generate Data”, ou seja, só mantemos a nossa nova coluna “id”. O resultado é um conjunto de dados com 100 linhas e os números de 1 a 100 numa coluna chamada “id”.
Agora toda a lógica acontece no próximo operador: “Gerar Atributos”. O principal problema que precisa ser resolvido é como transformar a sequência de números de 1 a 100 em uma sequência de 99 a 0? Bem, isso é fácil: podemos simplesmente gerar um novo valor subtraindo o “id” atual em cada linha de 100. Ao mesmo tempo, adicionamos o resto da letra em torno desses números. Aqui está como você precisa definir os parâmetros de “Gerar Atributos” para conseguir isso:
Agora você pode até concatenar todas essas novas colunas em uma única, se quiser. Eu deixo para você descobrir como. O resultado final depois de executar o processo então se parece com a seguinte captura de tela (apenas mostrando o início):
Se você mesmo executar o processo, verifique também a última linha. Eu admito que nós poderíamos lidar com isso um pouco melhor, já que a letra criada termina: “0 garrafas de cerveja na parede, 0 garrafas de cerveja”. Pegue uma e passe-a por aí. -1 garrafa de cerveja na parede.” Bem, não há nada de errado com -1 garrafas de cerveja para matemáticos e físicos, mas alguns sistemas informáticos podem não gostar de números negativos de objectos.
Usar o RapidMiner para tarefas como esta é, claro, um pouco, bem, estranho. Mas também mostra como é flexível e poderosa a abordagem visual do RapidMiner na realidade. Outros criaram soluções em praticamente todas as linguagens de programação da Terra, umas mais curtas e outras mais longas do que outras. Mas eu preferiria sempre a solução RapidMiner ao código da maioria delas.
Below é o XML de todo o processo. Pode guardá-lo num ficheiro arbitrário no seu sistema e usar “File -> Import Process…” para o colocar no RapidMiner.
Diverta-se a experimentar isto!