<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos Athos Damiani - Estatidados</title>
	<atom:link href="http://estatidados.com.br/category/professores-colaboradores/athos-damiani/feed/" rel="self" type="application/rss+xml" />
	<link>http://estatidados.com.br/category/professores-colaboradores/athos-damiani/</link>
	<description>Comunidade de Estatística</description>
	<lastBuildDate>Thu, 09 Jun 2022 20:10:09 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>REGRESSÃO LOGÍSTICA EM: A MENOR DEEP LEARNING DO MUNDO</title>
		<link>http://estatidados.com.br/regressao-logistica-em-a-menor-deep-learning-do-mundo/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=regressao-logistica-em-a-menor-deep-learning-do-mundo</link>
					<comments>http://estatidados.com.br/regressao-logistica-em-a-menor-deep-learning-do-mundo/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 04 Nov 2020 12:45:55 +0000</pubDate>
				<category><![CDATA[Athos Damiani]]></category>
		<category><![CDATA[ciencia de dados]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=479</guid>

					<description><![CDATA[<p>Este artigo foi postado originalmente no https://www.curso-r.com/blog/ OBJETIVOS A finalidade do post é: aprender a fazer uma regressão logística com o keras aprender a fazer um PCA com o keras aproximar o Deep Learning do que já havia de conhecido<a class="leiamais" href="http://estatidados.com.br/regressao-logistica-em-a-menor-deep-learning-do-mundo/" title="REGRESSÃO LOGÍSTICA EM: A MENOR DEEP LEARNING DO MUNDO">...[Continuar lendo]</a></p>
<p>O post <a href="http://estatidados.com.br/regressao-logistica-em-a-menor-deep-learning-do-mundo/">REGRESSÃO LOGÍSTICA EM: A MENOR DEEP LEARNING DO MUNDO</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Este artigo foi postado originalmente no <a href="https://www.curso-r.com/blog/">https://www.curso-r.com/blog/</a></p>



<p>OBJETIVOS</p>



<p>A finalidade do post é:</p>



<ul class="wp-block-list"><li>aprender a fazer uma regressão logística com o keras</li><li>aprender a fazer um PCA com o keras</li><li>aproximar o Deep Learning do que já havia de conhecido pela maioria dos analistas de dados.</li><li>instigar a todos que vieram antes do deep learning a estudar e a ficar à vontade com as novidades em torno dela.</li><li>mostrar que muitos profissionais inseridos na área de machine learning já conheciam grande parte do que o deep learning usa.</li><li>levantar discussão sobre alguns mitos que não são construtivos para a comunidade dos analistas de dados.</li></ul>



<h2 class="wp-block-heading" id="header-motivacao">MOTIVAÇÃO</h2>



<p>Li estatísticos, cientistas da computação, engenheiros de dados a afins questionando o futuro do Machine Learning e se tudo que conhecíamos antes sobre modelagem estatística havia ficado obsoleto (como essa pergunta no Quora:&nbsp;<a href="https://www.quora.com/Should-I-quit-machine-learning">Should I Quit Machine Learning?</a>).</p>



<p>E em conversas com pessoas próximas percebia certa ufania pela novidade e frustração pela “obsolência” do que se havia investido tempo estudando antes.</p>



<p>Para piorar, aproveitadores pegaram jacaré nessa onda para fazer marketing malicioso com o intuito de desvalorizar e dividir a comunidade dos analistas de dados. Algo bem similar com o que aconteceu com outras palavras da moda como&nbsp;<em>data science</em>,&nbsp;<em>big data</em>,&nbsp;<em>Python versus R</em>&nbsp;e a própria&nbsp;<em>machine learning</em>. Antes havia a clássica propaganda de que a empresa X utilizava MACHINE LEARNING em vez de modelos preditivos. Agora a coisa evoluiu e apelam para o uso da palavra Deep Learning.</p>



<p>O que realmente importa:</p>



<ol class="wp-block-list"><li>Deep Learning é uma grande novidade e colocou a Inteligência Artificial em evidência.</li><li>Quem manjava Machine Learning antes vai conseguir aplicar 95% do seu conhecimento nas aplicações de Deep Learning (incluindo baysianismo, bootstrap, inferência, probabilidade e a boiada toda).</li><li>Deep Learning tem que ser visto como uma ferramenta a mais na caixa do analista de dados e não um substituto.</li></ol>



<p>E para abordar essa questão resolvi ajustar uma regressão logística usando deep learning para que todos que já fizeram uma regressão logística antes possam dizer que já fizeram uma rede neural também! Confesso ter uma leve motivação provocativa, mas qual graça teria se assim não fosse? =P</p>



<h2 class="wp-block-heading" id="header-o-que-faremos">O QUE FAREMOS</h2>



<ul class="wp-block-list"><li>Regressão logística para&nbsp;Y1Y1&nbsp;(com&nbsp;<code>glm</code>)</li><li>Deep Learning para&nbsp;Y1Y1&nbsp;(com&nbsp;<code>keras</code>)</li><li>Mostrar que regressão logística não é o melhor para&nbsp;Y2Y2&nbsp;e que Deep Learning vai além da limitação dos modelos lineares (com&nbsp;<code>glm</code>)</li><li>Deep Learning para&nbsp;Y2Y2&nbsp;(com&nbsp;<code>keras</code>)</li></ul>



<p>Mãos à obra.</p>



<h3 class="wp-block-heading" id="header-pacotes">PACOTES</h3>



<pre class="wp-block-code"><code>library(keras)
library(dplyr)
library(tidyr)
library(forcats)
library(ggplot2)</code></pre>



<h2 class="wp-block-heading" id="header-regressao-logistica-versus-deep-learning">REGRESSÃO LOGÍSTICA VERSUS DEEP LEARNING</h2>



<p>Hora de ajustar modelos para os mesmos dados de duas maneiras diferentes: regressão logística com&nbsp;<code>glm</code>&nbsp;e deep learning com o&nbsp;<code>keras</code>.</p>



<h3 class="wp-block-heading" id="header-dados-simulados">DADOS SIMULADOS</h3>



<pre class="wp-block-code"><code>logit &lt;- function(p) log(p) - log(1 - p)
logistic &lt;- function(x) 1/(1 + exp(-x))

n &lt;- 100000
set.seed(19880923)
df &lt;- data_frame(x = runif(n, -2, 2.5)) %>% 
  mutate(y_1 = rbinom(n, 1, prob = logistic(-1 + 2 * x)), # y_1
         y_2 = rbinom(n, 1, prob = logistic(-1 + 2 * tanh(-1 + 2 * x)))) # y_2</code></pre>



<p>O código acima criou duas variáveis respostas (<em>targets</em>). Em representação matemática, elas possuem as seguintes definições:</p>



<p><strong>Resposta&nbsp;<code>y_1</code></strong></p>



<p>E[Y1|x]=logistic(−1+2x)=11+e−(−1+2x)E[Y1|x]=logistic(−1+2x)=11+e−(−1+2x)</p>



<p><strong>Resposta&nbsp;<code>y_2</code></strong></p>



<p>E[Y2|x]=logistic(−1+2tanh(−1+2x))=11+e−(−1+2tanh(−1+2x))E[Y2|x]=logistic(−1+2tanh⁡(−1+2x))=11+e−(−1+2tanh⁡(−1+2x))</p>



<p>xx&nbsp;é linear no logito de&nbsp;<code>y_1</code>, então a regressão logística vai cair bem para descobrir os parâmetros&nbsp;−1−1&nbsp;e&nbsp;22. Porém,&nbsp;xx&nbsp;não é linhar no logito de&nbsp;<code>y_2</code>&nbsp;e por isso a regressão logística não conseguirá representar fielmente o gerador de&nbsp;<code>y_2</code>.</p>



<p><strong>OBS 1:</strong>&nbsp;A forma&nbsp;logistic(β0+β1tanh(β2+β3X))logistic(β0+β1tanh⁡(β2+β3X))&nbsp;tem parâmetros dentro do função&nbsp;<code>tanh</code>, o que significa que a nossa hipótese para&nbsp;E[Y2|x]E[Y2|x]&nbsp;não é mais&nbsp;<strong>linear</strong>&nbsp;nos parâmetros. Por isso que modelos lineares (como o nome sugere) não são mais indicados. E a&nbsp;<strong>não linearidade</strong>&nbsp;é uma das generalizações que as redes neurais nos fornece! (sim, isso é muito relevante)</p>



<p><strong>OBS 2:</strong>&nbsp;é claro que nesse caso bem simples de uma variável conseguiríamos inspecionar os dados para chegar em boas transformações de&nbsp;xx&nbsp;de tal forma que o ajuste da logística ficasse tão bom quanto o de uma rede neural, mas se acrescentássemos muitas outras variáveis aí a coisa complicaria!</p>



<p>Em representação de redes neurais, as fórmulas acima ficam assim:</p>



<p><strong>Resposta&nbsp;<code>y_1</code></strong></p>



<figure class="wp-block-image"><img decoding="async" src="https://d33wubrfki0l68.cloudfront.net/59889d292720d952a1996f76816f4a19b1ebff8a/66da6/img/blog/segundo-menor-dl/y1.png" alt=""/></figure>



<p><strong>Resposta&nbsp;<code>y_2</code></strong></p>



<figure class="wp-block-image"><img decoding="async" src="https://d33wubrfki0l68.cloudfront.net/9c41853bd0dd00a0e7653ae41da62c64deb3b902/3aaad/img/blog/segundo-menor-dl/y2.png" alt=""/></figure>



<p>O que era&nbsp;<strong>função de ligação</strong>&nbsp;no GLM, em redes neurais virou&nbsp;<strong>função de ativação</strong>&nbsp;(no final eu falo mais sobre vocabulários que mudaram).</p>



<h3 class="wp-block-heading" id="header-olhada-nos-dados">OLHADA NOS DADOS</h3>



<pre class="wp-block-code"><code># skimr::skim(df) %>% skim_print %>% with(numeric)  %>% mutate_if(is.numeric, round, 2) %>% DT::datatable()

df %>% 
  gather(y_id, y_val, y_1, y_2) %>%
  mutate(x_cat = cut_number(x, n = 70)) %>%
  group_by(x_cat, y_id) %>%
  summarise(p = mean(y_val),
            n = n()) %>%
  mutate(logit_p = logit(p)) %>%
  gather(transformacao, p, p, logit_p) %>%
  mutate(transformacao = transformacao %>% fct_inorder %>% fct_recode("logit(p)" = "logit_p")) %>%
  ggplot() +
  geom_point(aes(x = x_cat, y = p, colour = y_id)) +
  theme_minimal(20) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5)) +
  facet_wrap(~forcats::fct_inorder(transformacao), nrow = 1, scales = "free_y") +
  labs(x = "x", colour = "resposta") +
  theme(axis.text.x = element_blank(),panel.grid.major.x = element_blank(), panel.grid.minor.y = element_blank())</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://d33wubrfki0l68.cloudfront.net/8112ae590769e23aeb68b1eca870914597e55ef5/7050a/blog/2017-07-29-segundo-menor-dl_files/figure-html/unnamed-chunk-6-1.png" alt=""/></figure>



<p>O gráfico da direita mostra que&nbsp;<code>x</code>&nbsp;é proporcional ao logito das probabilidades de&nbsp;<code>y_1</code>&nbsp;(em vermelho) como era pra ser por termos construído assim. Já com o&nbsp;<code>y_2</code>&nbsp;(em azul) ainda ficou parecendo uma sigmoide mesmo depois da transformação.</p>



<h3 class="wp-block-heading" id="header-ajuste-de-modelos">AJUSTE DE MODELOS</h3>



<h4 class="wp-block-heading">REGRESSÃO LOGÍSTICA PARA&nbsp;Y1Y1&nbsp;(COM&nbsp;<code>GLM</code>)</h4>



<pre class="wp-block-code"><code># modelo glm 1 ------------------------------------------------------
modelo_glm_1 &lt;- glm(y_1 ~ x, data = df, family = binomial)</code></pre>



<pre class="wp-block-code"><code># coefficients
coef(modelo_glm_1)

# (Intercept)           x 
#   -1.018434    2.011647 

# accuracy
conf_matrix_glm_1 &lt;- table(modelo_glm_1$fitted.values > 0.5, df$y_1)
sum(diag(conf_matrix_glm_1))/sum(conf_matrix_glm_1)

# &#91;1] 0.85061</code></pre>



<p>As estimativas ficaram bem próximas dos verdadeiros valores&nbsp;β0=−1β0=−1&nbsp;e&nbsp;β1=2β1=2.</p>



<p>A acurácia foi de&nbsp;<strong>85%</strong>.</p>



<h4 class="wp-block-heading">DEEP LEARNING PARA&nbsp;Y1Y1&nbsp;(COM&nbsp;<code>KERAS</code>)</h4>



<p>Vamos montar nossa hipótese para&nbsp;E[Y1|x]E[Y1|x].</p>



<pre class="wp-block-code"><code># modelo keras 1 -------------------------------------------------------
# input: 1 variável: o x.
input_keras_1 &lt;- layer_input(1, name = "modelo_keras_1")

# output: não há camadas escondidas, apenas a função de ligação logit diretamente.
output_keras_1 &lt;- input_keras_1 %>% 
  layer_dense(units = 1, name = "camada_unica") %>%
  layer_activation("sigmoid", input_shape = 1, name = "link_logistic") # sigmoid no tensorflow é a logistic

# keras_model é o que constrói a nossa hipótese f(x) (da E&#91;y] = f(x))
modelo_keras_1 &lt;- keras_model(input_keras_1, output_keras_1)

# 
summary(modelo_keras_1)</code></pre>



<pre class="wp-block-code"><code>Model
_____________________________________________________________
Layer (type)                     Output Shape    Param #     
=============================================================
modelo_keras_1 (InputLayer)      (None, 1)       0           
_____________________________________________________________
camada_unica (Dense)             (None, 1)       2           
_____________________________________________________________
link_logistic (Activation)       (None, 1)       0          
=============================================================
Total params: 2
Trainable params: 2
Non-trainable params: 0
_____________________________________________________________</code></pre>



<p>A hipótese construída tem 2 parâmetros. Parece que está certo!&nbsp;β0β0&nbsp;e&nbsp;β1β1.</p>



<p><strong>Agora é a vez da função de perda.</strong></p>



<p>Como nosso objetivo é construir uma regressão logística, nós vamos escolher a função de perda&nbsp;<a href="http://deeplearning.net/software/theano/library/tensor/nnet/nnet.html#theano.tensor.nnet.nnet.binary_crossentropy">binary_crossentropy</a>&nbsp;que é sinônimo de&nbsp;<a href="https://en.wikipedia.org/wiki/Deviance_(statistics)">deviance</a>&nbsp;da logística, termo mais comum no mundo da estatística.</p>



<p>A métrica&nbsp;<code>'accuracy'</code>&nbsp;não entra no otimizador da função de perda, a gente usa ela para comparar os modelos que criamos. No caso vamos comparar com o modelo&nbsp;<code>glm</code>&nbsp;ajustado acima (mas, por exemplo, em caso de eventos raros a&nbsp;<code>'accuracy'</code>&nbsp;não vai ser muito informativa, daí poderíamos usar&nbsp;<code>'auc'</code>,&nbsp;<code>'gini'</code>, etc.).</p>



<pre class="wp-block-code"><code>modelo_keras_1 %>% compile(
  loss = 'binary_crossentropy',
  optimizer = optimizer_sgd(lr = 0.4),
  metrics = c('accuracy')
)

modelo_keras_1_fit &lt;- modelo_keras_1 %>% fit(
  x = df$x, 
  y = df$y_1, 
  epochs = 20, 
  batch_size = 1000,
  verbose = 0
)</code></pre>



<pre class="wp-block-code"><code># coefficients
modelo_keras_1 %>% get_layer("camada_unica") %>% get_weights

# &#91;&#91;1]]
#          &#91;,1]
# &#91;1,] 2.000054
# 
# &#91;&#91;2]]
# &#91;1] -1.015561

# accuracy
loss_and_metrics_1 &lt;- modelo_keras_1 %>% evaluate(df$x, df$y_1, batch = 100000, verbose = 0)
loss_and_metrics_1&#91;&#91;2]]

# &#91;1] 0.85053</code></pre>



<p>Resultados idênticos! Era para assim ser porque construímos a mesma hipótese e a memsa função de perda do&nbsp;<code>glm</code>.</p>



<h4 class="wp-block-heading">REGRESSÃO LOGÍSTICA PARA&nbsp;Y2Y2&nbsp;(COM&nbsp;<code>GLM</code>)</h4>



<p>Para modelar&nbsp;Y2Y2&nbsp;vamos pisar em terrenos que os modelos lineares não pisam. Primeiro tento ajustar uma curva uasndo&nbsp;<code>x</code>&nbsp;e a transformação&nbsp;<code>tanh(x)</code>. Esse preditor eu suponho que escolhi depois de uma minuciosa e demorada inspeção dos dados (tentei simular mais ou menos o que eu faria numa modelagem onde eu que teria que construir as features na mão).</p>



<pre class="wp-block-code"><code># modelo glm 2 ------------------------------------------------------
modelo_glm_2 &lt;- glm(y_2 ~ x + tanh(x), data = df, family = binomial)

# coefficients
coef(modelo_glm_2)

# (Intercept)           x     tanh(x) 
#  -1.6698641   0.3043212   2.0936353

# accuracy
conf_matrix_glm_2 &lt;- table(modelo_glm_2$fitted.values > 0.5, df$y_2)
sum(diag(conf_matrix_glm_2))/sum(conf_matrix_glm_2)

# &#91;1] 0.82204</code></pre>



<p>Acurácia de 82%, nada mal. Mas a hipótese e parâmetros foram distintos do verdadeiro gerador dos dados. Vamos usar redes neurais para resolver o problema de não linearidade.</p>



<h4 class="wp-block-heading">DEEP LEARNING PARA&nbsp;Y2Y2&nbsp;(COM&nbsp;<code>KERAS</code>)</h4>



<p>Hipótese para&nbsp;E[Y2|x]E[Y2|x].</p>



<pre class="wp-block-code"><code># modelo keras 2 -------------------------------------------------------
input_keras_2 &lt;- layer_input(1, name = "modelo_keras_2")

output_keras_2 &lt;- input_keras_2 %>%
  layer_dense(units = 1, name = "camada_um") %>% 
  layer_activation("tanh", input_shape = 1, name = "tanh_de_dentro") %>%
  layer_dense(units = 1, input_shape = 1, name = "camada_dois") %>% 
  layer_activation("sigmoid", input_shape = 1, name = "link_logistic")

modelo_keras_2 &lt;- keras_model(input_keras_2, output_keras_2)

summary(modelo_keras_2)</code></pre>



<pre class="wp-block-code"><code>Model
_____________________________________________________________
Layer (type)                Output Shape           Param #   
=============================================================
modelo_keras_2 (InputLayer) (None, 1)              0         
_____________________________________________________________
camada_um (Dense)           (None, 1)              2         
_____________________________________________________________
tanh_de_dentro (Activation) (None, 1)              0         
_____________________________________________________________
camada_dois (Dense)         (None, 1)              2         
_____________________________________________________________
link_logistic (Activation)  (None, 1)              0         
=============================================================
Total params: 4.0
Trainable params: 4.0
Non-trainable params: 0.0
_____________________________________________________________
</code></pre>



<p>Quatro parâmetros ‘treináveis’, é isso aí! Dois parâmetros de dentro do&nbsp;<code>tanh</code>&nbsp;e os dois parâmetros de fora. Precisamos que o keras nos devolva -1, 2, -1 e 2 do jeito que geramos os dados.</p>



<p><strong>Função de custo</strong></p>



<pre class="wp-block-code"><code>modelo_keras_2 %>% compile(
  loss = 'binary_crossentropy',
  optimizer = optimizer_sgd(lr = 0.1),
  metrics = c('accuracy')
)

modelo_keras_2_fit &lt;- modelo_keras_2 %>% fit(
  x = df$x, 
  y = df$y_2, 
  epochs = 20, 
  batch_size = 100,
  verbose = 0
)

# coefficients
modelo_keras_2 %>% get_layer("camada_um") %>% get_weights

# &#91;&#91;1]]
#          &#91;,1]
# &#91;1,] 2.012015
# 
# &#91;&#91;2]]
# &#91;1] -1.058052

modelo_keras_2 %>% get_layer("camada_dois") %>% get_weights

# &#91;&#91;1]]
#          &#91;,1]
# &#91;1,] 1.981977
# 
# &#91;&#91;2]]
# &#91;1] -1.006567

# accuracy
loss_and_metrics_2 &lt;- modelo_keras_2 %>% evaluate(df$x, df$y_2, batch_size = 100000)
loss_and_metrics_2&#91;&#91;2]]

# &#91;1] 0.82221</code></pre>



<p>Precisão de&nbsp;<strong>82%</strong>&nbsp;também, mas agora os parâmetros estão bem próximos daqueles que geraram os dados! Acabamos de ver um conjunto de parâmetros sendo encontrados mesmo com relação não linear entre eles e a média.</p>



<p>A precisão entre os dois modelos até que se equiparou, mas o gráfico das hipóteses encontradas (abaixo) mostra que a curva do&nbsp;<code>glm</code>&nbsp;está pior do que a curva do&nbsp;<code>keras</code>.</p>



<pre class="wp-block-code"><code>df %>% 
  select(x, y_2) %>%
  mutate(x_cat = cut_number(x, n = 50)) %>%
  group_by(x_cat) %>%
  summarise(p = mean(y_2),
            x = mean(x),
            keras = logistic(-1.006567 + 1.981977 * tanh(-1.058052 + 2.012015 * x)), 
            glm = logistic(-1.6698641 + 0.3043212*x + 2.0936353 * tanh(x)),
            n = n()) %>%
  mutate(logit_p = logit(p)) %>% 
  gather(Modelo, estimativa, keras, glm) %>%
  ggplot() +
  geom_point(aes(x = x_cat, y = p)) +
  geom_line(aes(x = x_cat, y = estimativa, colour = Modelo, group = Modelo)) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5)) +
  labs(x = "x", colour = "resposta")</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://d33wubrfki0l68.cloudfront.net/0b336fb4df15995d02d8a54c95733afd8f5ae7d4/c0e4b/blog/2017-07-29-segundo-menor-dl_files/figure-html/unnamed-chunk-15-1.png" alt=""/></figure>



<h4 class="wp-block-heading">(BÔNUS) PCA COM AUTOENCOER</h4>



<p>PCA e autoencodes servem na prática para reduzir a dimensionalidade dos dados. PCA é um caso particular de autoencoder com apenas uma camada e funções de ativação lineares. O post&nbsp;<a href="http://curso-r.com/blog/2017/06/26/2017-06-26-construindo-autoencoders/">Construindo Autoencoders</a>&nbsp;ensina a fazer e recomendo a leitura.</p>



<p>Resumo: autoencoder é uma técnica incrível que generaliza o PCA.</p>



<h2 class="wp-block-heading" id="header-discussao">DISCUSSÃO</h2>



<p>Na minha opinião aconteceu de que muita coisa antiga e consagrada teve seu nome mudado e apresentado como novo e isso acabou ofuscando as grandes contribuições realmente relevantes das pesquisas em torno das redes neurais e do deep learning.</p>



<p>Percebe-se que o Deep Learning generalizou bastante coisa e por isso eu declaro o post bem sucedido se o escrito acima despertou curiosidade em aprender mais sobre deep learning para agregar ao trabalho que já havia sendo feito. Vale mais a pena trazer todos os praticantes de estatística e machine learning juntos nessa novidade do que nos dividirmos.</p>



<p>Acredito que mais do que nunca a fundamentação teórica e interpretações terão seu valor potencializado com a disseminação do deep learning. Com o mito de que deep learning seja uma panaceia e com a facilidade que ela nos trouxe para fazer um modelo preditivo, há o risco de sermos soterrados por caixas pretas feitas por pessoas negligentes com aspectos importantes como interpretabilidade, causalidade e generalização. Talvez o bayesianismo se desponte (mais uma vez) como a solução para problemas qualitativos num mundo cada vez mais obscuro trazendo à luz os excessos dos modelos complexos e os benefícios dos modelos simples.</p>



<p>Puxando o gancho do bayesianismo (e inferências em geral), os resultados já obtidos em cima de modelos lineares ainda se aplicam em deep learning. E também temos a vantagem de que todas as demais ferramentas que se usam em deep learning e que não afetam a linearidade dos parâmetros podem ser utilizadas, como convolucional, recorrente, max pooling, drop out, autoencoder e tantas outras.</p>



<p>Para finalizar, na prática sugiro aplicar deep learning com o Keras, um pacote incrível que usa o tensorflow ou o theano por trás. Acredito que vocês verão muitos posts sobre o assunto por aqui! (podem encher o saco do Dan Falbel, um dos sócios da&nbsp;<a href="http://curso-r.com/">curso-r.com</a>, que está envolvido no desenvolvimento desse pacote em R =]).</p>



<h2 class="wp-block-heading" id="header-curiosidades">CURIOSIDADES</h2>



<h3 class="wp-block-heading" id="header-n-esimo-menor-deep-learning">N-ÉSIMO MENOR DEEP LEARNING</h3>



<p>Vimos acima o menor e o segundo menor Deep Learnings (que de profundo não têm nada =P). Mas podemos ir o tão profundo quanto quisermos! A representação de redes neurais sai fácil:</p>



<figure class="wp-block-image"><img decoding="async" src="https://d33wubrfki0l68.cloudfront.net/203d09ac64770d50779f4d1bf84883368fe30bce/4a6d5/img/blog/segundo-menor-dl/dl_inf.png" alt=""/></figure>



<p>Já a representação matemática fica esquisita:</p>



<p>E[Y|x]=11+exp⎛⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜⎝βp−1+βp1⋮1+exp⎛⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜⎝β6+β711+exp⎛⎜ ⎜ ⎜ ⎜ ⎜ ⎜⎝β4+β511+exp(β2+β311+exp(β0+β1x))⎞⎟ ⎟ ⎟ ⎟ ⎟ ⎟⎠⎞⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟⎠⎞⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟⎠E[Y|x]=11+exp⁡(βp−1+βp1⋮1+exp⁡(β6+β711+exp⁡(β4+β511+exp⁡(β2+β311+exp⁡(β0+β1x)))))</p>



<h3 class="wp-block-heading" id="header-vocabulario">VOCABULÁRIO</h3>



<p>Os jargões e termos do deep learning foram herdados de um outro contexto diferente do da modelagem preditiva estudada na estatística e por isso acabaram surgindo inúmeros sinônimos. Alguns deles são:</p>



<ul class="wp-block-list"><li>função de ativação = função de ligação</li><li>Softmax = verossimilhança da multinomial</li><li>sigmoide = função com formato de S (no tensorflow o padrão é a logistic)</li><li>pesos = parâmetros/betas/coeficientes</li><li>binary crossentropy = deviance da distribuição binomial (regressão logística)</li></ul>



<p>É isso aí, temos que nos manter curiosos, questionar e dialogar. Abs!</p>



<p>Linkedin do professor: <a href="https://www.linkedin.com/in/athosdamiani/">https://www.linkedin.com/in/athosdamiani/</a></p>



<p></p>



<p>#regressaologistica #deeplearning #redesneurais</p>
<p>O post <a href="http://estatidados.com.br/regressao-logistica-em-a-menor-deep-learning-do-mundo/">REGRESSÃO LOGÍSTICA EM: A MENOR DEEP LEARNING DO MUNDO</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://estatidados.com.br/regressao-logistica-em-a-menor-deep-learning-do-mundo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
