<?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 association rules - Diego Nogare</title>
	<atom:link href="https://diegonogare.net/tags/association-rules/feed/" rel="self" type="application/rss+xml" />
	<link>https://diegonogare.net/tags/association-rules/</link>
	<description>Consultor Executivo de IA &#38; ML</description>
	<lastBuildDate>Tue, 15 Apr 2025 13:41:45 +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>

<image>
	<url>https://i0.wp.com/diegonogare.net/wp-content/uploads/2025/06/cropped-cropped-DN-Black-300x300-1.png?fit=32%2C32&#038;ssl=1</url>
	<title>Arquivos association rules - Diego Nogare</title>
	<link>https://diegonogare.net/tags/association-rules/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">247556142</site>	<item>
		<title>Algoritmo Apriori para sistemas de recomendação</title>
		<link>https://diegonogare.net/2020/05/algoritmo-apriori-para-sistemas-de-recomendacao/</link>
		
		<dc:creator><![CDATA[Diego Nogare]]></dc:creator>
		<pubDate>Wed, 06 May 2020 12:00:28 +0000</pubDate>
				<category><![CDATA[Machine Learning]]></category>
		<category><![CDATA[Apriori]]></category>
		<category><![CDATA[association rules]]></category>
		<category><![CDATA[mineracao de dados]]></category>
		<category><![CDATA[Regras de Associação]]></category>
		<category><![CDATA[Sistemas de Recomendação]]></category>
		<guid isPermaLink="false">http://diegonogare.net/?p=3405</guid>

					<description><![CDATA[<p>Sistemas de recomendação para por em prática as regras de associação Arrisco dizer que o algoritmo Apriori para sistemas de recomendação é a forma mais efetiva para colocar em prática as regras de associação. Mas isso só ocorre porque, para criar regras de forma efetiva, é necessário evitar o trabalho de força bruta. O princípio...</p>
<p>O post <a href="https://diegonogare.net/2020/05/algoritmo-apriori-para-sistemas-de-recomendacao/">Algoritmo Apriori para sistemas de recomendação</a> apareceu primeiro em <a href="https://diegonogare.net">Diego Nogare</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Sistemas de recomendação</h1>
<h2>para por em prática as regras de associação</h2>
<p>Arrisco dizer que o algoritmo Apriori para sistemas de recomendação é a forma mais efetiva para colocar em prática as <a href="https://diegonogare.net/2020/05/explicando-o-algoritmo-de-regra-de-associacao/" target="_blank" rel="noopener noreferrer">regras de associação</a>. Mas isso só ocorre porque, para criar regras de forma efetiva, é necessário evitar o trabalho de força bruta.</p>
<p>O princípio do algoritmo Apriori diz que um <em><strong>𝑘−𝑖𝑡𝑒𝑚𝑠𝑒𝑡</strong></em> só será entendido como frequente se todos seus <em><strong>(𝑘−1)−𝑖𝑡𝑒𝑚𝑠𝑒𝑡</strong></em> forem frequentes. Ou seja, um conjunto de itens é frequente se seu suporte, que é a segmentação de registros criando um subconjunto de dados que contém os itens, está acima de um determinado limite mínimo (pode ser chamado de suporte mínimo). Ao se decompor este comportamento em duas fases distintas, pode-se encontrar o subconjunto de itens frequentes quando estes itens satisfazem o mínimo de suporte. E para gerar as regras de associação, a partir destes itens frequentes, deve satisfazer o mínimo da confiança (pode ser chamada de confiança mínima).</p>
<p>Um padrão encontrado nas transações pode ser considerado confiável se ele aparecer em uma alta porcentagem de casos aplicáveis. Contudo, para se trabalhar com regras de associação, também é entendido que o algoritmo é confiável se tiver um valor de confiança alto. A tarefa de encontrar os itens frequentes dentro do conjunto de dados é repetitiva, e se encerra quando a combinação de itens frequentes não for mais satisfatória.</p>
<h2>Aplicação do Algoritmo Apriori</h2>
<p>Na primeira iteração do processo, o algoritmo gera o<em><strong> 1−𝑖𝑡𝑒𝑚𝑠𝑒𝑡</strong></em>, onde a combinação destes elementos é superior ao suporte que foi definido. Os elementos que satisfazem o valor mínimo de suporte são então selecionados e combinados, gerando o <em><strong>2−𝑖𝑡𝑒𝑚𝑠𝑒𝑡</strong></em>, e mais uma vez o suporte para esse novo conjunto é calculado. Novamente há uma iteração do processo selecionando itens que satisfaçam o mínimo de suporte e combinada com o conjunto de itens anterior, criando o <em><strong>3−𝑖𝑡𝑒𝑚𝑠𝑒𝑡</strong></em>. E assim segue com as iterações até que o sub-conjunto de itens criado não satisfaça o valor mínimo de suporte, deixando de ser considerado um conjunto de item frequente.</p>
<p>Por exemplo, imagine que esta ilustração em forma de grafo é uma base de dados que será utilizada para criar as regras de associação.</p>
<p><img data-recalc-dims="1" fetchpriority="high" decoding="async" class="alignnone size-full wp-image-3408" src="https://i0.wp.com/diegonogare.net/wp-content/uploads/2020/05/base_apriori.jpg?resize=600%2C473&#038;ssl=1" alt="base apriori" width="600" height="473" srcset="https://i0.wp.com/diegonogare.net/wp-content/uploads/2020/05/base_apriori.jpg?w=600&amp;ssl=1 600w, https://i0.wp.com/diegonogare.net/wp-content/uploads/2020/05/base_apriori.jpg?resize=300%2C237&amp;ssl=1 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>Lembre-se que, se um item é considerado frequente, então todos seus subitens também são considerados frequentes. Para entender essa afirmação, observe a ilustração abaixo (com as marcações em azul) no qual o item <strong>𝐶𝐷𝐸</strong> foi considerado frequente, e consequentemente todos os itens anteriores àquele elemento também são considerados frequentes. A cor azul destaca os nós que foram considerados frequentes dada essa afirmação<strong> 𝐶𝐷</strong>, <strong>𝐶𝐸</strong>,<strong> 𝐷𝐸</strong>,<strong> 𝐶</strong>,<strong> 𝐷</strong> e<strong> 𝐸</strong>, incluindo o conjunto vazio, NULL.</p>
<p><img data-recalc-dims="1" decoding="async" class="alignnone wp-image-3407 size-full" src="https://i0.wp.com/diegonogare.net/wp-content/uploads/2020/05/base_apriori_frequente.jpg?resize=600%2C473&#038;ssl=1" alt="Apriori frequente" width="600" height="473" srcset="https://i0.wp.com/diegonogare.net/wp-content/uploads/2020/05/base_apriori_frequente.jpg?w=600&amp;ssl=1 600w, https://i0.wp.com/diegonogare.net/wp-content/uploads/2020/05/base_apriori_frequente.jpg?resize=300%2C237&amp;ssl=1 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>&nbsp;</p>
<p>Seguindo a mesma estratégia, porém com a lógica invertida, a imagem abaixo (com as marcações em rosa) apresenta o conjunto<strong> 𝐴𝐵</strong> que não foi considerado frequente, logo os itens derivados deste item <strong>𝐴𝐵</strong> também serão desconsiderados e não terão regras sendo criadas para os itens <strong>𝐴𝐵𝐶</strong>, <strong>𝐴𝐵𝐷</strong>, <strong>𝐴𝐵𝐸</strong>, <strong>𝐴𝐵𝐶𝐷</strong>, <strong>𝐴𝐵𝐶𝐸</strong>, <strong>𝐴𝐵𝐷𝐸</strong> e <strong>𝐴𝐵𝐶𝐷𝐸</strong>. Com destaque em rosa estão os nós dos itens que foram desconsiderados para a criação das regras.</p>
<p><img data-recalc-dims="1" decoding="async" class="alignnone wp-image-3409 size-full" src="https://i0.wp.com/diegonogare.net/wp-content/uploads/2020/05/base_apriori_nao_frequente.jpg?resize=600%2C473&#038;ssl=1" alt="apriori não frequente" width="600" height="473" srcset="https://i0.wp.com/diegonogare.net/wp-content/uploads/2020/05/base_apriori_nao_frequente.jpg?w=600&amp;ssl=1 600w, https://i0.wp.com/diegonogare.net/wp-content/uploads/2020/05/base_apriori_nao_frequente.jpg?resize=300%2C237&amp;ssl=1 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>&nbsp;</p>
<h2>Métodos de avaliação do algoritmo</h2>
<p>Como métodos validados que permitem avaliar a criação das regras de associação, pode-se destacar:</p>
<ul>
<li>Medidas objetivas com base em probabilidade de <strong>suporte</strong> e <strong>confiança</strong>;</li>
<li>Medidas subjetivas que definem <strong>peculiaridade</strong> e <strong>surpresa</strong> dos dados.</li>
</ul>
<p>As métricas de <a href="https://diegonogare.net/2020/05/explicando-o-algoritmo-de-regra-de-associacao/" target="_blank" rel="noopener noreferrer"><strong>Suporte</strong> e <strong>Confiança</strong></a> já foram discutidas em outro texto.</p>
<p><strong>Peculiaridade</strong>: A medida pode ser considerada peculiar se estiver distante de outros padrões descobertos, se baseando em alguma medida de distância. Padrões peculiares são gerados com dados peculiares, que na estatística são conhecidos como <em>outliers</em>. Espera-se que tenha baixa representatividade absoluta na base de dados, e por causa disso, seja significativamente diferente do restante dos dados. Padrões peculiares geralmente são desconhecidos para os usuários, isso traz à tona uma característica interessante que pode passar despercebida pela área de negócio que solicitou o projeto.</p>
<p><strong>Surpresa</strong>: Para um padrão ser surpreendente, é esperado que ele contradiga o senso comum, ou expectativas, de um usuário ao analisar o resultado. Um padrão que é uma exceção à regra, ou seja, foge de um padrão geral que já foi descoberto, também podem ser considerados surpreendente. Em grande parte dos casos são descobertas interessantes, porque destacam divergência de conhecimento prévio e pode sugerir uma abordagem de que haja dados que precisam de mais estudos.</p>
<blockquote><p>Muitas vezes, resultados que apresentam peculiaridade e surpresa, incomodam os &#8220;<span style="text-decoration: underline;">donos de verdades absolutas</span>&#8220;. Isso porque estas pessoas não esperavam que o comportamento coletivo fosse diferente do que se era desejado/esperado, baseado em suas crenças.</p></blockquote>
<h2>Material de referência</h2>
<p>Como este texto é continuação do que escrevi sobre <a href="https://diegonogare.net/2020/05/explicando-o-algoritmo-de-regra-de-associacao/" target="_blank" rel="noopener noreferrer">Explicando o algoritmo de Regra de Associação</a>, as referências são as mesmas. Usei o livro <a href="https://www.amazon.com.br/gp/product/8573937610/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=8573937610&amp;linkCode=as2&amp;tag=diegonogare-20&amp;linkId=d88402b92d014505ad17511837e12933" target="_blank" rel="noopener noreferrer">Introdução ao Data Mining. Mineração de Dados</a><img loading="lazy" decoding="async" style="border: none !important; margin: 0px !important;" src="//ir-br.amazon-adsystem.com/e/ir?t=diegonogare-20&amp;l=am2&amp;o=33&amp;a=8573937610" alt="" width="1" height="1" border="0" /> e também <a href="https://www.amazon.com.br/gp/product/853528446X/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=853528446X&amp;linkCode=as2&amp;tag=diegonogare-20&amp;linkId=4f2476b9910ea659000c3b1084352542" target="_blank" rel="noopener noreferrer">Introdução à mineração de dados: com Aplicações em R</a><img loading="lazy" decoding="async" style="border: none !important; margin: 0px !important;" src="//ir-br.amazon-adsystem.com/e/ir?t=diegonogare-20&amp;l=am2&amp;o=33&amp;a=853528446X" alt="" width="1" height="1" border="0" /> e o artigo <a href="https://dl.acm.org/doi/10.1145/1132960.1132963" target="_blank" rel="noopener noreferrer">Interestingness measures for data mining: A survey</a>.</p>
<p>O post <a href="https://diegonogare.net/2020/05/algoritmo-apriori-para-sistemas-de-recomendacao/">Algoritmo Apriori para sistemas de recomendação</a> apareceu primeiro em <a href="https://diegonogare.net">Diego Nogare</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3405</post-id>	</item>
		<item>
		<title>Explicando o algoritmo de Regra de Associação</title>
		<link>https://diegonogare.net/2020/05/explicando-o-algoritmo-de-regra-de-associacao/</link>
		
		<dc:creator><![CDATA[Diego Nogare]]></dc:creator>
		<pubDate>Mon, 04 May 2020 13:24:40 +0000</pubDate>
				<category><![CDATA[Machine Learning]]></category>
		<category><![CDATA[association rules]]></category>
		<category><![CDATA[mineracao de dados]]></category>
		<category><![CDATA[Regras de Associação]]></category>
		<guid isPermaLink="false">http://diegonogare.net/?p=3390</guid>

					<description><![CDATA[<p>Como recomendar algo a partir de experiências passadas Como acontece com refatoração no desenvolvimento de software, ví a importância de escrever um outro texto explicando o algoritmo de Regra de Associação. Por exemplo, em 2014, eu já havia postado sobre este assunto, porém foi com uma implementação no SQL Server 2014. Ao re-ler o texto,...</p>
<p>O post <a href="https://diegonogare.net/2020/05/explicando-o-algoritmo-de-regra-de-associacao/">Explicando o algoritmo de Regra de Associação</a> apareceu primeiro em <a href="https://diegonogare.net">Diego Nogare</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Como recomendar algo</h1>
<h2>a partir de experiências passadas</h2>
<p>Como acontece com refatoração no desenvolvimento de software, ví a importância de escrever um outro texto explicando o algoritmo de Regra de Associação. Por exemplo, em 2014, eu já havia postado sobre este assunto, porém foi com uma <a href="https://diegonogare.net/2014/08/algoritmo-de-regras-associativas-association-rules-no-data-mining-do-sql-server-2014/" target="_blank" rel="noopener noreferrer">implementação no SQL Server 2014</a>. Ao re-ler o texto, contudo, senti falta de algumas coisas importantes.</p>
<h2>Regras de Associação</h2>
<p>As regras de associação permitem que elementos em um conjunto de dados sejam expressos como <strong>𝑋→𝑌</strong>, e lê-se 𝑋 implica em 𝑌, desde que 𝑋 e 𝑌 sejam sub-conjuntos da base de dados em questão e os conjuntos de itens não tenham intereceptação entre si <strong>𝑋∩𝑌</strong>.</p>
<p>Como exemplo, <strong>{𝑙𝑒𝑖𝑡𝑒,𝑝ã𝑜}→{𝑜𝑣𝑜𝑠}</strong> é uma associação que diz que quando se encontra os itens <strong>𝑙𝑒𝑖𝑡𝑒</strong> e <strong>𝑝ã𝑜</strong> em uma ocorrência, é esperado que o <strong>𝑜𝑣𝑜𝑠</strong> também apareça na transação.</p>
<p>A regra de associação pode ser feita através de um processo exaustivo computacionalmente, e que resulta em um conjunto de regras bastante expressivo mesmo com um conjunto de dados pequeno. Uma alternativa elegante para esse cálculo é já definir o suporte e confiança na parametrização do algoritmo para que haja a poda de regras que não atendam esse valor mínimo aceitável.</p>
<p>Seguindo essa abordagem, para avaliar a qualidade de associação do algoritmo, os termos de suporte e confiança devem ser utilizados. O suporte implica na frequência de vezes que uma determinada regra é aplicável ao conjunto de dados, e a confiança é a frequência na qual os elementos de 𝑌 aparecem no conjunto de dados com transações que possuem 𝑋.</p>
<h2>Formalização matemática</h2>
<p>A equação do suporte é dada por:</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" class="alignnone size-full wp-image-3393" src="https://i0.wp.com/diegonogare.net/wp-content/uploads/2020/05/Suporte.png?resize=262%2C39&#038;ssl=1" alt="Suporte" width="262" height="39" /></p>
<p>e o cálculo da confiança é:</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" class="alignnone size-full wp-image-3392" src="https://i0.wp.com/diegonogare.net/wp-content/uploads/2020/05/Confianca.png?resize=286%2C44&#038;ssl=1" alt="Confianca" width="286" height="44" /></p>
<p>Formalmente pode-se definir que uma regra de associação possui um conjunto de dados, representado por <strong>𝐼={𝑖1,𝑖2,&#8230;,𝑖𝑛}</strong>. Também possui um conjunto de transações, onde cada transação <strong>𝑇</strong> é um sub-conjunto de <strong>𝑇⊆𝐶</strong>, e que a implicação dos subitens <strong>𝑋→𝑌</strong>, sendo que <strong>𝑋⊂𝐼, 𝑌⊂𝐼, 𝑋∩𝑌=𝜙</strong>.</p>
<h3>Exemplo 1</h3>
<p>Para exemplificar a aplicação de suporte e confiança na geração de regras de associação, imagine esta base de dados com transações. Onde <strong>Zero</strong> significa que não havia o item na compra, e <strong>Um</strong> significa que o item estava na compra. Cada linha é uma transação e a coluna é o item no pedido.</p>
<table width="0%">
<tbody>
<tr>
<td><strong>ID</strong></td>
<td><strong>Leite</strong></td>
<td><strong>Pão</strong></td>
<td><strong>Ovos</strong></td>
</tr>
<tr>
<td><strong>1</strong></td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td><strong>2</strong></td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td><strong>3</strong></td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td><strong>4</strong></td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td><strong>5</strong></td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
</tbody>
</table>
<p>Ao se observar a base de dados, são encontradas cinco transações (linhas) e três produtos (colunas). A regra gerada que explica<strong> 𝑙𝑒𝑖𝑡𝑒→𝑝ã𝑜</strong> tem o suporte de 0.60, porque ela aparece em três das cinco transações encontradas na base de dados ( 3/5=0.6 ).</p>
<p>Já a confiança desta regra é de 0.75 porque o <strong>𝑝ã𝑜</strong> aparece em três transações, das quatro vezes que existe <strong>𝑙𝑒𝑖𝑡𝑒</strong> na base de dados ( 3/4=0.75 ).</p>
<h3>Exemplo 2</h3>
<p>Uma nova base de dados, mas seguindo a mesma ideia de <strong>Zeros</strong> onde aquele item não estava presente na transação e o <strong>Um</strong> estava.</p>
<table width="0%">
<tbody>
<tr>
<td><strong>ID</strong></td>
<td><strong>Pão</strong></td>
<td><strong>Leite</strong></td>
<td><strong>Fralda</strong></td>
<td><strong>Cerveja</strong></td>
<td><strong>Ovo</strong></td>
<td><strong>Café</strong></td>
</tr>
<tr>
<td><strong>1</strong></td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td><strong>2</strong></td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td><strong>3</strong></td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td><strong>4</strong></td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td><strong>5</strong></td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
</tbody>
</table>
<p>Ao analisar a regra <em><strong>{Leite, Fralda} → Cerveja </strong></em>é possível ver que existem estes três itens (<strong>Leite, Fralda e Cerveja</strong>) comprados em conjunto apenas duas vezes nas cinco transações, gerando um suporte de 0.4 (2/5=0.4). E, então, a confiança é calculada a partir do resultado do suporte para os itens totais (<strong>Leite, Fralda e Cerveja</strong>) que é encontrado duas vezes, divididos pelo suporte dos itens predecessores (<strong>Leite e Fralda</strong>), que foram encontrados três veses. Gerando a confiança de 0.66 (2/3 = 0.66).</p>
<p>Para esse conjunto de dados, utilizando o processo de força bruta, seriam criadas 602 regras. Esse número se dá pela formalização da equação <strong>𝑅𝑒𝑔𝑟𝑎𝑠=3𝑑−2𝑑+1+1</strong>. Sendo que D é o numero de itens (no caso, os 6 produtos possíveis). Ao encontrar estas 602 regras, mais de 80% delas seriam inúteis ao utilizar os métodos de avaliação de suporte = 20% e confiança = 50%, sendo então apropriado evitar o processo de força bruta para não desperdiçar poder computacional e tempo.</p>
<h2>Melhorando a abordagem</h2>
<blockquote><p>Uma definição formal aceita para o algoritmo de regras de associação diz que a regra <strong>𝑋→𝑌</strong> é válida para o conjunto de dados <strong>𝐷</strong> com suporte <strong>𝑆</strong> e confiança <strong>𝐶</strong>. Se o % do <strong>𝑆</strong> das transações em <strong>𝐷</strong> contiverem <strong>𝑋∪𝑌</strong> e % mínimo de <strong>𝐶</strong> das transações em <strong>𝐷</strong> que contêm <strong>𝑋</strong> também conter <strong>𝑌</strong>.</p></blockquote>
<p>Uma abordagem para melhorar o poder computacional do algoritmo sugere que o processo seja dividido em duas fases, sendo:</p>
<ul>
<li><em>Geração de itens frequentes</em>: Todos os itens que forem definidos como frequentes, por satisfazer o mínimo de suporte definido no início do algoritmo.</li>
<li><em>Geração das regras</em>: Extrair todas as regras que satisfaçam a confiança, a partir dos dados gerados pelos itens frequentes.</li>
</ul>
<p>E esta abordagem deixa o gancho para a próxima publicação, que vou falar sobre o algoritmo Apriori, que é importante para seguir explicando o algoritmo de Regra de Associação.</p>
<h2>Material de referência</h2>
<p>Para trabalhar com Regra de Associação na minha <a href="https://diegonogare.net/2020/02/mestrado-em-inteligencia-artificial-e-astrofisica/" target="_blank" rel="noopener noreferrer">dissertação do mestrado</a>, usei referências de <a href="https://www.amazon.com.br/gp/product/8573937610/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=8573937610&amp;linkCode=as2&amp;tag=diegonogare-20&amp;linkId=d88402b92d014505ad17511837e12933" target="_blank" rel="noopener noreferrer">Introdução ao Data Mining. Mineração de Dados</a><img loading="lazy" decoding="async" style="border: none !important; margin: 0px !important;" src="//ir-br.amazon-adsystem.com/e/ir?t=diegonogare-20&amp;l=am2&amp;o=33&amp;a=8573937610" alt="" width="1" height="1" border="0" /> que é bastante raro de encontrar para vender hoje em dia. Mas também usei <a href="https://www.amazon.com.br/gp/product/853528446X/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=853528446X&amp;linkCode=as2&amp;tag=diegonogare-20&amp;linkId=4f2476b9910ea659000c3b1084352542" target="_blank" rel="noopener noreferrer">Introdução à mineração de dados: com Aplicações em R</a><img loading="lazy" decoding="async" style="border: none !important; margin: 0px !important;" src="//ir-br.amazon-adsystem.com/e/ir?t=diegonogare-20&amp;l=am2&amp;o=33&amp;a=853528446X" alt="" width="1" height="1" border="0" /> que ainda é facilmente encontrado. Porém, uma outra referência que usei (mas que não é de livro) é do artigo <a href="https://dl.acm.org/doi/10.1145/1132960.1132963" target="_blank" rel="noopener noreferrer">Interestingness measures for data mining: A survey</a>.</p>
<p>&nbsp;</p>
<p>O post <a href="https://diegonogare.net/2020/05/explicando-o-algoritmo-de-regra-de-associacao/">Explicando o algoritmo de Regra de Associação</a> apareceu primeiro em <a href="https://diegonogare.net">Diego Nogare</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3390</post-id>	</item>
		<item>
		<title>Algoritmo de Regras Associativas (Association Rules) no Data Mining do SQL Server 2014</title>
		<link>https://diegonogare.net/2014/08/algoritmo-de-regras-associativas-association-rules-no-data-mining-do-sql-server-2014/</link>
		
		<dc:creator><![CDATA[Diego Nogare]]></dc:creator>
		<pubDate>Thu, 14 Aug 2014 13:11:45 +0000</pubDate>
				<category><![CDATA[Artigo]]></category>
		<category><![CDATA[Big Data]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[MVTech]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Tech Ed Brasil]]></category>
		<category><![CDATA[Virtual PASS BR]]></category>
		<category><![CDATA[association rules]]></category>
		<category><![CDATA[bi]]></category>
		<category><![CDATA[BigData]]></category>
		<category><![CDATA[business intelligence]]></category>
		<category><![CDATA[data mining]]></category>
		<category><![CDATA[inteligencia artificial]]></category>
		<category><![CDATA[regras associativas]]></category>
		<category><![CDATA[sql server]]></category>
		<guid isPermaLink="false">http://diegonogare.net/?p=960</guid>

					<description><![CDATA[<p>Fala galera, como prometido neste post e iniciado pela Árvore de Decisão, hoje continuo a série de posts falando sobre os algoritmos de Data Mining existentes no SQL Server 2014. Este segundo algoritmo que vamos falar é de Regras Associativas. Voltando ao primeiro post, as Regras Associativas apresentam uma estrutura combinatória dentro de um DataSet a partir...</p>
<p>O post <a href="https://diegonogare.net/2014/08/algoritmo-de-regras-associativas-association-rules-no-data-mining-do-sql-server-2014/">Algoritmo de Regras Associativas (Association Rules) no Data Mining do SQL Server 2014</a> apareceu primeiro em <a href="https://diegonogare.net">Diego Nogare</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="color: black;"><span style="font-family: Segoe UI; font-size: 10pt; background-color: white;">Fala galera, como <a href="https://diegonogare.net/2014/06/data-mining-com-sql-server-2014/" target="_blank" rel="noopener noreferrer">prometido </a></span>neste post<span style="font-family: Segoe UI; font-size: 10pt; background-color: white;"> e iniciado pela <a href="https://diegonogare.net/2014/08/algoritmo-de-arvore-de-decisao-decision-tree-no-data-mining-do-sql-server-2014/" target="_blank" rel="noopener noreferrer">Árvore de Decisão</a>, hoje continuo a série de posts falando sobre os algoritmos de Data Mining existentes no SQL Server 2014.<br />
</span></span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Este segundo algoritmo que vamos falar é de Regras Associativas. Voltando ao primeiro post, as Regras Associativas apresentam uma estrutura combinatória dentro de um DataSet a partir de itens similares que estão sendo processados. A maioria dos sistemas inteligentes que utilizam este algoritmo são criados para recomendar um produto para o usuário, normalmente em e-commerce. Já reparou que quando acessa o site da Amazon e procura o livro <a href="http://www.amazon.com.br/Banco-Dados-Relacional-Tomada-Decis%C3%A3o-ebook/dp/B00JPR5NLU/" target="_blank" rel="noopener noreferrer">Do Banco de Dados Relacional à Tomada de Decisão</a>, e vários outros livros de Business Intelligence e BigData são apresentados? Então, não existe um <em>Oompa-Loompa</em> colocando isso aleatoriamente para você. Por trás, existe um sistema de recomendação completo, provavelmente utilizando a categoria &#8220;<em>Computação, Informática e Mídias Digitais</em>&#8221; como um parametro de entrada para este item. Como sempre, é importante conhecer a base e saber quais segmentações você quer aplicar para a recomendação. Neste caso, quando se coloca a categoria como um parametro de entrada, sempre serão recomendados itens similares dentro desta categoria, mas se todos os compradores do meu livro também comprassem um livro de culinária, ele não apareceria na recomendação pois está em outra categoria.<br />
</span></p>
<p><img decoding="async" src="/wp-content/uploads/2014/08/081414_1309_Algoritmode1-2.png" alt="" /><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;"><br />
</span></p>
<p>&nbsp;</p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Bom, já entendemos a aplicabilidade e como ele funciona, agora vamos criar um exemplo para o Adventure Works?<br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Primeira coisa é necessário criar um novo projeto do tipo SSAS com Data Mining. Mais uma vez vou acreditar que você sabe criar um <strong>Data Source</strong> apontando para o <em>AdventureWorksDW2012</em> e um <strong>Data Source View</strong> apontando para a <em>vAssocSeqLineItems</em> e <em>vAssocSeqOrders</em>. Esta estrutura basicamente é um relacionamento entre pedidos e produtos. Onde uma view tem os pedidos que foram feitos, e na outra view tem a lista de produtos que estão associadas àquele pedido. Consegue ver um relacionamento entre essas views? E a aplicabilidade desse relacionamento na nossa recomendação de conteúdo? Caso não tenha conseguido descobrir essa associação, a idéia é encontrar na lista de itens os produtos que também são comprados (com base na outra view de pedido) quando ao menos um daqueles itens é o que está no meu carrinho. Ficou mais claro? Não? Ok, vamos continuar e ver se conseguimos explicar&#8230; Voltando pra Amazon, e olhando a categoria do meu livro. Diversas pessoas olham meu livro e alguns outros livros na mesma visita à pagina, não importa a ordem, pode ser que vejam outros livros e depois o meu (<em>a ordem de visualização vai importar quando estivermos falando de algoritmo de Sequence Cluster, mas isso é pra outro post</em>). O importante é que existe uma ligação entre a visita e os produtos que foram vistos, no caso estes livros. Depois de algum tempo, estes livros passam a ter um relacionamento mais preciso, pois tem mais gente visualizando os livros. Não significa que em todos os acessos os visitantes visualizam todos os livros, estes que estão recomendados são os 5 livros que mais se relacionam com o meu no momento do processamento e dentro naquela categoria que está sendo processada. Pode ser que no futuro um outro livro passe a ser visualizado sempre que alguém buscar o meu livro, isso fará com que o 5º livro da ordem, que seria representado por uma ligação mais fraca, pare de aparecer na recomendação e entre esse outro livro&#8230; Tudo isso automaticamente, sem a intervenção daquele <em>Oompa-Loompa</em> comentado lá em cima.<br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Voltando ao exemplo, depois de incluir o <strong>Data Source View</strong>, é preciso relacionar as views, arrastando o campo <em>OrderNumber</em> da view <em>vAssocSeqLineItems</em> para cima do campo <em>vAssocSeqOrders</em>.<br />
</span></p>
<p><img decoding="async" src="/wp-content/uploads/2014/08/081414_1309_Algoritmode2-1.png" alt="" /><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;"><br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Próximo passo é hora de criar o Mining Model para as regras associativas, faça isso clicando com o botão dirento em <em>Mining Structure</em> e criando um novo a partir do <em>From existing relational database or data warehouse</em> e escolhendo <strong>Microsoft Association Rules</strong>.<br />
</span></p>
<p><img decoding="async" src="/wp-content/uploads/2014/08/081414_1309_Algoritmode3-1.png" alt="" /><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;"><br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Ao avançar para as próximas telas, deve-se informar qual view é <strong>Case</strong> e qual é <strong>Nested</strong>. Neste caso, a estrutura de CASE é onde temos a informação principal que será usada para segmentar os dados. Fazendo uma analogia ao livro, é onde se encontra a categoria de &#8220;<em>Computação, Informática e Mídias Digitais</em>&#8221; e não os livros que foram visualizados juntos. Já a tabela NESTED é onde se encontram estes livros que foram visualizados juntos. Então selecione <em>vAssocSeqOrders</em> para <strong>Case</strong> e <em>vAssocSeqLineItens</em> para <strong>Nested</strong>.<br />
</span></p>
<p><img decoding="async" src="/wp-content/uploads/2014/08/081414_1309_Algoritmode4-1.png" alt="" /><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;"><br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Ao avançar para a tela seguinte, é solicitado para informar quais campos serão tratados como <em>Key</em>, <em>Input</em> e <em>Predictable</em>. A seleção destas colunas é baseada na mesma explicação que foi feita no post sobre <a href="https://diegonogare.net/2014/08/algoritmo-de-arvore-de-decisao-decision-tree-no-data-mining-do-sql-server-2014/" target="_blank" rel="noopener noreferrer">Árvores de Decisão</a>, então dê um pulinho lá e veja o que é. Desmarque todas as opções que vierem marcadas, e selecione as caixas de <strong>OrderNumber</strong> como chave (coluna key) e as três colunas da <strong>Model</strong>. Sua seleção ficará assim:<br />
</span></p>
<p><img decoding="async" src="/wp-content/uploads/2014/08/081414_1309_Algoritmode5-1.png" alt="" /><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;"><br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Quando avançar para a próxima tela, garanta que ambas colunas selecionadas estejam marcadas como <strong>Key</strong>, no <em>Content Type</em>.<br />
</span></p>
<p><img decoding="async" src="/wp-content/uploads/2014/08/081414_1309_Algoritmode6-1.png" alt="" /><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;"><br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Só pra lembrar, como neste caso é importante a acertividade na recomendação dos itens similares, altere de 30 para 0 o valor do campo &#8220;<em>Percentage of Data for Testing</em>&#8220;. Avance até finalizar o processo.<br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Se tudo ocorreu direito, seu Mining Structure ficará assim:<br />
</span></p>
<p><img decoding="async" src="/wp-content/uploads/2014/08/081414_1309_Algoritmode7-1.png" alt="" /><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;"><br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Antes de processar seu projeto, lembre-se de informar qual é o servidor que tem o <strong>SQL Server Analysis Services</strong> instalado e configurado. Após este pequeno detalhe, faça o processamento.<br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Após processar, mude a aba do seu Mining para <em>Mining Model View</em>, e então, dentro desta aba, vá até o item <em>Dependency Network</em>.<br />
</span></p>
<p><img decoding="async" src="/wp-content/uploads/2014/08/081414_1309_Algoritmode8-1.png" alt="" /><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;"><br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Aqui dentro é possível ver os nós de associação que foram criados.<br />
</span></p>
<p><img decoding="async" src="/wp-content/uploads/2014/08/081414_1309_Algoritmode9-1.png" alt="" /><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;"><br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Parece pouca associação (mas por trás não é), isso acontece pela parametrização da quantidade mínima de ocorrências similares dos objetos. Para aumentar isso, volte até a aba <em>Mining Model</em>, clique com o botão direito em <em>Set Algorithm Parameters.</em><br />
</span></p>
<p><img decoding="async" src="/wp-content/uploads/2014/08/081414_1309_Algoritmode10-1.png" alt="" /><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;"><br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;">Altere os parametros de <em>Minimum_Support</em> para <strong>0.01</strong> e de <em>Minimum_Probability</em> para <strong>0.1</strong>, ao terminar esta alteração, processe novamente seu modelo e em seguida volte a visualizar as associacões (aba <em>Dependency Network</em> do seu <em>Mining Model View</em>). Veja que agora está bem mais completo e bonito de ver.<br />
</span></p>
<p><img decoding="async" src="/wp-content/uploads/2014/08/081414_1309_Algoritmode11-1.png" alt="" /><span style="color: black; font-family: Segoe UI; font-size: 10pt; background-color: white;"><br />
</span></p>
<p><span style="color: black; font-size: 10pt;"><span style="font-family: Segoe UI; background-color: white;">Para consumir as associações, é possível escrever códigos <strong>DMX</strong> (<em>Data Mining Extentions</em>) passando como parâmetro o nome de um dos produtos, e recebendo uma lista dos outros itens que são associados à ele nas compras. Está no meu <em>pipe</em> pra escrever uma app em .Net que consuma esses dados via DMX, e claro, postar aqui como foi feito </span><span style="font-family: Wingdings; background-color: white;">J</span></span></p>
<p>O post <a href="https://diegonogare.net/2014/08/algoritmo-de-regras-associativas-association-rules-no-data-mining-do-sql-server-2014/">Algoritmo de Regras Associativas (Association Rules) no Data Mining do SQL Server 2014</a> apareceu primeiro em <a href="https://diegonogare.net">Diego Nogare</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2181</post-id>	</item>
	</channel>
</rss>
