segunda-feira, 9 de janeiro de 2023

O Chat GPT na Promotoria de Justiça

O que é o ChatGPT?

O Chat GPT é uma solução de inteligência artificial criada para a conversação em forma de chat.

O algoritmo possui uma ampla gama de tarefas de processamento de linguagem natural e usa técnicas de aprendizagem de máquina por reforço com feedback humano. Em outras palavras, quanto mais interage com pessoas, mais esperta fica a solução.

De acordo com a OpenAI, que desenvolve o produto e o disponibiliza gratuitamente (ainda) para teste, “o formato de diálogo permite que o ChatGPT responda a perguntas complementares (follow-up questions), admita seus erros, conteste premissas incorretas e rejeite solicitações inadequadas”. A IA pode ser testada, após cadastro, em <https://chat.openai.com/chat>.


Polêmicas

O que impressiona no ChatGPT é que ele pode conversar sobre quase tudo e pode aprofundar o assunto conforme o desejo do usuário. Os testes mostram que a IA pode se mostrar criativa, compor música e poemas, escrever textos acadêmicos, fundamentar teses e escrever software. 

Por isso, advogados, jornalistas e programadores já temem que essa IA seja capaz de substituí-los em alguns de seus postos de trabalho.


Testando ...

Testei a IA em duas tarefas relacionadas à Promotoria de Justiça.

Na mais óbvia, usei o chat para que ela desse fundamentos para rebater um argumento da Defesa lançado em um processo judicial.

Eis o print de tela relativo à primeira tarefa (e, abaixo, a reprodução do diálogo):



Na tarefa menos trivial, solicitei à solução que criasse um programa em Python para automatizar uma tarefa (real) do meu trabalho como Promotor de Justiça. Pedi que convertesse um lote de arquivos "docx" existentes em uma pasta em PDFs. Dada a maior complexidade desse tópico, gravei um vídeo para documentá-lo e o disponibilizei no YouTube.

O código gerado pelo ChatGPT pode ser encontrado no meu GitHub. Funcionou perfeitamente.


Conclusão

O Chat GPT é uma solução que surpreende pela acurácia e fluidez de suas respostas e tem potencial para otimizar rotinas de trabalho.

quarta-feira, 4 de janeiro de 2023

Reconhecimento de padrões e classificação com o uso do dataset BreastCancer do pacote mlbench (da linguagem R)

Introdução

O dataset BreastCancer, disponível no pacote "mlbench", contém 699 observações de 11 variáveis, sendo uma delas ("Class") a variável dependente (ou alvo), que rotula a lesão como sendo um câncer ou não ("benign" ou "malignant").

As características do dataframe puderam ser conferidas com os comandos str(BreastCancer), summary(BreastCancer) e ?BreastCancer.


As variáveis independentes foram convertidas em numéricas gravando-se o dataset em arquivo "csv" e realizando-se sua leitura com o comando read.table("bc.csv", header=TRUE, sep=",", stringsAsFactors=FALSE).

As bibliotecas utilizadas na análise foram sendo instaladas e chamadas conforme a necessidade e estão indicadas no código, que pode ser conferido no meu GitHub.


Objetivo: reconhecimento de padrões

Realizar análises de reconhecimento de padrões no conjunto BreastCancer.


Desenvolvimento

Para o reconhecimento de padrões no conjunto de dados foi preciso supor que a variável “Class” não era conhecida. Um novo dataframe foi criado após a exclusão da coluna-alvo.

Usamos a técnica do PCA (Principal Component Analysis) para a redução do número de variáveis do conjunto de dados, de forma a poder plotar as observações, na tentativa de constatar visualmente os padrões.

Foi visto que os dois componentes principais explicavam 74,17% das variâncias, sendo suficientes para a análise que se pretendia fazer.

Aplicada a técnica, foram plotados os “scores” e gerado o “biplot”, sendo possível delinear os agrupamentos.

Na sequência, usando o “autoplot” da biblioteca “ggfortify”, agora com a variável “Class” para a coloração das observações, foi possível relacionar os grupos delineados às lesões benignas (em vermelho) e malignas (em azul).

Por fim, o gráfico gerado permitiu conhecer a contribuição de cada variável para a geração dos componentes principais, havendo um destaque visual para as mitoses, com menor correlação com as demais variáveis.



Objetivo: classificação

Realizar análises de classificação com o mesmo conjunto de dados.


Desenvolvimento

Para a tarefa de classificação, a variável dependente “Class” foi modificada para o tipo “factor”, que informa ao “R” tratar-se de uma variável categórica.

O dataset foi dividido entre treino e teste, na proporção de 80 e 20%, respectivamente. Essa providência é necessária no campo da aprendizagem de máquina supervisionada para a medição da performance do modelo.

Foram usados os algoritmos de árvore de classificação, floresta aleatória com o “mtry” (quantidade de variáveis sorteadas por árvore) de valor 4 e Naive Bayes, com acurácias medidas de, respectivamente, 0,9489, 0,9635 e 0,9562, constatadas a partir da matriz de confusão.



Conclusão

Os algoritmos disponíveis no pacote “R” permitiram o emprego da técnica do PCA para redução da dimensionalidade do dataset analisado e a plotagem bidimensional das observações favoreceu a identificação visual de padrões no conjunto de dados.

Além disso, o algoritmo de floresta aleatória mostrou ser o mais performático para a tarefa de classificação do conjunto de dados analisado.


Referências:

CRAN.R.PROJECT.ORG. Plotting PCA (Principal Component Analysis). Disponível em: https://cran.r-project.org/web/packages/ggfortify/vignettes/plot_pca.html. Acesso em: 3 Jan. 2023.

MONIZ, Paulo. Uma abordagem prática para avaliar o desempenho de algoritmos para um problema de classificação binária em um projeto de machine learning. Disponível em: https://rpubs.com/PMONIZ80/506010. Acesso em: 3 Jan. 2023.

MORETTIN, Pedro Alberto; SINGER, Júlio da Morra. Estatística e ciência de dados, 1ª. ed., Rio de Janeiro: LTC, 2022. 

PÉREZ, Fernando L. MLExemplo09: regressão logística. Disponível em: http://leg.ufpr.br/~lucambio/CE225/20211S/MLGExemplo09.html. Acesso em: 3 Jan. 2023.

SAMINATHAN. Breast Cancer Classification Problem Analysis. 29 mar. 2018. Disponível em: https://rstudio-pubs-static.s3.amazonaws.com/374852_57bcde1cc74f4950ab66a6a6d58781a5.html. Acesso em: 3 Jan. 2023.


Erro de SSL na instalação de pacotes do Anaconda

O OpenSSL é uma biblioteca escrita em C, de código aberto, dos protocolos SSL e TSL, que implementam criptografia. Inclui os módulos libssl (que implementa o protocolo TLS), libcrypto (biblioteca criptográfica de propósito geral) e openlss (ferramenta de linha de comando considerada o “canivete suíço” para tarefas bibliográficas).

É comum aos usuários do Anaconda enfrentarem problemas de SSL na instalação de alguns pacotes, observando-se a seguinte mensagem de erro:

 


A solução para o problema consiste em copiar os arquivos libcrypto-1_1-x64.* e libssl-1_1-x64.*, já presentes no S.O. ou no diretório Library\bin do Anaconda, para a pasta DLL do Anaconda, conforme a figura abaixo.



quarta-feira, 21 de dezembro de 2022

Python, R e Octave no Jupyter Notebook (rodando no Mac com chip M1)

 1) Crie um ambiente virtual com o gerenciador conda (no caso, optei por especificar a versão do Python que pretendo usar no ambiente):

conda create --name py39 python=3.9


2) Em seguida, ative o ambiente criado:

conda activate py39


3) Instale o Jupyter no ambiente criado:

conda install jupyter


4) Instale o kernel do R

conda install -c conda-forge r-base

Obs.:Após a instalação, você já poderá rodar o R a partir do terminal. Basta digitar “R”. 



5) No terminal, rodando R, instale o IRkernel

install.packages('IRkernel')

IRkernel::installspec()


6) Saia do R, com q() e enter.


7) Instale o kernel do Octave

brew install octave



8) Abra o Jupyter Notebook. Os kernels do Python, R e do Octave estarão disponíveis.




sexta-feira, 18 de novembro de 2022

Boxplot (diagrama de caixa)

O boxplot – ou diagrama de caixa – é uma ferramenta gráfica da estatística descritiva que facilita a análise de variáveis quantitativas. Por ele se obtém informações sobre posição, dispersão, assimetria e valores extremos ou atípicos (outliers).

A construção do boxplot utiliza cinco medidas estatísticas: mínimo, máximo, mediana, primeiro quartil e terceiro quartil.

A caixa é delimitada pelos primeiro e terceiro quartis e é cortada pela mediana. As linhas são conhecidas como caudas da distribuição e indicam os limites superior e inferior da variável, isto é,  maior e menor valores desconsiderados os outliers.

Dado um conjunto ordenado de dados, o 1º quartil (ou quartil inferior) representa o valor observado aos 25% dos valores; o 2º quartil é a mediana (50% das observações são menores e 50% são maiores do que a mediana); e o 3º quartil (ou quartil superior) é o valor que aparece aos 75% da amostra.  

R facilita a criação do boxplot a partir de um vetor, conforme a figura abaixo.



Algoritmo Bubble Sort: implementação em R

O bubble sort é um algoritmo de ordenação simples e pouco eficiente.

Dado um vetor de tamanho n, percorrem-se seus elementos n-1 vezes, comparando-se os elementos adjacentes de 2 a 2. 

Se o segundo elemento desta comparação for menor do que o primeiro, o algoritmo troca a posição de ambos. 

A operação se repete até que todos os elementos estejam ordenados.

Abaixo, a implementação em R, em duas versões.

Observe que, na segunda, o programa testa condição para verificar se foi feita alguma troca na passagem e se encerra antecipadamente no caso de o vetor já estar completamente ordenado.




domingo, 6 de novembro de 2022

Rodando o RStudio no Docker

1. Tendo o Docker Desktop instalado no seu computador(1), baixe a imagem escolhida. No caso, vamos usar a rocker/rstudio. Então, no terminal (prompt de comando), digite:

docker pull rocker/rstudio


2. Instale e rode o contêiner digitando o seguinte comando no prompt de comando:


docker run --name rstudio01 -d -p 8787:8787 -v C:\Users\jepim\Desktop\ufv:/home/rstudio -e PASSWORD=rstudio rocker/rstudio


Obs.:

Nomeie o contêiner como preferir. No caso, usamos rstudio01

Substitua C:\Users\jepim\Desktop\ufv pelo caminho da pasta local que será acessada pelo contêiner


- -name: dá um nome para o contêiner

-d: “detached” (execução em segundo plano, sem os logs)

-p: seleção das portas (local e do contêiner)

-v: volumes (relaciona uma pasta local à uma pasta do contêiner)

-e: define variáveis de ambiente




3. Abra o navegador e acesse o RStudio em http://localhost:8787/


Username > rstudio


Password > rstudio