Sistemas de Recomendação e Evolução de Software

28
Motiva¸c˜ ao Sistemas de Recomenda¸c˜ ao Aplicabilidade Referˆ encias Sistemas de Recomenda¸c˜ ao e Evolu¸c˜ ao de Software Leandro Soriano Ferreira Universidade Federal da Bahia [email protected] 16 de julho de 2013 1 / 28 Leandro Soriano Ferreira MATE08 - Evolu¸ ao de Software

Transcript of Sistemas de Recomendação e Evolução de Software

Page 1: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

Sistemas de Recomendacao e Evolucao deSoftware

Leandro Soriano Ferreira

Universidade Federal da Bahia

[email protected]

16 de julho de 2013

1 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 2: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

Overview

1 Motivacao

2 Sistemas de RecomendacaoDefinicaoColeta de InformacoesClassificacao

Filtragem por ConteudoFiltragem ColaborativaFiltragem Hıbrida

3 AplicabilidadeReuso de Componentes

2 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 3: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

3 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 4: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

4 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 5: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

DefinicaoColeta de InformacoesClassificacao

Definicao - Sistema de Recomendacao

[Recommendation] systems are software applications that aim tosupport users in their decision-making while interacting with largeinformation spaces. They recommend items of interest to usersbased on preferences they have expressed, either explicitly orimplicitly.a

aRobillard, Walker e Zimmermann, “Recommendation systems for softwareengineering”.

5 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 6: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

DefinicaoColeta de InformacoesClassificacao

Definicao - Sistema de Recomendacao

[Recommendation] systems help overcome the informationoverload problem by exposing users to the most interesting items,and by offering novelty, surprise, and relevance.a

aRobillard, Walker e Zimmermann, “Recommendation systems for softwareengineering”.

6 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 7: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

DefinicaoColeta de InformacoesClassificacao

Definicao - Sistemas de Recomendacao para Engenharia deSoftware

An [Recommendation Sistem for Software Engineering - RSSE] is asoftware application that provides information items estimated tobe valuable for a software engineering task in a given context.a

aRobillard, Walker e Zimmermann, “Recommendation systems for softwareengineering”.

7 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 8: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

DefinicaoColeta de InformacoesClassificacao

Coleta Implıcita

Figura: Google Play - Meus Aplicativos

8 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 9: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

DefinicaoColeta de InformacoesClassificacao

Coleta Explıcita

Figura: Formulario de Avaliacao do Consumidor - Buscape

9 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 10: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

DefinicaoColeta de InformacoesClassificacao

Filtragem por Conteudo

O sistema aprende a recomendar itens que sao similares aquelespreteridos pelo usuario no passado. A similaridade dos ıtens ecalculada baseada em caracterısticas associadas aos ıtenscomparados. Por exemplo, se um usuario avaliou positivamenteum filme que se enquadra no genero de comedia, o sistema podeaprender a recomendar outros itens deste genero.1

1Kantor et al., “Recommender systems handbook”.10 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 11: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

DefinicaoColeta de InformacoesClassificacao

Filtragem por Conteudo

Vantagens

Independencia de Usuario: Exploram apenas as avaliacoesfornecidas pelo usuario ativo para construir seu proprio perfila

Transparencia: Explicacoes sobre como o sistema derecomendacao trabalha podem ser fornecidas explicitamentelistando as caracterısticas do conteudo ou descricoes quefizeram um ıtem estar presente na lista de recomendacoes.b

Novos Itens: Sao capazes de recomendar itens ainda naoavaliados por qualquer usuarioc

aKantor et al., “Recommender systems handbook”.bIbid.cIbid.

11 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 12: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

DefinicaoColeta de InformacoesClassificacao

Filtragem por Conteudo

Desantagens

Analise Limitada de Conteudo: Nenhum sistema desse tipopode fornecer recomendacoes adequadas se o conteudoanalisado nao contem informacao suficiente para diferenciar ositens que o usuario gosta daqueles que ele nao gostaa

aKantor et al., “Recommender systems handbook”.

12 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 13: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

DefinicaoColeta de InformacoesClassificacao

Filtragem por Conteudo

Desantagens

Superespecializacao: ”Problema da serendipidadea” paradestacar a tendencia destes sistemas de produzirrecomendacoes com um limitado grau de novidadeb

Novos Usuarios: Muitas recomendacoes sao necessariasantes que o sistema possa realmente entender as preferenciasdo usuario e fornecer recomendacoes precisas.c

aFaculdade de fazer descobertas afortunadas por acidente.bKantor et al., “Recommender systems handbook”.cIbid.

13 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 14: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

DefinicaoColeta de InformacoesClassificacao

Filtragem Colaborativa

O sistema recomenda ao usuario ativo itens relacionados a outrosusuarios com gostos semelhantes. A similaridade de gostos entredois usuarios e calculada baseado na similaridade do historico deavaliacao daqueles usuarios.2

2Kantor et al., “Recommender systems handbook”.14 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 15: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

DefinicaoColeta de InformacoesClassificacao

Filtragem Colaborativa

Vantagens

Simplicidade de Implementacao: Em sua forma maissimples, apenas um parametro (o numero de vizinhos usadosna predicao) necessita de calibracao;a

Estabilidade: Sao pouco afetados por constantes adicoes deusuarios, ıtens e avaliacoes, fato tipicamente observado emaplicacoes comerciais de grande porte. Alem disso, mesmoque poucas avaliacoes sejam fornecidas para um novo item,apenas a similaridade entre este e outros ja presentes nosistema precisam ser computadas.b

aKantor et al., “Recommender systems handbook”.bIbid.

15 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 16: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

DefinicaoColeta de InformacoesClassificacao

Filtragem Colaborativa

Desantagens

Problema do primeiro avaliador: Quando um novo itemaparece no banco de dados nao existe maneira deste serrecomendado para o usuario ate que mais informacoes sejamobtidas atraves de outro usuario.a

Problema de pontuacoes esparsas: Caso o numero deusuarios seja pequeno em relacao ao volume de informacoesno sistema existe um grande risco das pontuacoes tornarem-semuito esparsas.b

aCazella e REATEGUI, “Sistemas de Recomendacao”.bIbid.

16 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 17: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

DefinicaoColeta de InformacoesClassificacao

Filtragem Colaborativa

Desantagens

Similaridade: caso um usuario tenha gostos que variam donormal este tera dificuldades para encontrar outros usuarioscom gostos similares, sendo assim suas recomendacoes podemse tornar pobres.a

aCazella e REATEGUI, “Sistemas de Recomendacao”.

17 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 18: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

DefinicaoColeta de InformacoesClassificacao

Filtragem Hıbrida

Filtragem Hıbrida

Estes sistemas de recomendacao sao baseados na combinacao dastecnicas mencionadas anteriormente. Um sistema hıbrido queutiliza as tecnicas A e B tenta utilizar as vantagens da tecnica Apara corrigir as desvantagens da tecnica B. Dadas duas ou maistecnicas basicas, muitas combinacoes podem ser propostas paracriar um novo sistema hıbrido de recomendacao.

18 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 19: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

Reuso de Componentes

PARSEWeb

PARSEWeb3 e um exemplo de sistema de recomendacao parareuso de componentes de software

Auxilia os usuarios a codificar uma sequencia de invocacoes(chamadas) de metodos que retornem uma instancia de umaclasse Y dada uma instancia da classe X

Pede como entrada uma query do tipo X −→ Y

Retorna o trecho de codigo fonte com a implementacao deinteresse para o desenvolvedor

Classifica os resultados (sequencias de chamadas demetodos) de acordo com a sua frequencia de uso etamanho (quantidade de linhas de codigo)

Utiliza o Google Code Search Engine (desativado)3Thummalapenta e Xie, “Parseweb: a programmer assistant for reusing open

source code on the web”.19 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 20: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

Reuso de Componentes

Cria um grafo utilizando como nos os comandos no codigofonte

As arestas representam o controle de fluxo entre os comandos(if, for, while, dentre outros)

Cada sequencia de chamadas corresponde a um caminhodentro do grafo

A ordem das chamadas de metodo (nos internos do caminho)nao interferem no calculo da similaridade

Utiliza calculo de ”distancia”para a similaridade dos caminhos(caminhos que diferem em ate x nos sao consideradossimilares)

20 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 21: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

Reuso de Componentes

PARSEWeb - screenshot

Figura: Tela inicial do PARSEWeb

21 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 22: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

Reuso de Componentes

PARSEWeb - screenshot

Figura: Entrada de Dados do PARSEWeb

22 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 23: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

Reuso de Componentes

PARSEWeb - screenshot

Figura: Recomendacoes do PARSEWeb

23 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 24: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

Reuso de Componentes

Duvidas??? Perguntas???

24 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 25: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

Referencias I

[1] Satnam Alag e Richard MacManus. Collective intelligence inaction. Manning, 2009.

[2] Sılvio Cesar Cazella e Eliseo Berni REATEGUI. “Sistemas deRecomendacao”. Em: XXV Congresso da Sociedade Brasileirade Computacao. 2005.

[3] Paul B Kantor et al. “Recommender systems handbook”. Em:(2010).

[4] Daniel Lew et al. Memory-based algorithms. Online. Acessadoem 26 de Fevereiro de 2013. 2013. url:http://www.cs.carleton.edu/cs_comps/0607/

recommend/recommender/memorybased.html.

25 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 26: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

Referencias II

[5] Daniel Lew et al. Model-based algorithms. Online. Acessadoem 26 de Fevereiro de 2013. 2013. url:http://www.cs.carleton.edu/cs_comps/0607/

recommend/recommender/modelbased.html.

[6] Paul Resnick, Hal R Varian e Guest Editors. “RecommenderSystems”. Em: Communications of the ACM 40.3 (1997).Ed. por Max Chevalier, pp. 56–58. issn: 00010782. doi:10.1145/245108.245121. arXiv:1202.1112v1. url: http://portal.acm.org/citation.cfm?doid=245108.245121.

[7] Martin Robillard, Robert Walker e Thomas Zimmermann.“Recommendation systems for software engineering”. Em:Software, IEEE 27.4 (2010), pp. 80–86.

26 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 27: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

Referencias III

[8] Toby Segaran. Programming collective intelligence: buildingsmart web 2.0 applications. O’Reilly Media, Incorporated,2007.

[9] Suresh Thummalapenta e Tao Xie. “Parseweb: a programmerassistant for reusing open source code on the web”. Em:Proceedings of the twenty-second IEEE/ACM internationalconference on Automated software engineering. ACM. 2007,pp. 204–213.

27 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software

Page 28: Sistemas de Recomendação e Evolução de Software

MotivacaoSistemas de Recomendacao

AplicabilidadeReferencias

28 / 28 Leandro Soriano Ferreira MATE08 - Evolucao de Software