Recomendação

Os sistemas de recomendação com Collaborative Filtering (Filtragem Colaborativa) ajudam a sugerir itens relevantes analisando o comportamento de diferentes usuários ou itens similares. Existem duas abordagens principais: user-user e item-item.

Por exemplo, imagine que você gostou de um filme em uma plataforma de streaming. Com o método user-user, o sistema procura pessoas com gostos parecidos com os seus e sugere filmes que elas gostaram. Já no método item-item, ele pode sugerir um filme com base no que você acabou de assistir.

Esses métodos funcionam como uma espécie de "rede de amigos invisível", ajudando você a descobrir coisas novas que têm tudo a ver com o usuário.

Atualmente, apenas o modelo Collaborative Filtering está disponível, outros modelos serão desenvolvidos em breve.

EXEMPLO DE USO

uses
  URecommender;
  
procedure ExampleRecommender;
var
  vRecommender: TRecommender;
begin
  vRecommender := TRecommender.Create('C:\DelphAI\DelphAI\Datasets\MovieLens-100k\user_item_matrix.csv', 5, 20, TUserScoreAggregationMethod.amWeightedAverage, dmCosine, True, False);
  try
    ShowArray(vRecommender.RecommendFromUser(105));
    ShowArray(vRecommender.RecommendFromItem(4070));
  finally
    vRecommender.Free;
  end;
end;

GUIA DE CLASSES E MÉTODOS

TRecommender:

  • FDataset : TAIDatasetClassification; : acessa a base de dados atual contido no modelo.

  • procedure ClearDataset; : limpa o dataset.

  • constructor Create(aMatrixFile : String; aItemsToRecommendCount, aK : Integer; aAggregMethod : TUserScoreAggregationMethod = amWeightedAverage; aDistanceMethod : TDistanceMode = dmCosine; aCalculateItemDistanceOnCreate : Boolean = False; aHasHeader : Boolean = True); ou

  • constructor Create(aMatrix: TDataSet; aItemsToRecommendCount, aK : Integer; aAggregMethod : TUserScoreAggregationMethod = amWeightedAverage; aDistanceMethod : TDistanceMode = dmCosine; aCalculateItemDistanceOnCreate : Boolean = False); : cria o objeto com a base que será usada para treinamento.

    • aMatrixFile : caminho do arquivo CSV.

    • aMatrix : objeto TDataSet que contém os dados que serão usados para treinamento. Veja como deve ser a estrutura aqui.

    • aItemsToRecommendCount : quantidade máxima de itens que serão recomendados.

    • aAggregMethod : método de agregação dos usuários:

      • amMode : refere-se ao valor mais frequente em um conjunto de dados;

      • amWeightedAverage : média calculada atribuindo pesos diferentes a cada valor no conjunto de dados, de acordo com sua importância;

      • amSimpleSum : soma de todos os valores do conjunto de dados, sem aplicar nenhum peso ou fator adicional.

    • aDistanceMethod :

      • dmManhattan : mede a distância entre dois pontos, somando as diferenças absolutas em cada dimensão, como se fosse percorrida em linhas retas ao longo de uma grade;

      • dmEuclidean : calcula a distância em linha reta entre dois pontos no espaço, sendo a raiz quadrada da soma dos quadrados das diferenças entre as coordenadas;

      • dmCosine : mede a similaridade entre dois vetores com base no cosseno do ângulo entre eles, focando na direção, não na magnitude;

      • dmJaccard : avalia a similaridade entre conjuntos dividindo o tamanho da interseção pelo tamanho da união dos conjuntos;

      • dmPearson : mede a correlação linear entre duas variáveis, avaliando a força e a direção da relação entre elas.

    • aCalculateItemDistanceOnCreate : define se será calculada a matriz de distância do item na hora criação, utilizada apenas para recomendação por item. Caso não seja calculada na criação, será calculada na primeira predição por item.

    • aHasHeader : indica se tem cabeçalho no arquivo.

  • function RecommendFromItem(aItemID: Integer): TArray; : recomenda X itens a partir de um certo item cadastrado.

  • function RecommendFromItem(aItemInfo: TArray; aIDSearch : Integer = -1): TArray; : recomenda X itens a partir dos dados de um item que não esta no dataset.

  • function RecommendFromUser(aUserID: Integer): TArray; : recomenda X itens a partir de um certo usuário cadastrado.

  • function RecommendFromUser(aUserInfo: TArray; aIDSearch : Integer = -1): TArray; : recomenda X itens a partir dos dados de um usuário que não esta no dataset.

Last updated