Usando R no Azure Machine Learning – AzureML

By | 01/12/2015

Bom dia pessoal, hoje vamos continuar falando de aprendizagem de máquina. O assunto de hoje é como utilizar a linguagem R no AzureML.

R de acordo com a Wikipedia é uma linguagem de programação e ambiente de software/desenvolvimento para computação estatística e grafica suportada pela R Foundation for Statistical Computing.

A linguagem R é bastante adotada por cientistas/mineradores de dados para a criação de softwares estatísticos, modelos de mineração e aprendizagem de máquina. Isso é devido ao fato de ser open source e de possuir diversas bibliotecas ricas para estes tópicos, bem como uma comunidade bastante ativa. A linguagem R atualmente é bastante popular.

A Microsoft demonstra bastante interesse na linguagem R mostrado pela:

O foco de hoje é demonstrar o uso do módulo de integração com R no AzureML.

Existem dois módulos de R atualmente na plataforma. Create R Model e Execute R Script. Este artigo cobre os aspectos do módulo de execução de scripts R (Execute R Script).

Vamos inicialmente elencar algumas das possibilidades de utilização do R dentro da plataforma, e na sequência vamos mostrar como cada cenário pode ser implementado.

Cenário #1: É possível utilizar um script em R codificado diretamente no componente.

Cenário #2: É possível utilizar um script codificado fora da plataforma (no RStudio ou Revolution R por exemplo).

Cenário #3: É possível usar uma biblioteca externa (uma não disponível dentre as várias já disponíveis) através do upload da mesma.

Cenário #4: É possível utilizar um conjunto de dados em um arquivo .RData dentro da plataforma ou interagir com datasets externos.

Cenário #5: É possível criar o modelo de Machine Learning inteiramente dentro do R se desejar, por exemplo, nos casos onde não há o algoritmo desejado disponível ainda (confira aqui um infografico com todos os algoritmos, existem VÁRIOS).

Cenário #6: Visualizar todas as bibliotecas do R instaladas no AzureML.

O módulo “Execute R Script”

Este módulo possui três inputs e dois outputs.

image

image

Sendo datasets os dois primeiros inputs, o terceiro é um script bundle (zip) – veremos mais sobre nos cenários seguintes.

A primeira saída é um Dataset (tradicional do AML), e o segundo output é um dataset também, mas é do R, chamada de RDevice (imagine que seu script em R gerou uma imagem, é possível consultar esta imagem através deste output, entre outros).

Cenário #1 – É possível utilizar um script em R codificado diretamente no componente.

Ao selecionar o módulo, na janela de propriedades há uma propriedade chamada R Script e um script de exemplo. Este é o código que será executado quando o módulo for executado.

image

Este código pode ser qualquer código em R, recomendamos que o código seja testado em um ambiente menor/controlado anteriormente (RStudio, RRO/RRE).

Cenário #2 – É possível utilizar um script codificado fora da plataforma (no RStudio ou Revolution R por exemplo).

Nem todo código a ser utilizado na plataforma necessita ser codificado nesta janela. Ele pode ser oriundo de um script já codificado.

Para utilizar este script (possivelmente mais de um), você deve primeiramente compactá-lo em um arquivo .zip e fazer o upload como se fosse um upload de um Dataset regular (csv, tsv, etc).

Neste exemplo vamos utilizar o seguinte script em R:

descreveDataset <- function(x) { summary(x) }

Basicamente será criado uma função que receberá um data frame de entrada e executará um summary deste data frame. É claro que é possível codificar isso no componente diretamente (como visto no cenário #1), mas a idéia é a reutilização de código já codificado.

Obs: mtcars é um dataframe built-in do R. É um conjunto pequeno de dados sobre carros da década de 70, e bastante utilizado em demonstrações da liguagem R. 
Mais sobre ele: http://www.inside-r.org/r-doc/datasets/mtcars.

No RStudio podemos observar seu uso:

image

1) Crie um arquivo chamado meuScriptR.R com a linha de código que mostramos acima.

image

2) Compacte o arquivo (zip) e nomeie de meuScriptR.zip.

3) Faça upload do arquivo zip para o AzureML

image

4) Adicione um componente Execute R Script

5) Localize nos datasets o “meuScriptR.zip” (ou o nome que deu) e conecte no terceio input do componente de R. Ficará algo como na imagem abaixo:

image

6) Substitua o código do Execute R Script pelo código abaixo (para fazer chamada na função criada e armazenada no script).

Todos os scripts são descompactados em um diretório chamado “src”.  O Comando source serve para criar a referência com o arquivo desejado (poderia ser mais de um e assim ter vários “sources”).

source(“src/meuScriptR.R”)
print(descreveDataset(mtcars))

image

7) Execute o experimento.

Após a execução é possível (nas propriedades do módulo de R) ir em “View output log”, que mostra o resultado da aplicação da função.

image

 

Cenário #3 – É possível usar uma biblioteca externa (uma não disponível dentre as várias já disponíveis) através do upload da mesma.

Para realizar esta tarefa, os passos são muito similares ao cenário #2. É possível fazer upload do zip com a biblioteca e utilizar ela nos seus experimentos. Lembrem-se que muitas bibliotecas já se encontram disponíveis no R do Azure (mais sobre isso na sequência).

O ponto importante aqui é que será necessária a instalação da biblioteca. Neste exemplo estou mostrando a ggdendro. Ficaria algo como o código abaixo:

install.packages(“src/ggdendro_0.1-14.zip“, lib = “.”, repos = NULL, verbose = TRUE);
library(“ggdendro”, lib.loc = “.”, logical.return = TRUE, verbose = TRUE);
library(ggdendro)

image

Cenário #4 – É possível utilizar um conjunto de dados em um arquivo .RData dentro da plataforma ou interagir com datasets externos.

Para execução deste cenário, vamos necessitar de um arquivo .RData, e para utilizá-lo no AzureML precisaremos fazer o upload dele assim como fizemos no cenário #2 (em um arquivo zip).

Dentro do Execute R Package devemos utilizar a função load para recuperar o conteúdo do .rdata.

É possível também utilizar este dataset dentro do próprio AzureML, sem necessariamente ser no script R.

Para interagir com datasets externos (ler os inputs de entrada) e gerar um dataset que possa ser lido a partir do output de dataset (primeiro output do componente) existem algumas funções auxiliares: maml.mapInputPort e maml.mapOutputPort (MAML é um acrônimo para Microsoft Azure Machine Learning).

Então, para ler o arquivo .rdata no arquivo que fizemos o upload e depois disponibilizar através do output do componente, devemos executar as seguintes instruções:

load(“src/Boston.rdata”)
maml.mapOutputPort(“Boston”);

image

image

Para ler de um dataset e utilizar ele dentro do script em R, devemos utilizar um script semelhante ao mostrado abaixo. O parâmetro é a referencia a qual dos dois primeiros inputs se deseja pegar o dataset

dataset1 <- maml.mapInputPort(1)
dataset2 <- maml.mapInputPort(2)

Após a execução destes comandos, o dataset passa a ser reconhecido como um data frame dentro do script R.

Cenário #5 – É possível criar o modelo de Machine Learning inteiramente dentro do R se desejar.

Dentro do R o céu é o limite. :)

É possível utilizar o R da mesma forma que se usaria fora do AzureML. A maior vantagem desta abordagem é a a possibilidade de utilizar bibliotecas e modelos que possam não estar disponíveis no AML ainda.

Abaixo podemos ver um exemplo simples. Com o que vimos no cenário #4, podemos integrar dados externos (maml.mapInputPort) dentro do R, e depois exportá-los para serem expostos para outros módulos (por exemplo o Web Service output).

image

Cenário #6 – Visualizar todas as bibliotecas do R instaladas no AzureML.

Antes de baixar bibliotecas do CRAN (https://cran.r-project.org/) e instalá-las, vale a pena verificar se as mesmas já não estão disponíveis na plataforma.

Para tal basta executar o seguinte script em R (usando o módulo de execução de R):

result <- data.frame(installed.packages())
maml.mapOutputPort(“result”)

Bom pessoal, por hoje era isto. spero que contribua em seus estudos sobre aprendizagem de máquina na plataforma Microsoft.

Um guia interessante para quem quiser mais informações é o seguinte site: https://azure.microsoft.com/pt-br/documentation/articles/machine-learning-r-quickstart/

Até a próxima!

2 thoughts on “Usando R no Azure Machine Learning – AzureML

  1. Lunna

    Oi… o Azure não le de jeito nenhum o arquivo como construído no cenário 2… está certo de que o código simplesmente com a função basta?

    Reply
    1. zavaschi Post author

      Oi Lunna, sim, basta ter a função que funciona.
      Como está fazendo a chamada no Execute R script? Consegue postar aqui?

      []s

      Reply

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *