Maison  >  Article  >  Java  >  ChatGPT Java : Comment créer un système de recommandation personnalisé

ChatGPT Java : Comment créer un système de recommandation personnalisé

王林
王林original
2023-10-27 08:39:34897parcourir

ChatGPT Java:如何构建一个个性化推荐系统

ChatGPT Java : Comment créer un système de recommandation personnalisé, des exemples de code spécifiques sont nécessaires

À l'ère actuelle de l'explosion de l'information, les systèmes de recommandation personnalisés sont devenus une technologie importante dans le domaine des affaires. En analysant le comportement et les intérêts historiques des utilisateurs, ces systèmes sont en mesure de fournir aux utilisateurs un contenu recommandé qui correspond à leurs préférences et besoins personnels. Cet article explique comment utiliser Java pour créer un système de recommandation personnalisé simple et fournit des exemples de code spécifiques.

  1. Collecte et prétraitement des données

Le cœur du système de recommandation personnalisé réside dans les données comportementales de l'utilisateur. Nous devons collecter l'historique de navigation des utilisateurs, leur comportement d'achat, leurs données d'évaluation, etc. En Java, une base de données peut être utilisée pour stocker et gérer ces données. Ce qui suit est un exemple de code simple qui se connecte à la base de données via Java JDBC et insère les données de l'historique de navigation de l'utilisateur :

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DataCollector {
    private static final String JDBC_URL = "jdbc:mysql://localhost:3306/recommendation_system";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "password";

    public static void main(String[] args) {
        try(Connection connection = DriverManager.getConnection(JDBC_URL, USERNAME, PASSWORD)) {
            String sql = "INSERT INTO user_browsing_history (user_id, item_id, timestamp) VALUES (?, ?, ?)";
            PreparedStatement statement = connection.prepareStatement(sql);

            // 假设有一个用户浏览了商品1和商品2
            statement.setInt(1, 1); // 用户ID
            statement.setInt(2, 1); // 商品ID
            statement.setTimestamp(3, new java.sql.Timestamp(System.currentTimeMillis())); // 事件时间戳
            statement.executeUpdate();

            statement.setInt(1, 1);
            statement.setInt(2, 2);
            statement.setTimestamp(3, new java.sql.Timestamp(System.currentTimeMillis()));
            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
  1. Calcul de similarité d'utilisateur

Afin d'obtenir des recommandations personnalisées, nous devons trouver d'autres utilisateurs ayant des intérêts similaires à l'utilisateur cible Utilisateur ou produit. Ici, nous pouvons utiliser un algorithme de filtrage collaboratif pour calculer la similarité entre les utilisateurs. Voici un exemple de code simple qui utilise la similarité cosinus pour calculer la similarité entre les utilisateurs :

import java.util.HashMap;
import java.util.Map;

public class SimilarityCalculator {
    public static void main(String[] args) {
        // 假设有两位用户
        Map<Integer, Map<Integer, Integer>> userItems = new HashMap<>();
        userItems.put(1, new HashMap<>());
        userItems.get(1).put(1, 5); // 用户1对商品1的评分是5
        userItems.get(1).put(2, 3); // 用户1对商品2的评分是3

        userItems.put(2, new HashMap<>());
        userItems.get(2).put(1, 4); // 用户2对商品1的评分是4
        userItems.get(2).put(2, 2); // 用户2对商品2的评分是2

        int userId1 = 1;
        int userId2 = 2;

        double similarity = calculateCosineSimilarity(userItems.get(userId1), userItems.get(userId2));
        System.out.println("用户1和用户2的相似度为:" + similarity);
    }

    private static double calculateCosineSimilarity(Map<Integer, Integer> user1, Map<Integer, Integer> user2) {
        double dotProduct = 0.0;
        double normUser1 = 0.0;
        double normUser2 = 0.0;

        for (Integer itemId : user1.keySet()) {
            if (user2.containsKey(itemId)) {
                dotProduct += user1.get(itemId) * user2.get(itemId);
            }
            normUser1 += Math.pow(user1.get(itemId), 2);
        }

        for (Integer itemId : user2.keySet()) {
            normUser2 += Math.pow(user2.get(itemId), 2);
        }

        return dotProduct / (Math.sqrt(normUser1) * Math.sqrt(normUser2));
    }
}
  1. Implémentation de l'algorithme de recommandation

Avec les résultats du calcul de similarité entre les utilisateurs, nous pouvons utiliser un algorithme de filtrage collaboratif basé sur le quartier pour faire des recommandations. Ce qui suit est un exemple de code simple qui génère des résultats de recommandation pour les utilisateurs cibles en fonction de la similitude entre les utilisateurs :

import java.util.*;

public class RecommendationEngine {
    public static void main(String[] args) {
        // 假设有3位用户
        Map<Integer, Map<Integer, Integer>> userItems = new HashMap<>();
        userItems.put(1, new HashMap<>());
        userItems.get(1).put(1, 5); // 用户1对商品1的评分是5
        userItems.get(1).put(2, 3); // 用户1对商品2的评分是3
        userItems.get(1).put(3, 4); // 用户1对商品3的评分是4

        userItems.put(2, new HashMap<>());
        userItems.get(2).put(1, 4); // 用户2对商品1的评分是4
        userItems.get(2).put(3, 2); // 用户2对商品3的评分是2

        userItems.put(3, new HashMap<>());
        userItems.get(3).put(2, 5); // 用户3对商品2的评分是5
        userItems.get(3).put(3, 2); // 用户3对商品3的评分是2

        int targetUserId = 1;

        Map<Integer, Double> recommendItems = generateRecommendations(userItems, targetUserId);
        System.out.println("为用户1生成的推荐结果为:" + recommendItems);
    }

    private static Map<Integer, Double> generateRecommendations(Map<Integer, Map<Integer, Integer>> userItems, int targetUserId) {
        Map<Integer, Double> recommendItems = new HashMap<>();
        Map<Integer, Integer> targetUserItems = userItems.get(targetUserId);

        for (Integer userId : userItems.keySet()) {
            if (userId != targetUserId) {
                Map<Integer, Integer> otherUserItems = userItems.get(userId);
                double similarity = calculateCosineSimilarity(targetUserItems, otherUserItems);

                for (Integer itemId : otherUserItems.keySet()) {
                    if (!targetUserItems.containsKey(itemId)) {
                        double rating = otherUserItems.get(itemId);
                        double weightedRating = rating * similarity;
                        recommendItems.put(itemId, recommendItems.getOrDefault(itemId, 0.0) + weightedRating);
                    }
                }
            }
        }

        return recommendItems;
    }

    private static double calculateCosineSimilarity(Map<Integer, Integer> user1, Map<Integer, Integer> user2) {
      // 略,与上一个代码示例中的calculateCosineSimilarity()方法相同
    }
}

Grâce aux étapes ci-dessus, nous pouvons utiliser Java pour créer un système de recommandation personnalisé simple. Bien entendu, ce n’est que la base d’un système de recommandation personnalisé, et il reste encore beaucoup de place à l’optimisation et à l’expansion. J'espère que cet article vous aidera à comprendre le processus de création d'un système de recommandation personnalisé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn