<?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 Hernandes Matias Junior - Estatidados</title>
	<atom:link href="http://estatidados.com.br/category/professores-colaboradores/hernandes-matias-junior/feed/" rel="self" type="application/rss+xml" />
	<link>http://estatidados.com.br</link>
	<description>Comunidade de Estatística</description>
	<lastBuildDate>Thu, 09 Jun 2022 19:49:22 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0</generator>
	<item>
		<title>Clusterizando os clientes de uma loja de shopping utilizando o algoritmo K-Means</title>
		<link>http://estatidados.com.br/clusterizando-os-clientes-de-uma-loja-de-shopping-utilizando-o-algoritmo-k-means/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=clusterizando-os-clientes-de-uma-loja-de-shopping-utilizando-o-algoritmo-k-means</link>
					<comments>http://estatidados.com.br/clusterizando-os-clientes-de-uma-loja-de-shopping-utilizando-o-algoritmo-k-means/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 22 Jun 2021 15:36:58 +0000</pubDate>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[ciencia de dados]]></category>
		<category><![CDATA[Hernandes Matias Junior]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=617</guid>

					<description><![CDATA[<p>Neste trabalho, o script foi desenvolvido em linguagem R na IDE do RStudio Suponha que uma empresa deseja desenvolver campanhas de marketing junto aos seus clientes para alavancar seu faturamento. Essa é uma situação muito comum nas organizações, mas o<a class="leiamais" href="http://estatidados.com.br/clusterizando-os-clientes-de-uma-loja-de-shopping-utilizando-o-algoritmo-k-means/" title="Clusterizando os clientes de uma loja de shopping utilizando o algoritmo K-Means">...[Continuar lendo]</a></p>
<p>O post <a rel="nofollow" href="http://estatidados.com.br/clusterizando-os-clientes-de-uma-loja-de-shopping-utilizando-o-algoritmo-k-means/">Clusterizando os clientes de uma loja de shopping utilizando o algoritmo K-Means</a> apareceu primeiro em <a rel="nofollow" href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h4><span style="color:#8b9093" class="has-inline-color">Neste trabalho, o script foi desenvolvido em linguagem R na IDE do RStudio</span></h4>



<figure class="wp-block-image"><img src="https://miro.medium.com/max/2800/1*AFZ2thnOUF1u904h4QkiBA.gif" alt=""/><figcaption>Ilustração por Jiaqi Wang.</figcaption></figure>



<p>Suponha que uma empresa deseja desenvolver campanhas de marketing junto aos seus clientes para alavancar seu faturamento. Essa é uma situação muito comum nas organizações, mas o sucesso de uma campanha está diretamente ligado ao direcionamento correto para um público alvo.</p>



<p>Neste trabalho desenvolvido em R e utilizando o algoritmo de Machine Learning K-Means, traço os perfis de clientes que uma loja de shopping possui, para que ela possa realizar ações de marketing que façam sentido para cada um de seus públicos.</p>



<h1 id="f6a9">1. Carregando as bibliotecas</h1>



<p>Sem muito segredo, carregamos as bibliotecas comumente utilizadas nesse tipo de trabalho de clusterização não hierárquico. No código abaixo, cada linha é seguida de um comentário explicando ao que ela se refere.</p>



<pre class="wp-block-preformatted">library(tidyverse)  # pacote para manipulação de dados<br>library(cluster)    # algoritmo de cluster<br>library(factoextra) # algoritmo de cluster e visualização<br>library(fpc)        # algoritmo de cluster e visualização<br>library(gridExtra)  # para a funcao grid arrange<br>library(readxl)     # leitura dos dados</pre>



<h1 id="c924">2. Importando os dados</h1>



<p>Com as bibliotecas carregadas, importamos a base de dados “clientes” e a visualizei, verificando o número de variáveis e de observações.</p>



<figure class="wp-block-image"><img src="https://miro.medium.com/max/1372/1*q6VlnBWTMtQZzE1KJKITWQ.png" alt=""/></figure>



<p>Esse dataframe possui uma coluna “CustomerID” e as variáveis “Gender”, “Age”, “Annual Income” e “Spending Score”.</p>



<p>Mantivemos no dataframe apenas as colunas que iremos utilizar para o agrupamento, que serão “Annual Income” e “Spending Score”. Como o foco é definir perfis de consumo, não utilizaremos dados de gênero e idade. Ambas as colunas mantidas foram renomeadas para a tradução em português, para que ficasse mais intuitiva a visualização nos gráficos.</p>



<pre class="wp-block-preformatted">clientes &lt;- read.table('Mall_Customers.csv',sep = ",", header = T, dec = ",")<br>rownames(clientes) &lt;- clientes[,1]<br>clientes &lt;- clientes[,-c(1,2,3)]clientes &lt;- clientes %&gt;% rename(salario.anual=Annual.Income..k..,<br>                    score=Spending.Score..1.100.<br>                    )clientes.padronizado &lt;- scale(clientes)</pre>



<p>Repare que na última linha do bloco anterior eu criei um novo dataframe “clientes.padronizado”, que recebe os dados de “clientes”, mas já com os dados convertidos em uma mesma escala.</p>



<h1 id="8d4e">3. Verificando o número de clusters e agrupando a base de dados</h1>



<p>Na clusterização, um grande objetivo é manter a menor variância dentro dos grupos, os deixando mais homogêneos. Para definir o número de clusters a serem considerados, utilizando o “Elbow Method”, plotando os dados em um gráfico de linhas, onde no eixo X estão o número de clusters e no eixo Y, o somatório das variâncias.</p>



<pre class="wp-block-preformatted">fviz_nbclust(clientes.padronizado, FUN = hcut, method = "wss")</pre>



<figure class="wp-block-image"><img src="https://miro.medium.com/max/990/1*1bZfgcjlQPr-ug5y6PItHA.png" alt=""/></figure>



<p>Repare que quanto mais eu aumento o número de clusters, mais eu diminuo a variância dentro deles. No entanto, após o número 5 a queda é menos acentuada, o que demonstra que&nbsp;<strong>a partir dali eu estou dividindo em grupos diferentes clientes que possuem perfis parecidos</strong>.</p>



<p>Em tradução, o “Elbow Method” significa “Método do Cotovelo”, pois consideramos o número de clusters aquele que aparece bem na volta da curva, como um cotovelo mesmo. Nesse caso, inicialmente o 5 parece ser o número ideal a ser utilizado.</p>



<p>Mas para fins de estudos, vamos testar os dados com clusters que vão de 3 a 6, e plotaremos em um gráfico para conseguirmos visualizar melhor a divisão.</p>



<pre class="wp-block-preformatted">clientes.k3 &lt;- kmeans(clientes.padronizado,centers=3)<br>clientes.k4 &lt;- kmeans(clientes.padronizado,centers=4)<br>clientes.k5 &lt;- kmeans(clientes.padronizado,centers=5)<br>clientes.k6 &lt;- kmeans(clientes.padronizado,centers=6)</pre>



<p>Com meus dados divididos em clusters de 3 a 6, criamos os gráficos e logo em seguida utilizamos a função “grid.arrange” para visualizarmos e compararmos todos lado a lado.</p>



<pre class="wp-block-preformatted">G1 &lt;- fviz_cluster(clientes.k3, geom="point", data=clientes.padronizado) + ggtitle("k=3")G2 &lt;- fviz_cluster(clientes.k4, geom="point", data=clientes.padronizado) + ggtitle("k=4")G3 &lt;- fviz_cluster(clientes.k5, geom="point", data=clientes.padronizado) + ggtitle("k=5")G4 &lt;- fviz_cluster(clientes.k6, geom="point", data=clientes.padronizado) + ggtitle("k=6")grid.arrange(G1,G2,G3,G4, nrow=2)</pre>



<figure class="wp-block-image"><img src="https://miro.medium.com/max/3072/1*fD4oAziYv_BabyYJwMIS9w.png" alt=""/></figure>



<p>Perceba como os dados que foram divididos em 3 e 4 clusters possuem grupos grandes, com clientes diferentes que claramente elevam a variância dentro de cada um deles. Já nos dados que foram divididos em 5 e 6 clusters os grupos estão abrangendo clientes que são parecidos entre si, em uma delimitação que faz mais sentido.</p>



<p>Aqui, seria possível utilizar 5 ou 6 clusters. No entanto, como verificamos com o “Elbow Method” que o somatório das variâncias de 5 para 6 cai muito pouco,&nbsp;<strong>escolhemos então utilizar 5 clusters</strong>.</p>



<h1 id="7f91">4. Juntando os dados</h1>



<p>Após decidir utilizar o agrupamento do “clientes.k5”, importamos novamente a base de dados inicial e concatenamos, criando&nbsp;<strong>uma nova coluna que se refere a qual grupo aquele cliente pertence</strong>.</p>



<pre class="wp-block-preformatted">clientes2 &lt;- read.table('Mall_Customers.csv',sep = ",", header = T, dec = ",")<br>clientesfit &lt;- data.frame(clientes.k5$cluster)clientes.final &lt;- cbind(clientes2,clientesfit)</pre>



<figure class="wp-block-image"><img src="https://miro.medium.com/max/839/1*vVMJbjB65b7tbJr33JZUOw.png" alt=""/></figure>



<h1 id="80c6">5. Análise descritiva dos grupos</h1>



<p>Definido qual o grupo de cada cliente, podemos agora realizar uma análise descritiva dos grupos, para saber qual a média de salário anual e qual a média de consumo de cada um deles.</p>



<pre class="wp-block-preformatted">mediagrupo &lt;- clientes.final %&gt;% <br>  group_by(clientes.k5.cluster) %&gt;% <br>  summarise(n=n(),<br>            salario.anual=mean(Annual.Income..k..),<br>            score=mean(Spending.Score..1.100.)<br>            )<br>mediagrupo</pre>



<figure class="wp-block-image"><img src="https://miro.medium.com/max/475/1*yx5IcUpFuaPpJnMllg2xlg.png" alt=""/></figure>



<p>Como interpretamos os dados:</p>



<ul><li><strong>Grupo 1</strong>: Ganha pouco e gasta muito;</li><li><strong>Grupo 2</strong>: Ganha muito e gasta muito;</li><li><strong>Grupo 3</strong>: Ganha muito e gasta pouco;</li><li><strong>Grupo 4</strong>: Ganha pouco e gasta pouco;</li><li><strong>Grupo 5</strong>: Ganho intermediário e gasto também intermediário.</li></ul>



<h1 id="bd74">6. Salvando a nova base de dados com a coluna de cluster</h1>



<p>Após interpretar os dados e verificar com a área de negócio se eles fazem sentido, exportamos a nova base de dados em um arquivo .csv.</p>



<pre class="wp-block-preformatted">write.csv(clientes.final,file = "clientesfinal.csv")</pre>



<p>Gostou do post? O código e as bases de dados estão no&nbsp;<a href="https://github.com/hernandesmjunior/r_machine_learning/tree/main/Clusteriza%C3%A7%C3%A3o/Clientes%20de%20um%20Shopping"><strong>meu Github</strong></a>. Dúvidas e sugestões, é só me mandar mensagem&nbsp;<a href="https://www.linkedin.com/in/hernandesmjunior/"><strong>pelo Linkedin</strong></a>&nbsp;<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p>Link do post original: <a href="https://medium.com/jogandoosdados/clusterizando-os-clientes-de-uma-loja-de-shopping-utilizando-o-algoritmo-kmeans-91cf5b330204">https://medium.com/jogandoosdados/clusterizando-os-clientes-de-uma-loja-de-shopping-utilizando-o-algoritmo-kmeans-91cf5b330204</a></p>



<p>LinkedIn do autor: <a href="https://www.linkedin.com/in/hernandesmjunior/">https://www.linkedin.com/in/hernandesmjunior/</a></p>



<p>#analisedecluster #clusterizacao #aprendizadonaosupervisionado</p>
<p>O post <a rel="nofollow" href="http://estatidados.com.br/clusterizando-os-clientes-de-uma-loja-de-shopping-utilizando-o-algoritmo-k-means/">Clusterizando os clientes de uma loja de shopping utilizando o algoritmo K-Means</a> apareceu primeiro em <a rel="nofollow" href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://estatidados.com.br/clusterizando-os-clientes-de-uma-loja-de-shopping-utilizando-o-algoritmo-k-means/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
