Você está na página 1de 8

SUPERIOR DE TECNOLOGIA EM CIÊNCIA DE DADOS

ADRIANO PEREIRA DA SILVA

PROJETO INTEGRADO IV

Camaçari-BA
2023
ADRIANO PEREIRA DA SILVA

PROJETO INTEGRADO IV

Trabalho apresentado ao Curso superior de tecnologia


em ciência de dados da UNOPAR - Universidade Norte
do Paraná, para a disciplina Projeto Integrado I.

Orientador: Prof. Gian Carlo Decarli

Camaçari-BA
2023
Tarefa 1: Defina Data Lake, descrevendo a ideia central por trás deste tipo de
estrutura e o seu propósito. Em seguida, descreva brevemente a principal diferença
entre um Data Lake e um Data Warehouse.

Um Data Lake é uma estrutura de armazenamento de dados que se concentra em


capturar, armazenar e processar grandes volumes de dados brutos e variados em
sua forma original. A ideia central por trás do Data Lake é criar um repositório
centralizado e escalável onde todos os tipos de dados, independentemente de sua
estrutura ou formato, possam ser armazenados em sua forma bruta e não
processada. O propósito principal do Data Lake é permitir que as organizações
armazenem, gerenciem e analisem uma vasta gama de dados, desde dados
estruturados (por exemplo, bancos de dados relacionais) até dados não estruturados
(por exemplo, logs de servidor, mídia social, documentos de texto, vídeos, etc.). Ele
visa fornecer flexibilidade e agilidade para a análise de dados, permitindo que os
usuários explorem os dados de maneira mais livre e descubram insights valiosos.

A principal diferença entre um Data Lake e um Data Warehouse está na estrutura e


no propósito: Data Lake: Estrutura: Armazena dados em sua forma bruta e não
processada, sem exigir uma estrutura rigorosa de esquema pré-definida. Propósito:
Projetado para lidar com grandes volumes de dados brutos, diversos e não
processados, com foco na flexibilidade e na descoberta de insights. Suporta análises
avançadas, como análise de big data e machine learning. Data Warehouse:
Estrutura: Armazena dados em uma estrutura altamente organizada com um
esquema rígido e pré-definido. Os dados são geralmente transformados e
agregados antes de serem armazenados. Propósito: Projetado para fornecer
informações estruturadas e confiáveis para relatórios, análises de negócios e
tomada de decisões. É otimizado para consultas de alto desempenho em dados
organizados.

Tarefa 2: O surgimento dos bancos de dados NoSQL possibilitou novas abordagens


e aplicações mais modernas relacionadas ao armazenamento e consulta de dados.
Neste sentido, indique e explique os principais cenários onde um banco de dados
NoSQL é mais vantajoso do que um relacional (SQL).

Os bancos de dados NoSQL (Not Only SQL) são vantajosos em vários cenários em
comparação com os bancos de dados relacionais (SQL):

Dados Não Estruturados ou Semiestruturados:


Em cenários onde os dados não possuem uma estrutura tabular fixa e não se
encaixam bem em um esquema relacional rígido, como dados de mídia social, logs
de servidor, documentos XML/JSON e conteúdo não estruturado, os bancos de
dados NoSQL oferecem flexibilidade, permitindo a manipulação de dados sem a
necessidade de esquemas rígidos.

Escalabilidade Horizontal:
Quando há a necessidade de lidar com um grande volume de tráfego ou cargas de
trabalho distribuídas que requerem escalabilidade, os bancos de dados NoSQL são
ideais. Eles são projetados para escalonamento horizontal, distribuindo dados em
vários nós, proporcionando maior capacidade de gerenciamento de cargas de
trabalho intensivas.

Dados Distribuídos:
Quando os dados estão distribuídos geograficamente em vários data centers ou
locais, os bancos de dados NoSQL oferecem recursos de replicação e distribuição
que facilitam o gerenciamento de dados distribuídos.

Alta Velocidade de Leitura e Escrita:


Em cenários que exigem uma alta velocidade de leitura e escrita simultâneas, como
aplicativos de jogos online ou sistemas de rastreamento em tempo real, os bancos
de dados NoSQL oferecem desempenho superior devido à sua capacidade de
escalabilidade horizontal e distribuição eficiente de carga.

Modelos de Dados Flexíveis:


Quando os requisitos da aplicação estão em constante evolução e os esquemas de
dados precisam ser flexíveis para acomodar mudanças frequentes, os bancos de
dados NoSQL permitem adicionar ou modificar campos nos documentos sem
impactar os dados existentes.

Recuperação de Dados em Formato de Grafo:


Em casos onde a estrutura dos dados é mais bem representada como um grafo com
entidades interconectadas e relacionamentos complexos, os bancos de dados
NoSQL de grafos são especialmente adequados para consultas e análises eficientes
nesse formato.

Esses são alguns dos cenários em que os bancos de dados NoSQL são mais
vantajosos em comparação com os bancos de dados relacionais, devido à
flexibilidade, escalabilidade e adequação a estruturas de dados variadas.

Tarefa 3: A linguagem de programação mais utilizada para trabalhar com mineração


de dados nos dias de hoje é o Python. Não por outro motivo, Python é a linguagem
que melhor se adapta às necessidades dessa área da tecnologia. Conta com um
conjunto amplo de bibliotecas com recursos prontos que facilitam o trabalho de
tratamento de dados. Faça uma pesquisa e levante as principais bibliotecas
utilizadas em Python para data mining e apresente suas características.

Python é amplamente utilizado em mineração de dados devido à sua flexibilidade e


às muitas bibliotecas disponíveis para facilitar o trabalho de tratamento, análise e
visualização de dados. Abaixo, estão algumas das principais bibliotecas utilizadas
em Python para mineração de dados, juntamente com suas características:

Pandas:

Características: O Pandas é uma biblioteca essencial para manipulação de dados


tabulares. Ele fornece estruturas de dados flexíveis, como DataFrames e Series, que
permitem carregar, limpar, transformar e analisar dados de forma eficiente.
NumPy:
Características: O NumPy é usado para operações numéricas eficientes em Python.
Ele oferece suporte a arrays multidimensionais e funções matemáticas, tornando-o
fundamental para operações de álgebra linear e cálculos estatísticos.
Scikit-Learn:

Características: O Scikit-Learn é uma das bibliotecas mais populares para


aprendizado de máquina em Python. Ele oferece uma ampla gama de algoritmos de
classificação, regressão, clustering e pré-processamento de dados, tornando-o
adequado para tarefas de mineração de dados e aprendizado de máquina.
Matplotlib e Seaborn:

Características: Essas bibliotecas são usadas para criação de gráficos e


visualização de dados. Matplotlib oferece controle granular sobre a criação de
gráficos, enquanto Seaborn simplifica a criação de gráficos estatísticos atraentes.
TensorFlow e PyTorch:

Características: Essas bibliotecas são essenciais para o desenvolvimento de


modelos de aprendizado profundo (deep learning). TensorFlow e PyTorch oferecem
estruturas flexíveis para construir, treinar e implantar modelos de redes neurais.
NLTK (Natural Language Toolkit):

Características: O NLTK é uma biblioteca usada para processamento de linguagem


natural (NLP). Ele fornece ferramentas e recursos para trabalhar com texto, incluindo
tokenização, análise sintática e classificação de texto.
Beautiful Soup:

Características: A Beautiful Soup é uma biblioteca de web scraping usada para


extrair dados de páginas da web. Ela facilita a análise de HTML e XML para coletar
informações de sites.
Statsmodels:

Características: O Statsmodels é usado para análises estatísticas e modelagem


econômica. Ele oferece recursos para realizar regressão, análise de séries
temporais e testes estatísticos.
NetworkX:

Características: O NetworkX é uma biblioteca para análise de redes complexas. Ele


permite a criação, análise e visualização de grafos, sendo útil em cenários que
envolvem redes sociais, redes de transporte, entre outros.
Essas são algumas das principais bibliotecas Python usadas em mineração de
dados. A escolha da biblioteca depende das necessidades específicas do projeto,
mas a combinação dessas bibliotecas fornece uma base sólida para a análise e
exploração de dados em Python.
Tarefa 4: Explique a diferença entre bancos de dados em nuvem autogerenciados e
gerenciados. Em seguida, comente sobre um exemplo de banco de dados em
nuvem gerenciado.

Bancos de dados em Nuvem Autogerenciados vs. Bancos de Dados em Nuvem


Gerenciados:

A principal diferença entre bancos de dados em nuvem autogerenciados e


gerenciados está na responsabilidade pelo gerenciamento e manutenção da
infraestrutura e do software do banco de dados. Aqui está uma explicação mais
detalhada:

Bancos de Dados em Nuvem Autogerenciados:

Nesse modelo, você é responsável por configurar, implantar e gerenciar tanto a


infraestrutura de hardware quanto o software do banco de dados na nuvem.
Isso inclui tarefas como provisionar servidores, instalar e atualizar o sistema
operacional, configurar o banco de dados, aplicar patches de segurança e realizar
backups.
Embora ofereça mais controle e personalização, requer conhecimento técnico
significativo e recursos para manter e monitorar o banco de dados.
Bancos de Dados em Nuvem Gerenciados:

Nesse modelo, o provedor de nuvem assume a responsabilidade pelo


gerenciamento da infraestrutura subjacente e do software do banco de dados.
Isso significa que você pode se concentrar apenas no uso e na configuração do
banco de dados, enquanto o provedor de nuvem cuida de tarefas como
escalabilidade automática, manutenção, atualizações de segurança e backups.
Bancos de dados em nuvem gerenciados são mais fáceis de usar, reduzem a
sobrecarga operacional e permitem que você se concentre mais em desenvolver
aplicativos e analisar dados.
Exemplo de Banco de Dados em Nuvem Gerenciado: Amazon RDS (Relational
Database Service):

O Amazon RDS é um exemplo de um banco de dados em nuvem gerenciado


oferecido pela Amazon Web Services (AWS). Ele oferece suporte a vários
mecanismos de banco de dados relacionais, como MySQL, PostgreSQL, Oracle,
SQL Server e MariaDB. Alguns dos recursos e benefícios do Amazon RDS incluem:

Gerenciamento Automático: A AWS cuida das tarefas de gerenciamento, como


provisionamento de hardware, aplicação de patches, backups automáticos e
monitoramento de desempenho.

Escalabilidade: Você pode dimensionar facilmente a capacidade de computação e


armazenamento sob demanda para atender às necessidades do aplicativo.

Segurança: O Amazon RDS oferece recursos de segurança robustos, como


criptografia em repouso e em trânsito, autenticação avançada e controle de acesso
granular.
Alta Disponibilidade: Você pode configurar réplicas de leitura e zonas de
disponibilidade para garantir alta disponibilidade e tolerância a falhas.

Backup e Restauração: O serviço oferece backups automatizados e a capacidade de


restaurar dados para pontos no tempo específicos.

Monitoramento: A AWS fornece métricas detalhadas de desempenho e logs para


que você possa monitorar e ajustar o desempenho do banco de dados.

O Amazon RDS é um exemplo de como um banco de dados em nuvem gerenciado


simplifica a administração do banco de dados, permitindo que os desenvolvedores
se concentrem mais no desenvolvimento de aplicativos e menos nas tarefas
operacionais associadas à gestão do banco de dados.

Tarefa 5: Defina o que é aprendizado por reforço e explique o algoritmo Q-learning.


Aprendizado por Reforço:

O aprendizado por reforço é um paradigma de aprendizado de máquina no qual um


agente interage com um ambiente e toma decisões sequenciais para maximizar uma
recompensa cumulativa. Ele é inspirado na psicologia comportamental e é
frequentemente usado em problemas de tomada de decisão sequencial. O
aprendizado por reforço envolve os seguintes elementos-chave:

Agente: O agente é a entidade que toma ações em um ambiente com o objetivo de


maximizar a recompensa.

Ambiente: O ambiente é o contexto no qual o agente opera e toma decisões. Ele


fornece feedback na forma de recompensas com base nas ações do agente.

Ações: O agente pode executar ações que afetam o ambiente. Essas ações podem
ser discretas ou contínuas, dependendo do problema.

Recompensas: O ambiente fornece ao agente recompensas após cada ação. O


objetivo do agente é aprender uma política (um conjunto de ações) que maximize a
recompensa cumulativa ao longo do tempo.

Política: A política é a estratégia ou conjunto de regras que o agente segue para


escolher ações com base no estado atual do ambiente.

Algoritmo Q-learning:

O Q-learning é um algoritmo de aprendizado por reforço que é usado para aprender


a função Q, que representa o valor esperado de realizar uma ação em um
determinado estado e seguir uma política específica. O algoritmo Q-learning é
especialmente adequado para problemas em que o ambiente é desconhecido e não
requer um modelo prévio do ambiente. Aqui está uma explicação simplificada de
como o algoritmo Q-learning funciona:

Inicialização: Inicialize uma tabela Q, que é uma matriz onde as linhas representam
estados possíveis e as colunas representam ações possíveis. Inicialize todos os
valores da tabela Q com zeros.

Exploração vs. Exploração:

O agente escolhe uma ação com base em uma política de exploração (tomar ação
aleatória com probabilidade epsilon) ou uma política de exploração (tomar a ação
com o maior valor Q para o estado atual).
Execução da Ação: O agente executa a ação escolhida no ambiente.

Observação do Resultado: O agente observa o próximo estado e a recompensa


associada à ação.

Atualização da Tabela Q: O agente atualiza o valor Q para o estado e ação atuais


usando a seguinte fórmula:

Q(s, a) = Q(s, a) + α * [R + γ * max(Q(s', a')) - Q(s, a)]

Onde:

Q(s, a) é o valor Q para o estado s e a ação a.


α (alfa) é a taxa de aprendizado que controla a rapidez com que o agente aprende.
R é a recompensa recebida após a ação.
γ (gama) é o fator de desconto que representa a importância das recompensas
futuras.
max(Q(s', a')) é o valor Q máximo para o próximo estado s' e todas as ações
possíveis a'.
Repetição: O processo é repetido até que o agente tenha explorado suficientemente
o ambiente e aprendido uma política ótima (ou aproximadamente ótima) que
maximize a recompensa cumulativa ao longo do tempo.

O algoritmo Q-learning é eficaz para resolver problemas de aprendizado por reforço


em que o ambiente é estocástico e não requer um modelo prévio do ambiente. Ele
converge para a política ótima quando suficientemente explorado e é amplamente
utilizado em jogos, robótica, controle automático e outras áreas onde a tomada de
decisão sequencial é necessária.

Você também pode gostar