• Roger Sampaio

O Lado Diabólico da Inteligência Artificial

Atualizado: 29 de abr.

Fala meus guerreiros. Espero que todos estejam bem. Comentamos em nossos artigos e vemos em noticiários, jornais sempre os prós da Inteligência Artificial, o quão poderosa é para auxiliar na tomada de decisões em praticamente todos os tipos de negócios (medicina, bancos, advocacia, educação, varejo entre outros). Assim como na vida em que nem tudo são flores, a Inteligência Artificial tem um lado negro, obscuro caso não seja utilizada de forma adequada trazendo mais malefícios que benefícios. Apertem os cintos porque vamos decolar nessa viajem.

  1. Vamos 'Brincar' de Médicos Oncologistas...

gif

Nós, cientistas de dados, fomos contratos pelo hospital Santa Maria para auxiliar a área de oncologista, responsável pelo diagnóstico, prevenção e tratamento de diversos tipos de câncer. O especialista pediu ajuda para construção de um modelo preditivo que preveja se a paciente terá câncer de mama ou não se baseando em uma série de características de núcleos celulares em imagens como, por exemplo, raio, textura, concavidade, área entre outras. O dataset tem a amostra de 569 pacientes e trinta características de cada um. Vamos 'codar', meu guerreiro utilizando o recurso Machine Learning do Azure.

Ao abrir o portal do Azure, clique em Criar um Recurso conforme é mostrado abaixo. Caso você tenha uma conta ativa do Azure, siga as recomendações no site para criar, inclusive você pode criar gratuitamente por um período de um mês.

Pesquise pelo recurso chamado Machine Learning ou Aprendizado de Máquina e pressione Enter. O ícone do recurso é de um frasco de vidro azul de laboratório. Esse recurso possibilita a criação de notebooks incluindo modelos preditivos. Podemos criar visualmente o experimento (sem utilizar um única linha de código) ou então programando. Veja:

Após clicar no botão criar devemos preencher os seguintes campos:

  1. Assinatura. Mantenha o que está ativa podendo ser gratuita(caso você tenha criado a conta do Azure para testar gratuitamente) ou pago pelo uso.

  2. Grupo de recursos. Crie um grupo chamado inteligenciaartificialexperimentos.

  3. Nome da workspace. Crie uma chamada workspaceia.

  4. Região. Podemos deixar padrão Esta US 2.

  5. Conta de amarzenamento,Cofre de chave, Application Insights. Deixa a que está selecionada.

  6. Registro de contêiner. Deixe nenhum.

Depois clique em Examinar + criar.

Agora pressione Criar. Isso poderá levar vários minutos.

Após a implantação estiver completa, clique em ir para o recurso.

Agora clique em iniciar o estúdio.

Clique em Create new e selecione notebook, escolhe um nome como, por exemplo, experimenta a e então create.

Com o recurso Machine Learning do Azure, criamos nosso notebook e um modelo de classificação. Cole o código abaixo no notebook criado e observe cada etapa.

# Importações de pacotes
import pandas as pd
from sklearn import tree
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score
from sklearn import metrics
import sklearn.datasets as datasets
from sklearn.linear_model import LogisticRegression

# Análise Exploratória
# Obtendo os dados da fonte
pacientes_obj = datasets.load_breast_cancer()
# Transformando em um dataframe o objeto pacientes e visualizando alguns registros
pacientes = pd.DataFrame(columns = pacientes_obj.feature_names, data = pacientes_obj.data)
# Vamos trabalhar apenas com 100 pacientes e 5 variáveis
pacientes = pacientes.iloc[0:100,0:5]
pacientes.head(5)

Resultado:


print('Quantidade de registros: %d e recursos: %d' % (pacientes.shape[0],pacientes.shape[1]))

Quantidade de registros: 100 e recursos: 5

# Visualizando os tipos de dados
pacientes.dtypes

Resultado:

mean radius        float64
mean texture       float64
mean perimeter     float64
mean area          float64
mean smoothness    float64
dtype: object
# MODELAGEM
# Divisão da variável PREDITORA e TARGET
x = pacientes.iloc[:,:]
y = pd.DataFrame(pacientes_obj.target).iloc[0:100,:]
# Divisão entre os dados de treino e teste
x_treino, x_teste, y_treino, y_teste = train_test_split(x, y, test_size=0.30, random_state=42)
# Definição do Modelo e Treinamento
modelo1 = LogisticRegression()
modelo1 = modelo1.fit(x_treino, y_treino)
# Avaliando Resultados
# Usando os dados de teste para avaliar o modelo
y_true = y_teste
y_pred = modelo1.predict(x_teste)
target_names = pacientes_obj.target_names
# Métricas
print(classification_report(y_true, y_pred, target_names=target_names))

E finalmente chegamos nas métricas:



Código do notebook aqui.

preverocorrenciacancer
.ipynb
Download IPYNB • 12KB

2. A Grande Verdade 1: Não Existem Modelos com 100% de Acertos


Note que nenhuma métricas está 100% e caso estivessem o modelo estaria errado. Ooops, como assim? Quando as métricas ficam 100% ou muito próximas disso significa que o modelo está sofrendo de overfitting, ou seja, aprendendo demais. Mas isso não é um bom sinal, professor? Não, ele está praticamente decorando os resultados na base de treinamento, não generalizando, o que implica ter resultados muito ruins quando vier dados novos do mundo real, que ele ainda não conhece. Modelos preditivos por mais poderosos e sofisticados que sejam dificilmente atingem 100% de acerto e quando atingem, indicam algo errado Resumo da história: os modelos comentem erros e nós, cientistas, esperamos que seja a menor taxa possível. Retomando ao nosso problema, implica dizer que o modelo dará diagnósticos errados em alguns momentos: predizer que alguém está com câncer sendo que não está (FP) e mais agravante ainda, predizer que alguém não está com câncer quando na verdade tem (FN). FP significa falsos positivos, FN falsos negativos. Na base de teste trabalhamos apenas com 30 pacientes. Vamos detalhar eles no nosso modelo:

Relembrando a matriz de confusão.


Tanto o FP como FN deram 2. Ao todo dos 30 pacientes, quatro vão ter o diagnóstico errado. Esse erro na área médica pode ser fatal inclusive os FN. A equipe médica juntamente com todos que forem utilizar nossa aplicação de Inteligência Artificial devem ter consciência e conhecimento da taxa de erros esperada pelo modelo. A Inteligência deve entrar como auxiliar, jamais substituindo um especialista na área, porque há riscos.


3. A Grande Verdade 2: a IA não é 100% confiável para tomar decisões de cunho absoluto.

Os modelos preditivos trabalham com probabilidades, que são eventos que podem acontecer ou não. Ao contrário que muitas pessoas pensam, ela não é oráculo para dizer com 100% de certeza que algo vai acontecer. O padrão que se repete no passado representado no histórico de dados, não necessariamente acontecerá no futuro. Outro fator é que nenhum modelo de aprendizado de máquina tem uma taxa de acertos de 100%, ou seja, ele comete erros por menores que sejam. Se o modelo tem, por exemplo, a métrica de 70% de acerto para predizer alguém com câncer, isso significa que de cada cem pacientes, ele acerta 70 e erra 30. Por esses motivos que cabe sempre uma avaliação humana quanto ao resultado do modelo. Retomando ao hospital Santa Marta, o Oncologista poderá analisar melhor os pacientes em que o modelo não previu com câncer devido ao FN (Falsos Negativos).

No livro Weapons of Math Destruction (“armas de destruição matemática") da pesquisadora norte-americana Cathy O’Neil, detalha de como o Big Data incluindo os métodos matemáticos para analisá-lo pode ser nocivo. Segundo uma análise do blog confeariado, um exemplo é nas aplicações destinadas ao Poder Judiciário: algoritmos que auxiliam no policiamento contribuem para que três vezes mais negros e hispânicos sejam investigados do que caucasianos, Mais: as penas para essas minorias chegam a ser duas vezes maiores do que para os caucasianos, para crimes equivalentes. Nesse caso, mais que nos outros, o Big Data contribui para uma piora na qualidade de vida de parcelas significativas da população.

gif


4. A Grande Verdade 3: Humanos Influenciam Diretamente os Resultados dos Modelos.

Os modelos de aprendizado de máquina são construídos por seres humanos especialistas, que possuem conhecimento o suficiente para alterar os resultados e fazer que o algoritmo fique tendencioso. Por exemplo, se queremos que o modelo anterior identifique propositalmente uma presença maior de câncer em pacientes que tenham entre 35-60 anos, podemos atribuir um peso maior para essa feature em detrimento das demais, bastante modificar apenas algumas linhas de código. Outra técnica é alterar a amostra em que está sendo utilizando para treinar o algoritmo. Suponha que, por exemplo, queríamos intencionar o algoritmo a detectar mais pacientes com câncer que morassem nos bairros mais nobres da cidade para o hospital faturar mais com o diagnóstico. Na amostra colocaríamos uma quantidade maior dos pacientes de bairros nobres que pobres, causando desbalanceamento nos dados e construindo um algoritmo tendencioso. Seja para mal ou bem, os donos dos modelos podem influenciá-lo diretamente para objetivos diversos.

gif


5. E agora?

A IA embora poderosa e vastas as possibilidades de aplicações, pode ser muito perigosa caso não ser utilizada de forma correta. Nenhum modelo de aprendizado de máquina incluindo os mais poderosos como, por exemplos, Redes Neurais Profundas (Deep Learning), é 100%, ou seja, cometerá erros que devem ser analisados em conjuntos com outros especialistas para a tomada de decisões importantes nos negócios. FN, por exemplo, em diagnósticos da área médica podem ser fatais. Os seres humanos influenciam diretamente os modelos e por esse motivo quem for utilizar alguma aplicação da IA, deve ter absoluta certeza e consciência dos princípios éticos dos donos dos modelos. Beijos no coração. Até mais.

95 visualizações0 comentário