Heim > Java > javaLernprogramm > Hauptteil

ChatGPT Java: So erstellen Sie ein personalisiertes Empfehlungssystem

王林
Freigeben: 2023-10-27 08:39:34
Original
902 Leute haben es durchsucht

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

ChatGPT Java: Für den Aufbau eines personalisierten Empfehlungssystems sind spezifische Codebeispiele erforderlich

Im heutigen Zeitalter der Informationsexplosion sind personalisierte Empfehlungssysteme zu einer wichtigen Technologie im Geschäftsfeld geworden. Durch die Analyse des historischen Verhaltens und der Interessen der Benutzer sind diese Systeme in der Lage, den Benutzern empfohlene Inhalte bereitzustellen, die ihren persönlichen Vorlieben und Bedürfnissen entsprechen. In diesem Artikel wird erläutert, wie Sie mit Java ein einfaches personalisiertes Empfehlungssystem erstellen und spezifische Codebeispiele bereitstellen.

  1. Datenerhebung und -vorverarbeitung

Der Kern des personalisierten Empfehlungssystems sind die Verhaltensdaten des Nutzers. Wir müssen die historischen Browsing-Daten, das Kaufverhalten, die Bewertungsdaten usw. der Benutzer erfassen. In Java kann eine Datenbank zum Speichern und Verwalten dieser Daten verwendet werden. Das Folgende ist ein einfaches Codebeispiel, das über Java JDBC eine Verbindung zur Datenbank herstellt und die Browserverlaufsdaten des Benutzers einfügt:

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();
        }
    }
}
Nach dem Login kopieren
  1. Berechnung der Benutzerähnlichkeit

Um personalisierte Empfehlungen zu erhalten, müssen wir andere Benutzer mit ähnlichen Interessen finden der Zielbenutzer Benutzer oder Produkt. Hier können wir einen kollaborativen Filteralgorithmus verwenden, um die Ähnlichkeit zwischen Benutzern zu berechnen. Das Folgende ist ein einfaches Codebeispiel, das Kosinusähnlichkeit verwendet, um die Ähnlichkeit zwischen Benutzern zu berechnen:

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));
    }
}
Nach dem Login kopieren
  1. Implementierung des Empfehlungsalgorithmus

Mit den Ergebnissen der Ähnlichkeitsberechnung zwischen Benutzern können wir einen nachbarschaftsbasierten kollaborativen Filteralgorithmus verwenden, um Empfehlungen abzugeben. Das Folgende ist ein einfaches Codebeispiel, das Empfehlungsergebnisse für Zielbenutzer basierend auf der Ähnlichkeit zwischen Benutzern generiert:

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()方法相同
    }
}
Nach dem Login kopieren

Durch die obigen Schritte können wir Java verwenden, um ein einfaches personalisiertes Empfehlungssystem zu erstellen. Dies ist natürlich nur die Basis eines personalisierten Empfehlungssystems und es gibt noch viel Raum für Optimierung und Erweiterung. Ich hoffe, dass dieser Artikel Ihnen hilft, den Prozess des Aufbaus eines personalisierten Empfehlungssystems zu verstehen.

Das obige ist der detaillierte Inhalt vonChatGPT Java: So erstellen Sie ein personalisiertes Empfehlungssystem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!