Machine Learning: recomendação de conteúdo com Mahout e Hadoop
Como utilizar a API de Machine Learning da Apache e um sistema de processamento distribuído para criar um recomendador de conteúdo escalável
ArtigosJavaMachine Learning: recomendação de conteúdo com Mahout e Hadoop
Por que eu devo ler este artigo:Cada vez mais os cenários de recomendação de conteúdo são explorados por portais de conteúdo e e-commerce, possibilitando a identificação automática das preferências dos usuários com o objetivo de sugerir novos itens ou conteúdos de seu interesse. Neste artigo, apresentaremos uma introdução a esse assunto utilizando a API de machine learning da Apache (Apache Mahout) e um sistema de processamento distribuído (Hadoop) para construir um recomendador de vídeos inteligente e escalável.
Com uma grande quantidade de informações e uma extensa
variedade de produtos e serviços, cada vez mais nos deparamos com dificuldades
para escolher entre as alternativas apresentadas. Frente a este cenário,
geralmente confiamos nas recomendações que são passadas por outras pessoas e
tomamos como base sua satisfação em relação àquilo que estão nos recomendando.
Essas recomendações acontecem de muitas formas, normalmente através de jornais,
revistas, revisores de filmes e livros, entre outros.
O objetivo de um sistema de recomendação é melhorar a
capacidade do processo de indicação, muito comum na relação social entre seres
humanos. Nesses sistemas, os usuários fornecem as recomendações como entrada e
o sistema as direciona para os indivíduos potencialmente interessados; como
acontece no Netflix, quando classificamos um filme indicando o número de
estrelas. Um dos grandes desafios desse tipo de sistema é realizar o casamento
correto entre as pessoas que estão recomendando e as pessoas que estão
recebendo a recomendação. Esse relacionamento é conhecido como relacionamento
de interesse. Entre as principais técnicas para recomendação de conteúdo,
podemos destacar a filtragem demográfica e a filtragem colaborativa.
A filtragem demográfica utiliza a descrição de um indivíduo
para aprender o relacionamento entre um item em particular e o tipo de
indivíduo que poderia se interessar por ele. Nessa abordagem, os dados pessoais
do usuário são requisitados através de formulários e combinados com o seu
perfil de consumo, permitindo estabelecer um relacionamento de interesse para
cada tipo de indivíduo. Já na filtragem colaborativa, esse relacionamento é
determinado através do comportamento comum de diferentes usuários, ou seja, a
filtragem colaborativa considera que existe um perfil de consumo comum entre as
pessoas que gostam das mesmas coisas. Essa abordagem é vantajosa porque não
precisa coletar mais informações sobre o usuário, além das informações sobre o
seu comportamento de consumo no próprio portal.
É muito comum um usuário gostar de diversos itens do mesmo
portal, e ao mapear todos esses interesses, geramos um grande volume de dados.
Isso acontece porque os portais oferecem uma grande quantidade de produtos, e
cada produto visitado precisa gerar um log de acesso. Lidar com esse volume de
dados nos leva a um cenário de Big Data, quando muitas vezes temos a
necessidade de realizar processamento paralelo e distribuído. Isso se torna
ainda mais importante quando aplicamos algoritmos de machine learning, que
normalmente são caros do ponto de vista computacional. Felizmente, para isso,
podemos contar com a ajuda do Apache Mahout e do Hadoop.
O Apache Mahout é uma biblioteca de machine learning de
código aberto cujos principais objetivos são: processar recomendações,
classificações e agrupamentos. Mantido pela Apache Software Foundation, o
Mahout nasceu em 2008 como um subprojeto do Apache Lucene, outra ferramenta de
código aberto destinada a problemas de busca e recuperação de informações. Em
2010 o Apache Mahout se tornou um projeto de software independente, que visa
escalabilidade e eficiência. Por isso compatibilizou seus algoritmos com o
Hadoop.
O Hadoop, por sua vez, é uma ferramenta de código aberto que
implementa o paradigma Map-Reduce, introduzido pelo Google e criado para
realizar processamento paralelo e distribuído. Assim, o Hadoop é capaz de
processar grandes conjuntos de dados dividindo uma tarefa em pequenas partes e
processando essas partes em máquinas distintas.
Este artigo mostra como utilizar o Apache Mahout e o Hadoop
para construir um recomendador de vídeos inteligente e escalável. Em nosso
experimento utilizaremos a base de dados aberta MovieLens, que é provida por um
grupo de estudo especialista em recomendação de conteúdo da Universidade de
Minnesota.
Apache Mahout
Como visto anteriormente, o Mahout é uma biblioteca de
machine learning mantida pela Apache Software Foundation cujo objetivo é
facilitar o uso de algoritmos de aprendizado de máquina quando utilizados em
sistemas de processamento distribuído. Quando falamos em machine learning ou
aprendizado de máquina, em português, estamos nos referindo a um conjunto de
técnicas que permitem a uma máquina melhorar suas análises a partir de
resultados obtidos anteriormente. Essas técnicas são muito exploradas pela
mineração de dados e usam principalmente métodos estatísticos e probabilísticos,
bem como reconhecimento de padrões e outras ferramentas matemáticas. Embora não
seja uma área de estudo nova, está em pleno crescimento, tanto que grandes
corporações, como Amazon, Facebook e Google, utilizam algoritmos desse tipo em
muitas de suas aplicações.
Esses algoritmos são implementados em diversos tipos de
aplicações, como: jogos, sistemas de detecção de fraudes, análise da bolsa de
valores, forecast de preço, entre outros. Eles também são muito comuns em
sistemas de recomendação, como os da Amazon e Netflix, que sugerem produtos aos
usuários com base em compras/visualizações anteriores.
O aprendizado de máquina permite solucionar problemas a
partir de duas abordagens: o aprendizado supervisionado e o aprendizado não
supervisionado.
Aprendizado supervisionado
O aprendizado supervisionado consiste em aprender uma função
a partir de um conjunto de dados de treinamento, previamente rotulados. Após o
treinamento, a máquina se torna apta a classificar um novo dado com base nas
regras aprendidas durante o treino.
Muitos problemas podem ser solucionados a partir do
aprendizado supervisionado, tais como: classificar mensagens de e-mail como
spam, rotular páginas da web de acordo com o gênero, reconhecimento de imagens,
etc. Para solucionar esses problemas podemos utilizar diversos algoritmos, por
exemplo: Redes Neurais Artificiais, Máquinas de Vetor de Suporte (SVM) e
classificadores Bayesianos.
Aprendizado não supervisionado
No aprendizado não supervisionado não existe uma fase
inicial de treinamento, pois seu propósito é indicar o significado dos dados.
Essa técnica normalmente é utilizada para segmentar os dados e formar grupos
lógicos, possibilitando identificar novas tendências e comportamentos.
Os algoritmos de aprendizado não supervisionado geralmente
são utilizados para mapear padrões de consumo, bem como efetuar recomendações.
Entre os principais algoritmos de aprendizado não supervisionado, podemos
destacar: algoritmos de agrupamento e filtragem colaborativa.
Recursos do Apache Mahout
Os algoritmos oferecidos pelo Mahout se dividem em quatro
grupos: filtragem colaborativa, algoritmos de classificação, algoritmos de
agrupamento e algoritmos de redução de dimensionalidade. Todos eles podem ser
utilizados via API e a maior parte deles também pode ser utilizada via linha de
comando, através de shell interativo.
Hadoop
Como vimos anteriormente, o Hadoop é uma ferramenta de
Map-Reduce que permite realizar processamento paralelo e distribuído. Ele é
formado por dois componentes principais: o Hadoop Distributed File System
(HDFS), que armazena e manipula os dados que serão processados pelas máquinas
que compõem o cluster; e o Map-Reduce, que gerencia todo o processamento
realizado pelo cluster de máquinas. A Figura
1 ilustra esses dois componentes.
Oferta válida para todos os planos durante o mês de dezembro
+3 MESES
Grátis
Veja os resultado dos nossos alunos
Conquistas reais de quem está aplicando o método
<Perguntas frequentes>
Carreira
Por onde devo iniciar os estudos?
Recomendamos começar pelo Plano de Estudo Carreira Programador Front-End. Essa área da programação é mais visual e intuitiva, tornando-a ideal para iniciantes. No Front-End, você aprenderá a criar a parte visual dos sites, como layout, cores e interatividade. Depois de dominar o Front-End, você pode avançar para Programador Back-End, onde aprenderá a lidar com a lógica e o funcionamento interno dos sites, e, finalmente, para Programador Mobile, focando no desenvolvimento de aplicativos para smartphones. Nossa metodologia é estruturada de forma progressiva para garantir que você desenvolva confiança e experiência ao criar projetos reais, como sites estáticos e dinâmicos.
Em quanto tempo vou me tornar um programador?
O tempo necessário para se tornar um programador varia de acordo com a dedicação de cada estudante. Com nossa metodologia, que inclui um Plano de Estudo detalhado e suporte contínuo, você pode se tornar um programador de 6 meses a um ano, dependendo do seu ritmo e esforço. Nossa abordagem prática e orientada a projetos ajudará a acelerar seu aprendizado.
Eu preciso de um diploma de faculdade para começar a atuar como programador?
Não. Ser programador é uma excelente oportunidade para quem não possui diploma de faculdade. Muitas empresas contratam baseadas nas habilidades técnicas e experiência prática, não necessariamente em diplomas. Após conquistar uma vaga, você pode optar por complementar sua formação com um diploma.
Por que a programação se tornou a profissão mais promissora da atualidade?
A necessidade de programadores cresceu exponencialmente, especialmente após a pandemia de Covid-19, que forçou muitas empresas a se adaptarem ao digital. Com o crescimento das empresas de tecnologia, a demanda por programadores aumentou. Atualmente, há mais de 200 mil vagas abertas no Brasil devido à falta de profissionais qualificados.
Metodologia
Quais são os principais diferenciais da DevMedia?
Didática e Metodologia
Com mais de 20 anos de experiência, nossa metodologia foca em menos aulas e mais prática. Desenvolvemos dezenas de projetos e exercícios para ajudar você a se tornar um programador completo. Nossos projetos são desafiadores e autênticos, não apenas exercícios repetitivos.
Projetos reais e exercícios
Você desenvolverá diversos projetos práticos em cada carreira (Front-End, Back-End e Mobile), recebendo mentoria e suporte contínuo. A prática é essencial, e oferecemos milhares de exercícios para ajudar você a fixar o conteúdo e melhorar sua posição no ranking.
Suporte ao aluno
Nossa plataforma oferece suporte dedicado com professores experientes, respondendo suas dúvidas em menos de uma hora. Isso garante que você receba a ajuda necessária durante toda a sua jornada de aprendizado.
Gamificação
A DevMedia utiliza gamificação para tornar o aprendizado mais envolvente e motivador. Você acumula pontos e moedas por acertos, que podem ser trocados por produtos e customizações no seu card pessoal. Além disso, o sistema de ranking mensal incentiva a competição amigável e a melhoria contínua.
O que eu irei aprender estudando pela DevMedia?
Ao estudar conosco, você se tornará um programador Full Stack, dominando Front-End, Back-End e Mobile. Utilizamos a linguagem JavaScript, a mais utilizada no mercado, preparando você para criar sistemas webs e aplicativos celulares. Nossa abordagem prática inclui exercícios para fixar o conhecimento e desenvolvimento de projetos reais que te preparam, para o mercado de trabalho.
Quais as vantagens de aprender programação através da linguagem JavaScript?
Ela é Multiplataforma, ela vai te permitir programar para web e para celulares utilizando praticamente a mesma sintaxe.
Elá é Full Stack. Ela te permite criar aplicações Front-end, Back-end e Mobile. Isso acelera muito sua carreira e aumenta suas possibilidades de pegar trabalhos autônomos e conquistar uma vaga no mercado.
Ela é fácil de aprender. Como ela não exige conhecimento inicial em “Orientação a Objetos” ela se torna mais simples com uma curva de aprendizado suave e vai te permitir começar a programar mais rápido do que outras linguagens
A plataforma oferece certificados?
Sim, oferecemos dois tipos de certificados: o certificado de conclusão, que você adquire ao consumir o conteúdo, e o certificado de autoridade, que você obtém ao acertar exercícios. Ambos possuem carga horária, que pode ser utilizada para fins acadêmicos, como atividades complementares na faculdade, e também para comprovações em processos seletivos ou no seu currículo.
A plataforma tem suporte ao aluno, como funciona?
Sim, temos uma equipe de programadores pronta para ajudar com todas as suas dúvidas! Durante o horário comercial, o tempo médio de resposta é de até 10 minutos. E não se preocupe, também oferecemos suporte à noite e nos finais de semana, com um prazo de resposta um pouco maior.
A DevMedia me forma como programador Full Stack?
Sim! Oferecemos uma formação completa, do zero até Full Stack. Nosso foco é na prática, então você vai encontrar muitos exercícios e projetos reais ao longo do curso. Garantimos que você sairá com a autonomia necessária para desenvolver seus próprios projetos com confiança!
Tem horário para as aulas?
Não, não temos horários fixos para as aulas. Todo o nosso conteúdo está disponível para você acessar a qualquer momento, permitindo que você estude conforme sua própria disponibilidade e ritmo. Dessa forma, você pode integrar o aprendizado à sua rotina de maneira mais flexível e eficaz.
Por que a DevMedia não usa videoaulas em sua didática?
Nosso foco principal é formar programadores de verdade. Sabemos que o dia a dia de um programador envolve muita leitura, interpretação e escrita de código. Por isso, nosso conteúdo é desenvolvido para ambientar você nesse processo desde o início, proporcionando mais autonomia e acelerando seu aprendizado.
Na vídeo-aula é o professor que está lendo, interpretando e escrevndo o código para você, isso limita o seu progresso. Ao ler e interagir diretamente com o conteúdo, você exercita sua capacidade de leitura e concentração, além de poder avançar no seu próprio ritmo. Dessa forma, você se torna um programador mais independente e preparado para os desafios reais do mercado.
Preciso de um computador específico para estudar na DevMedia?
Não é necessário nada específico. Qualquer computador com processador atual e memória de 8 GB é suficiente.
Eu consigo estudar pelo celular?
Sim, a DevMedia possui um aplicativo que te permite seguir com seus estudos de qualquer lugar.
A DevMedia tem aplicativo?
Sim, nosso aplicativo está disponível na Play Store e na Apple Store, permitindo que você estude de forma prática e conveniente em qualquer lugar.
Preciso estar na faculdade para acompanhar os estudos na DevMedia?
Não, a faculdade não é necessária. Você não precisa de nenhum conhecimento prévio para iniciar os estudos na nossa plataforma.
Assinatura e Pagamentos
Quais são os planos de assinatura disponíveis?
Oferecemos o plano anual, o valor total é lançado no cartão de crédito, parcelado em 12 vezes, e você precisa dispor do valor total no limite do seu cartão. Você também pode optar por pagar no PIX
Adquirindo o plano, terei acesso a todo o conteúdo?
Sim, ao assinar nossa plataforma, você desbloqueia acesso total a todo o nosso conteúdo, sem precisar comprar nada separadamente.
A plataforma tem planos vitalícios?
Não, nossos planos são anuais, garantindo que você tenha acesso contínuo às atualizações mais recentes e aos novos conteúdos. A tecnologia evolui rapidamente, e um plano vitalício oferece um conteúdo estático que se tornará ultrapassado em pouco tempo. Com nossos planos anuais, você está sempre à frente, aprendendo as novidades e tendências mais atuais no mundo da programação.
A DevMedia tem fidelidade?
Sim, nosso plano tem uma fidelidade de 12 meses, o que garante o tempo ideal para você explorar nosso conteúdo e desenvolver a autonomia necessária para trabalhar com programação.
Como funciona o cancelamento?
Nós garantimos seu direito de cancelamento com reembolso total dentro dos primeiros 7 dias.
Para que você aproveite ao máximo seu investimento, oferecemos suporte personalizado para orientá-lo na utilização da plataforma. Também temos a opção de transferência de titularidade do plano, permitindo que outra pessoa aproveite o restante do seu período de assinatura.
Cadastro
Como excluir meus dados da plataforma?
Para excluir seus dados da plataforma, acesse o link : https://www.devmedia.com.br/fale-conosco/ e abra um protocolo de 'Exclusão de dados'. Nossa equipe processará a solicitação e removerá todas as informações do seu cadastro.
Compartilhe esse conteúdo com um amigo!
Faça login para ganhar recompensas.
Ou
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.