• Nenhum resultado encontrado

3 JUSTIFICATIVA

7.3 Treinamento dos Algoritmos

A predição da interação de proteínas é realizada neste trabalho através do emprego de técnicas e algoritmos de aprendizado de máquina. O projeto foi desenvolvido usando a linguagem de programação R, através da interface de desenvolvimento RStudio, e pacotes desenvolvidos em R visando preparar os dados para o treinamento e teste do algoritmo de aprendizado de máquina. Os pacotes em R permitiram a extração de características físico-químicas das proteínas, baseado nas sequências de aminoácidos, e normalização dos dados para o uso de algoritmo de aprendizado de máquina. A linguagem R também foi usada para a aplicação do algoritmo Random Forest, através da sua implementação no pacote Caret (KUHN, 2013).

7.3.1 Carga de dados para o RStudio

A carga inicial de dados para o RStudio consiste em colocar as informações dos pares de interações, tanto as positivas quanto as negativas, em estrutura de dados na memória do servidor para tratamento dos dados através de comandos em linguagem R. Foram gerados no servidor, usando comandos em linguagem Shell Script e SQL, dois arquivos para as interações positivas e mais dois arquivos para as interações negativas, refletindo os pares positivos e negativos. Cada arquivo contém as informações (identificador da proteína e sua respectiva sequência de aminoácidos) de um dos membros do par de interação, mantendo a ordem dos pares. Foi escrito o script em linguagem R chamado protCheckExtractFeatures.R que carrega os arquivos de interações em matrizes na memória e faz a extração das características físico- químicas das proteínas e normalização dos dados.

7.3.2 Extração de características físico-químicas

Para fazer a extração das características físico-químicas das proteínas, conforme metodologia utilizada em Eid, Elhefnawi e Heath, (2015), foi utilizado o pacote protR (XIAO et al., 2015). O protR é uma pacote em R que gera esquemas de representações numéricas de proteínas e peptídeos a partir de sequências de aminoácidos (XIAO et al., 2015; XIAO; XU; CAO, 2014). O pacote implementa o esquema de extração de características físico-químicas desenvolvido por Shen et al. (2007).

A primeira etapa consiste em checar se todas as proteínas carregadas na matriz estão no padrão contendo apenas letras que representam os 20 aminoácidos. Esta verificação é realizada usando a função protcheck do protR. As proteínas que estão fora do padrão, e as respectivas interações, são descartadas nesta esta etapa. Em seguida os aminoácidos de cada proteína são separados em 7 grupos baseados nas similaridades físico-químicas conhecidas por guiar as interações entre duas proteínas (dipolos e volume da cadeia lateral). Cada grupo de aminoácidos recebe um número conforme o Quadro 2.

Quadro 2 – Aminoácidos agrupados pelas características físico-químicas Aminoácidos Grupo {A,V,G} 1 {I,L,F,P} 2 {Y,M,T,S} 3 {H,N,Q,W} 4 {R,K} 5 {D,E} 6 {C} 7 Fonte: O autor

Nota: Grupos de aminoácidos e os respectivos rótulos de grupo durante a verificação de padrão e normalização do protR.

A sequência de aminoácidos é então mapeada para um vetor de números correspondentes aos grupos para cada aminoácido. O vetor com os números dos grupos é então separado em trincas e a frequência de cada trinca é calculada para cada proteína, formando um vetor de características de tamanho igual a 343 (73 = 343). Esta etapa permite que proteínas com sequências de tamanhos variados sejam colocadas em vetores de tamanhos iguais para possibilitar a comparação. Cada vetor de proteína tem seus elementos de características físico-químicas normalizados conforme a fórmula apresentada na Figura 9, ficando cada elemento com um valor numérico entre “0” e “1”.

Figura 9 - Fórmula de Normalização

Fonte: Eid, Elhefnawi e Heath (2015)

Nota: O valor normalizado da característica em avalição é representado por 𝑓′𝑖, onde calcula-se o valor não normalizado da característica em avaliação 𝑓𝑖 subtraído do valor mínimo do vetor e divide-se este valor pela diferença entre o valor máximo do vetor e o valor mínimo do vetor.

Com todas as proteínas normalizadas, foram montados os pares de interações. Os vetores gerados na etapa anterior foram salvos em arquivos Comma-Separated Values (CSV), que são arquivos com vários valores separados por algum caractere definido, chamado de separador. Em seguida esses arquivos CSV foram carregados

como matrizes, representando as proteínas na forma normalizada. As quatro matrizes que representam as proteínas dos pares foram unidas utilizando comando em R para alinhar as matrizes lado a lado, positivas com positivas e negativas com negativas, formando então duas matrizes com os pares de interações, uma para os positivos e outra para os negativos. Por fim, as duas matrizes foram unificadas em uma única matriz, com a matriz de pares positivos seguida da matriz de pares negativos, formando uma única matriz com todos os pares de interações, positiva e negativas, que serviu para o treinamento, teste e validação cruzada do modelo. A Figura 10 apresenta as etapas desta montagem.

Figura 10 - Montagem do arquivo de grupo controle para treinamento

Fonte: O autor

Nota: Após a normalização dos dados, são gerados quatro arquivos com os membros dos pares, sendo dois para as interações positivas e dois para as negativas. Esses arquivos são unidos lado a lado formando dois arquivos, um com os pares positivos e outro com os pares negativos. Os arquivos com os pares são então unidos um abaixo do outro, gerando o arquivo final de interações do grupo controle.

7.3.3 Divisão de grupos de treinamento e teste

Com as matrizes de interações positivas e negativas devidamente carregadas na memória do RStudio, foi realizada integração de ambas matrizes gerando uma única matriz com todas as interações positivas e negativas. O algoritmo de aprendizado de máquina aplicado aos problemas de classificação precisa de uma identificação das amostras, no caso do grupo de controle ou treinamento, para a devida identificação dos exemplos positivos e dos negativos. Para o algoritmo de

Random Forest implementado no pacote Caret, é preciso colocar o valor “0” para as amostras negativas e “1” para as amostras positivas.

Os testes realizados com a técnica de Random Forest, foi criada com a função label do R uma marcação para adicionar um “0” nas interações negativas e um “1” nas interações positivas. A etapa seguinte consiste em pegar o conjunto de dados controle, já normalizado e com as amostras previamente identificadas conforme as etapas anteriores, e dividir em grupo de treinamento e grupo de teste.

Para o uso do Random Forest foi desenvolvido o script em linguagem R lerCSVDivideDados_RF.R, que carrega a matriz com os dados controle para a memória do RStudio, adiciona o alvo que identifica as amostras como positivas ou negativas e em seguida separa um percentual dos dados em treinamento e coloca a diferença no subconjunto de teste. O percentual de amostra que vai para os conjuntos de treinamento e teste pode ser definido no código do script e as amostras são colocadas de forma randômica em cada conjunto, porém mantendo o equilíbrio entre o número de amostras positivas e negativas em cada conjunto para evitar viés no treinamento.

7.3.4 Treinamento dos algoritmos

A fase de treinamento foi realizada de acordo com as características da implementação do algoritmo. Random Forest tem como único parâmetro passado o número de validação cruzada. A treinamento ocorre, junto com o carregamento dos dados e a validação cruzada, no script lerCSVDivideDados_RF.R. Após a execução do script, um arquivo “.RData” é gerado e salvo no servidor. Este arquivo contém o modelo treinado com todos os valores carregados na memória do RStudio e que são posteriormente usados na classificação dos dados.

7.3.5 Validação cruzada

Visando fazer a validação do modelo, foi realizada a validação cruzada de 5- vezes para o treinamento do Random Forest. Foi escolhido o valor de 5 vezes para a validação por ser um valor amplamente encontrado na literatura nos estudos e aplicação de aprendizado de máquina.

A aplicação de validação cruzada no Random Forest é realizada durante o treinamento através do parâmetro “cv.fold” da implementação do Random Forest do pacote Caret, sendo esta função chamada no script lerCSVDivideDados_RF.R, logo após a divisão dos conjuntos de treinamento e teste feitas pelo mesmo script. Foram testados vários cenários para analisar a robustez do modelo gerado.

O primeiro teste usou 75% das interações no conjunto de treinamento e 25% no conjunto de teste, posteriormente a validação foi realizada utilizada o esquema de validação cruzada em 5 vezes. Para fazer comparações com os resultados obtidos, foram realizados novos testes alterando as proporções dos conjuntos de treinamento e teste, onde na segunda rodada de treinamento o conjunto de treinamento ficou com 25% das interações e o de teste com 75%, a terceira com 5% para treinamento e 95% para teste e a última rodada com 75% em treinamento e 25% em teste, como na primeira rodada, mas com uma validação cruzada de 10 vezes.

Documentos relacionados