ホームページ >Java >&#&チュートリアル >ChatGPT Java: パーソナライズされたレコメンデーション システムを構築する方法

ChatGPT Java: パーソナライズされたレコメンデーション システムを構築する方法

王林
王林オリジナル
2023-10-27 08:39:34999ブラウズ

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

ChatGPT Java: パーソナライズされたレコメンデーション システムを構築する方法、具体的なコード例が必要です

今日の情報爆発の時代において、パーソナライズされたレコメンデーション システムは重要な問題となっています。ビジネス分野では重要な技術です。これらのシステムは、ユーザーの過去の行動や興味を分析することで、ユーザーの個人的な好みやニーズに合った推奨コンテンツをユーザーに提供できます。この記事では、Java を使用してシンプルなパーソナライズされたレコメンデーション システムを構築する方法を紹介し、具体的なコード例を示します。

  1. データ収集と前処理

パーソナライズされたレコメンデーション システムの中核は、ユーザーの行動データです。ユーザーの過去の閲覧記録、購買行動、評価データなどを収集する必要があります。 Java では、データベースを使用してこのデータを保存および管理できます。以下は、Java JDBC 経由でデータベースに接続し、ユーザーの閲覧履歴データを挿入する簡単なコード例です。

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. ユーザー類似度の計算

パーソナライゼーションを実現するため推奨事項として、ターゲット ユーザーと同様の関心を持つ他のユーザーまたは製品を見つける必要があります。ここでは、協調フィルタリング アルゴリズムを使用して、ユーザー間の類似性を計算できます。以下は、コサイン類似度を使用してユーザー間の類似度を計算する簡単なコード例です。

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. 推奨アルゴリズムの実装

ユーザー間の類似度を使用して、計算結果に基づきます。 、近隣ベースの協調フィルタリング アルゴリズムを使用して推奨を行うことができます。以下は、ユーザー間の類似性に基づいてターゲット ユーザーに対する推奨結果を生成する簡単なコード例です。

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()方法相同
    }
}

上記の手順を通じて、Java を使用して単純なパーソナライズされた推奨システムを構築できます。もちろん、これはパーソナライズされたレコメンデーション システムの基礎にすぎず、最適化と拡張の余地はまだたくさんあります。この記事が、パーソナライズされたレコメンデーション システムを構築するプロセスを理解するのに役立つことを願っています。

以上がChatGPT Java: パーソナライズされたレコメンデーション システムを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。