DatabaseCast 76: Manutenção de banco de dados

VitrineDatabaseCast76Olá, pessoal! Neste episódio, Mauro Pichiliani (Twitter | Blog), Wagner Crivelini (@wcrivelini) e o convidado Fabricio Lima (@Fabriciodba) levantam a tampa do servidor para falar sobre manutenção de banco de dados. Confira neste episódio quais são os principais pontos a serem observados durante a manutenção, porque backup é encarado como parte do dia a dia, a dor de cabeça de um log de transações pode gerar, o que colocar no plano de manutenção e como ficar preocupado com algo que já deu problema.

Livro do banco de dados NoSQL MongoDB escrito pelo Mauro Pichiliani!

CAPA_REDUZIDACompre aqui a versão digital (EPUB) na Amazon. No Clube de Autores temos também a versão digital e impressa.



Não deixe de nos incentivar digitando o seu comentário no final deste artigo, mandando um e-mail para  databasecast@gmail.com, seguindo o nosso twitter @databasecast, vendo informações de bastidores e as músicas do programa no nosso Tumblr e curtindo a nossa página no Facebook e no Google+ e assistindo aos nossos episódios no YouTube. Acesse o feed RSS do DatabaseCast neste link.

Loja do DatabaseCast no Zazzle

Compre a caneca Datas SQL com a sintaxe para manipulação de datas no Oracle, SQL Server, MySQL e PostgreSQL! Você também pode comprar a camiseta com estampa fractal Fluxo Matrix e Sonho Fractal diretamente neste link.

feed-rss1Veja no gráfico abaixo a duração e os tempos aproximados de início e fim de cada bloco:

GraficoTamanhoEp76Veja na tag cloud abaixo a contagem das palavras mais usadas nos e-mails, comentários e tweets do episódio anterior:

TagCloudEp76

Reproduzir
Publicado em DatabaseCast | Com a tag , , , , , , , , , , , , , , , | Deixar um comentário

DatabaseCast 75: O papel do DBA na nuvem

VitrineDatabaseCast75

Olá, pessoal! Neste episódio, Mauro Pichiliani (Twitter | Blog), Wagner Crivelini (@wcrivelini) e e diversos ouvintes batem um papo sobre o papel do DBA na nuvem. Confira neste episódio gravado ao vivo durante o evento InteropMix 2016 como “dockerizar” seu banco, o que aprender para levar a base para a nuvem, quais são os tipos de serviços fornecidos (PaaS, IaaS, SaaS) e como a carreira da DBA vai ser influenciada pelo que é possível fazer com na nuvem.

Livro do banco de dados NoSQL MongoDB escrito pelo Mauro Pichiliani!

CAPA_REDUZIDACompre aqui a versão digital (EPUB) na Amazon. No Clube de Autores temos também a versão digital e impressa.



Não deixe de nos incentivar digitando o seu comentário no final deste artigo, mandando um e-mail para  databasecast@gmail.com, seguindo o nosso twitter @databasecast, vendo informações de bastidores e as músicas do programa no nosso Tumblr e curtindo a nossa página no Facebook e no Google+ e assistindo aos nossos episódios no YouTube. Acesse o feed RSS do DatabaseCast neste link.

Loja do DatabaseCast no Zazzle

Compre a caneca Datas SQL com a sintaxe para manipulação de datas no Oracle, SQL Server, MySQL e PostgreSQL! Você também pode comprar a camiseta com estampa fractal Fluxo Matrix e Sonho Fractal diretamente neste link.

feed-rss1Veja no gráfico abaixo a duração e os tempos aproximados de início e fim de cada bloco:

GraficoTamanhoEp75

Veja na tag cloud abaixo a contagem das palavras mais usadas nos e-mails, comentários e tweets do episódio anterior:

TagCloudEp75

Reproduzir
Publicado em DatabaseCast, Podcast | Com a tag , , , , , , , , , , , , , , , , | Deixar um comentário

DatabaseCast 74: Estatísticas

VitrineDatabaseCast74Olá, pessoal! Neste episódio, Mauro Pichiliani (Twitter | Blog), Wagner Crivelini (@wcrivelini) e os convidados Ricardo Rezende (@ricarezende) e Fabiano Amorim (@mcflyamorim) apontam o lápis para calcular as estatísticas. Neste episódio você saber como é importante contar os dados, descobrir se o banco espera mudanças em 10% ou 20% nos dados para calcular as estatísticas, checar a vela e a bateria do carro e, melhorar o desempenho e não levar o crédito e ir contra as melhoras práticas e usar um SQL hint.

Livro do banco de dados NoSQL MongoDB escrito pelo Mauro Pichiliani!

CAPA_REDUZIDACompre aqui a versão digital (EPUB) na Amazon. No Clube de Autores temos também a versão digital e impressa.



 

Não deixe de nos incentivar digitando o seu comentário no final deste artigo, mandando um e-mail para  databasecast@gmail.com, seguindo o nosso twitter @databasecast, vendo informações de bastidores e as músicas do programa no nosso Tumblr e curtindo a nossa página no Facebook e no Google+ e assistindo aos nossos episódios no YouTube. Acesse o feed RSS do DatabaseCast neste link.

Loja do DatabaseCast no Zazzle

Compre a caneca Datas SQL com a sintaxe para manipulação de datas no Oracle, SQL Server, MySQL e PostgreSQL! Você também pode comprar a camiseta com estampa fractal Fluxo Matrix e Sonho Fractal diretamente neste link.

feed-rss1Veja no gráfico abaixo a duração e os tempos aproximados de início e fim de cada bloco:

GraficoTamanhoEp74

Veja na tag cloud abaixo a contagem das palavras mais usadas nos e-mails, comentários e tweets do episódio anterior:

TagCloudEp74

Links do episódio:

Reproduzir
Publicado em DatabaseCast, Podcast | Com a tag , , , , , , , , , , , , , | Deixar um comentário

Introdução ao Deep Learning com o TensorFlow

500_f_84517548_t640subkwc91b36ek9yzypvwsibb3nvn

Recentemente fui convidado a palestrar no evento GDG DevFest 2016, realizado na cidade de Campinas. Neste post apresento os slides que utilizei e comente um pouco sobre como foi o evento.



Quando recebi o convite para palestrar neste evento (graças ao colega Ale Borba) fiquei empolgado para poder falar um pouco sobre o TensorFlow. Esta lib para machine learning é muito interessante e está ganhando cada vez mais recursos e aplicações práticas. Abaixo estão os slides que utilizei e neste repositório do GitHub estão os scripts em Python.

 

Como atualmente eu venho estudado e escrevendo um pouco sobre machine learning  posso dizer que esta tecnologia que o Google abrir é ótima. Contudo, ainda existe uma curva de apresentado relativamente grande para quem não conhece nada de IA, Data Mining ou machine learning.

Por outro lado, iniciativas da comunidade como o Keras ou o TFLearn estão aí para ajudar muito quem deseja das os primeiros passos com o TensorFlow. Portanto, recomendo aos interessados analisar os slides, acessar os links e fazer alguns testes para pelos menos entender o “jeitão” do TensorFlow.

Os exemplos iniciais recomendados podem parecer pouco palatáveis, especialmente para aqueles que não conhecem muito redes neurais. Entretanto, vale a pena gastar um pouco de tempo e esforço, pois pelo que eu estou observando desta tecnologia ela vai longe.

Publicado em Machine learning | Com a tag , , , , , , , , , | Deixar um comentário

Qual algoritmo de clustering eu uso?

figura1_mwu_topic1_poster

A pergunta do título deste post é uma das que mais ouço quando estou ensinando machine learning para quem está começando na área. Neste post vou tentar responder esta pergunta e ajudar quem possui dúvidas sobre o que utilizar para agrupar dados.

Como muitas perguntas de área da computação, a resposta da pergunta que indaga sobre qual algoritmo utilizar para agrupar os dados começa com um sonoro depende. O motivo pela qual as coisas são assim é que existem diversos fatores por trás desta simples pergunta que precisam ser conhecidos antes da elaboração de uma resposta adequada.

Os algoritmos de agrupamento, também conhecidos como clustering, fazem parte do que é conhecido como aprendizado de máquina não supervisionado. Isto quer dizer que a partir de dados “gerais” e sem nenhuma “anotação” é possível descobrir alguns padrões e criar um modelo que, na prática, vai ser utilizado para classificar um novo conjunto de dados quando ele surgir. Tudo isso é bem explicado com teoria e prática no meu curso de introdução ao machine learning com Python, cujos detalhes e inscrição podem ser obtidos neste link.

Uma coisa que poucas pessoas sabem é que os algoritmos de aprendizado não supervisionado empregados no machine learning são, na minha opinião, estranhos. Esta estranheza se devo ao fato que é preciso uma boa dose de interpretação do que é gerado pelos algoritmos, especialmente quando falamos sobre clustering. E esta interpretação requer conhecimento dos dados, do negócio e também de detalhes técnicos dos algoritmos.



Por exemplo, vamos supor que desejamos classificar clientes em grupos. Os algoritmos de clustering vão analisar os dados e gerar regras internas para dizer se um cliente X pertence a um grupo A, B ou qualquer que seja.

Entretanto, nem sempre podemos apresentar uma descrição significativa e representativa do grupo A ou B, pois mesmo tendo acesso a definição das regras que colocam ou não um dado no grupo fica complicado caracterizá-lo. As vezes fica fácil dizer algo como “este é o grupo do clientes AAA” ou “esta imagem é mais parecida com as imagens que possuem gatos”. Não obstante, quando falamos em conjuntos de dados com muitos atributos fica complicado atribuir significado aos grupos, que também são chamados de clusters. Esta é uma característica dos algoritmos não supervisionados de clustering: como os padrões são detectados automaticamente nem sempre podemos facilmente explicar o que foi gerado.

Contudo, esta dificuldade de explicar os grupos gerados nem é a maior dúvida de quem está querendo decidir por um ou outro algoritmo de clustering. Em geral, a dúvida tem como objetivo escolher o algoritmo que gere o menor erro de classificação, ou seja, a melhor acurácia. Porém, nem sempre isso faz muito sentido.

Por exemplo: é comum aprender logo de cara o algoritmo clássico k-means para classificação. Este algoritmo requer por definição o número de clusters que se deseja utilizar para classificar a amostra. Durante minhas aulas noto que os alunos tem dificuldade para compreender qual é o número de clusters e também outros parâmetros como, por exemplo, detalhes internos do algoritmo.

Isso fica um pouco claro mais quando observamos a imagem abaixo: ela mostra as formas de classificar três conjunto de dados (representados por pontos) utilizando diferentes algoritmos de clustering. A referência é a biblioteca scikit-learn do Python.

figura2_clustering

 

Ok, mas então #comofaz para escolher o algoritmo de clustering?

 

figura4_fwri0

Bem, o que posso sugerir em primeiro lugar é conhecer muito bem as opções. Saber quais são os parâmetros necessários para o algoritmo, onde ele é tipicamente utilizado e o que é possível se obter com ele ajuda muito. Por exemplo: saber que o algoritmo DBSCAN requer um número que representa de distância entre os centroides do cluster ajuda a saber se ele deve ser empregado ou não. Na prática este algoritmo é muito utilizado em cenários de visão computacional, pois a distância dos centroides neste contexto é muito importante.

Certo, então além de conhecer como funcionam os algoritmos de clustering, seus parâmetros e alguns exemplos de uso estou pronto para fazer a minha escolha? Infelizmente ainda não pequeno gafanhoto!

Para complementar o conhecimento necessário para escolher o algoritmo eu sugiro ainda explorar um pouco os dados com gráficos para se obter mais detalhes sobre eles visualmente. Além disso, também é importante levar em consideração como os algoritmos vão gastar os recursos computacionais (CPU, disco e memória) com base no tamanho dos dados que vão ser analisados. Também vale a pena se informar sobre opções de paralelismo e suporte dos algoritmos, ou seja, como eles são implementados em diversas ferramentas de machine learning.

Por fim, sempre que existe o uso de algoritmos de classificação não supervisionada para clustering é preciso gastar um bom tempo para analisar o impacto na quantidade de clusters versus a variação da amostra. Obviamente, isso é impactado por algum tipo de tratamento nas features, especialmente quando se utiliza técnicas de redução como PCA e remoção de outliers (também chamados de valores aberrantes).

Sendo assim, não é fácil responder a pergunta título deste post. Contudo, com uma boa exploração dos pontos citados já é possível não só ter uma base para iniciar uma fase de testes de diversos algoritmos, mas também conhecer um pouco mais sobre o que é possível obter como resultado utilizando algoritmos não supervisionados de clustering.

Publicado em Carreira, Machine learning | Com a tag , , , , , , , , , , , , | Deixar um comentário