Predicting product demand with cluster-based product cross-elasticity estimation

By using a cluster-based price elasticity estimation method, products are clustered and their cross elasticity values ​​are refined, solving the problem of difficult cross elasticity estimation in retail forecasting systems. This enables accurate prediction of the impact of product price changes and improves retailers' inventory and pricing decision-making capabilities.

CN121844336APending Publication Date: 2026-04-10ORACLE INT CORP
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-08-15
Publication Date
2026-04-10

AI Technical Summary

Technical Problem

Retail forecasting systems struggle to accurately estimate the impact of product price changes on the sales of similar goods, particularly due to difficulties in estimating cross elasticity, collinearity issues, and economic constraints, leading to inaccurate predictions of product demand based on price changes.

Method used

A cluster-based price elasticity estimation method is adopted. Products are clustered using natural language processing and cosine similarity algorithm to generate product-level demand forecasting models. Cross elasticity values ​​are refined and cluster-level elasticity estimation is applied to generate product demand forecasts.

Benefits of technology

It improves the accuracy of predicting the impact of product price changes, helps retailers optimize inventory and pricing strategies, and enhances retailers' decision-making capabilities.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121844336A_ABST
    Figure CN121844336A_ABST
Patent Text Reader

Abstract

Techniques are disclosed for generating a retail forecasting model from estimated elasticity values based on a cluster of products to forecast the impact of price changes on the demand of a collection of products. A system generates cluster-based price elasticity values for a set of products by applying a set of regression elasticity estimation algorithms to a set of product data and clustering the products based on product descriptions and estimated price elasticity values. The system generates a retail forecast model using a cluster-based price resilience value of a product.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates to product demand forecasting. Specifically, this disclosure relates to applying cluster-based cross-resilience estimation to product demand models to generate product-level demand forecasts. Background Technology

[0002] When retailers change the price of a product, they tend to sell more or less depending on whether the change is a price reduction or an increase. For example, a price discount tends to result in more product being sold. A higher price tends to result in fewer product being sold. Furthermore, the sales of similar products tend to be affected. For example, a price increase for one brand of butter is likely to lead to increased sales of another brand of butter. Retail forecasting systems typically provide estimates of the impact of price changes on the sales of the item itself. This price response is called the item's own-price or self-price elasticity. This means that, for example, a retailer planning to lower the price of an item for a promotion will have an estimate of the amount by which sales of that item will increase during the promotion. However, many retail forecasting systems do not provide estimates of the impact of price changes on the sales of other items. Estimates of the impact of a price change on the sales of similar items are called cross-elasticity estimates. Without cross-elasticity estimates, retailers promoting a particular item will not know the extent to which sales of similar items will change. Therefore, retailers cannot determine the full costs and benefits of price changes, such as whether the price change will increase net income or profit margins.

[0003] Due to the difficulty of making these estimates, retail forecasting systems typically do not estimate cross elasticities. Even systems that generate estimates struggle to produce accurate estimates across a large number of products. Estimating cross elasticities involves problems that do not exist when estimating price elasticities. First, retailers and product demand models struggle to identify the groups of items for which they estimate cross elasticities. Retail categories often have hundreds or even thousands of products, each associated with a unique stock unit (SKU). Attempting to estimate cross elasticity values ​​for hundreds of SKUs has been computationally impossible until now, as there are thousands of potential cross elasticity values ​​to estimate. Data limitations, such as a lack of sales information and incomplete product descriptions, often result in models lacking information to estimate cross elasticity values ​​for many product pairs. Even when there is sufficient information to estimate many cross elasticity values, estimating a large number of cross elasticity values ​​leads to many cases where cross elasticity estimates are incorrectly identified as significant.

[0004] Another problem that arises when attempting to calculate cross elasticity is that the magnitude of the cross-price effect tends to be smaller than the magnitude of the self-price effect. This smaller cross-price effect occurs both because demand shifting to other SKUs can be spread across multiple SKUs, and because some demand can be lost. Most SKU pairs are not perfect substitutes, so a price change in one will only result in a limited amount of substitution shifting to other SKUs. When multiple SKUs are substitutes, only a limited amount of demand is available to shift to each similar SKU. Price changes also cause consumers to make more or fewer purchases across the entire category. A price increase for an SKU typically has three effects. First, it reduces the number of units sold for that SKU by a certain amount. Second, some demand for that SKU will shift to other SKUs. Third, some demand in the category will be lost as consumers completely abandon some purchases. This lost demand in the category will be reflected in the self-price elasticity estimate, but not in the cross elasticity estimate. Given the small magnitude of the cross-price effect, conventional models struggle to generate accurate cross elasticity estimates.

[0005] Another problem that arises when attempting to calculate cross elasticity is called collinearity. Collinearity occurs because retailers often change the prices of similar items simultaneously. Retailers may run promotions on all items of a brand according to a regular schedule. Furthermore, retailers may run promotions on a group of similar items during certain holiday periods. When price changes for multiple items occur concurrently, it may be difficult to determine which item's price change led to changes in sales of other items. When high collinearity exists between price series, standard regression methods may provide unreliable results or may not produce any results at all.

[0006] Another problem that arises when attempting to estimate cross elasticity is reconciling elasticity estimates across multiple items with economic constraints. This occurs due to “noise” in the initial estimates and limitations imposed by the types of economically possible outcomes. The three problems listed above make the estimation more difficult and increase the amount of noise in the initial cross elasticity estimates.

[0007] The methods described in this section are possible methods, but not necessarily methods that have been previously conceived or adopted. Therefore, unless otherwise stated, no method described in this section should be assumed to qualify as prior art simply because it is included in this section. Attached Figure Description

[0008] In the accompanying drawings, embodiments are illustrated by way of example rather than limitation. It should be noted that references to "embodiment" or "an embodiment" in this disclosure do not necessarily refer to the same embodiment, and they mean at least one. In the drawings:

[0009] Figure 1 The illustration shows a system according to one or more embodiments;

[0010] Figure 2A-2C The illustration shows a set of example operations for predicting product demand using cluster-based product price elasticity estimation, according to one or more embodiments.

[0011] Figures 3A-3C The illustration depicts a set of example operations for predicting product demand using cluster-based product price elasticity estimation, according to one or more embodiments; and

[0012] Figure 4 A block diagram illustrating a computer system according to one or more embodiments is shown. Detailed Implementation

[0013] In the following description, numerous specific details are set forth for purposes of explanation in order to provide a thorough understanding. One or more embodiments may be practiced without these specific details. Features described in one embodiment may be combined with features described in different embodiments. In some examples, well-known structures and devices are described in block diagram form to avoid unnecessarily obscuring the invention.

[0014] 1. General Overview

[0015] 2. System Architecture

[0016] 3. Model product demand using cluster-based price elasticity estimates.

[0017] 4. Example Implementation

[0018] 5. Computer networks and cloud networks

[0019] 6. Miscellaneous; Extension

[0020] 7. Hardware Overview

[0021] 1. General Overview

[0022] One or more embodiments generate retail forecasting models from product-cluster-based estimated elasticity values ​​to predict the impact of price changes on demand for a set of products. The system generates cluster-based price elasticity values ​​for the product set. The system uses the cluster-based price elasticity values ​​of the products to generate the retail forecasting model. The system generates cluster-based price elasticity values ​​by performing operations to cluster products based on product descriptions and preliminary elasticity values, and then determining estimated elasticity values ​​based on the clustered products.

[0023] One or more embodiments initially cluster products based on product description attributes. For example, retailers typically use Stock Units (SKUs) to provide text-based product descriptions. SKU descriptions include words, abbreviations, and codes used to describe the product. The system applies a Natural Language Processing (NLP) model and a cosine similarity algorithm to create NLP-based product clusters. The NLP model can apply a Term Frequency-Inverse Document Frequency (TF-IDF) algorithm to generate a numerical frequency matrix that includes the TF-IDF values ​​of terms in the SKU product descriptions. The NLP model applies a cosine similarity algorithm to generate text similarity scores for each pair of products across multiple product categories based on the TF-IDF values. The system then clusters the products in the NLP-based product clusters based on the text similarity scores.

[0024] One or more embodiments generate resilience-based sub-clusters within an NLP-based product cluster. The system generates resilience-based sub-clusters by applying product-level regression or other resilience estimation regression algorithms to the NLP-based cluster, creating an initial set of product-level resilience estimates for key / target product pairs. The system then compares the product-level resilience estimates for key / target product pairs within the NLP-based cluster to cluster the target products together into sub-clusters with product-level resilience estimates that satisfy a specific clustering threshold. The system generates cluster-based resilience estimates by applying a cluster-level resilience estimation regression algorithm to the sub-clusters. The system then distributes the cluster-based resilience values ​​to each member of the sub-cluster, modifying the cluster-based values ​​based on the demand attributes of each member's products. For example, if a sub-cluster includes two products, and the total demand for the products over a specific time interval is 1000 units, if one product is associated with 300 units and the other with 700 units, the system can distribute the cluster-level resilience estimates to the cluster members by multiplying the cluster-level resilience value of one product by 0.7 and the cluster-level resilience value of the other product by 0.3. The result is the product-level elasticity value that takes into account collinearity of cluster members, or the impact of modifying the prices of two cluster members simultaneously.

[0025] One or more embodiments further refine the cluster-based elasticity values ​​of sub-cluster members based on the attributes of the cluster members. For example, the system modifies the cross elasticity of a product based on the magnitude of its self-price elasticity. The system reduces the refined cross elasticity value of a product with a relatively low estimated self-price elasticity value. The system also reduces the refined cross elasticity value of a product based on determining that the magnitude of demand for the product is relatively low. For example, a product with demand of 100 units in a specific time interval will have a lower cross elasticity than a product with demand of 10,000 units sold in a specific time interval (e.g., a change in the price of this product will have a reducing effect on the demand for other products). The system also reduces the refined cross elasticity value of a product based on the existence of a relatively large number of substitute products. For example, a price change of a product associated with three substitute products will have a smaller impact on the demand for the three substitute products than a price change of a product associated with only one substitute product.

[0026] One or more embodiments apply a product demand model, generated based on refined product-level price elasticity values, to price data for a set of products to predict demand for one or more products in that set. For example, a retailer may store the prices of all products sold by the retailer in a product management platform. The retailer can provide price data (including proposed price modifications to the product set) to the product demand model. The product demand model predicts demand for the product with the changed price and for its corresponding substitute products. According to one example, the model identifies the retailer's substitute products based on refined product-level price elasticity values. According to another example, the model can recommend prices for products that meet given criteria. For example, the model can recommend prices to maximize the retailer's profit or to move inventory within a specified time frame.

[0027] One or more embodiments described in this specification and / or set forth in the claims may not be included in this "General Overview" section.

[0028] 2. System Architecture

[0029] A system according to one or more embodiments includes a product management platform 110 and a data storage library 120. In one or more embodiments, system 100 may include a product management platform 110 and a data storage library 120. Figure 1 The components shown may have more or fewer components. Figure 1 The components shown can be located locally or remotely to each other. Figure 1 The components shown can be implemented in software and / or hardware. Each component can be distributed across multiple applications and / or machines. Multiple components can be combined into an application and / or machine. Operations described with respect to one component can be performed alternatively by another component.

[0030] In one or more embodiments, product management platform 110 refers to hardware and / or software configured to perform the operations described herein for predicting product demand based on cluster-based product price elasticity estimation. References below... Figure 2A-2C Describe an example of an operation that uses cluster-based product price elasticity estimation to predict product demand.

[0031] In this embodiment, the product management platform 110 is implemented on one or more digital devices. The term "digital device" generally refers to any hardware device that includes a processor. A digital device can refer to a physical device that executes an application or virtual machine. Examples of digital devices include computers, tablet computers, laptop computers, desktop computers, netbooks, servers, web servers, network policy servers, proxy servers, general-purpose machines, function-specific hardware devices, hardware routers, hardware switches, hardware firewalls, hardware network address translation (NAT), hardware load balancers, mainframes, televisions, content receivers, set-top boxes, printers, mobile handsets, smartphones, personal digital assistants ("PDAs"), wireless receivers and / or transmitters, base stations, communication management equipment, routers, switches, controllers, access points, and / or client devices.

[0032] Product management platform 110 includes a product data collection engine 111 to obtain data from one or more of manufacturers 131, inventory 134 (or other product storage locations), or retailers 135. Manufacturer 131 manufactures products 132, including products 133a-133n. Products 132 are stored in inventory location 134 or sent directly to retailer 135. Consumers 136 purchase products 132 from retailer 135. Retailer 135 tracks products by assigning unique stock keeping units (SKUs) to them. Retailer 135 stores SKUs as product data 121. Product data 121 may include a unique tracking number for each product, a text description (which may include one or more words, abbreviations, and codes), a serial number, and a model number. Inventory location 134 and retailer 135 generate inventory data 122 and sales data 123. Inventory data 122 and sales data 123 include time-series data. For example, retailer 135 may track daily or weekly sales data, including product prices and quantities sold.

[0033] Product data transformation engine 112 applies Natural Language Processing (NLP) model 113 to a set of sales data corresponding to a specific set 132 of products. For example, a user can interact with user interface 118 to select one or more products, and the user can enter price changes for these products to initiate demand forecasts for these products and any alternative products. In one or more embodiments, interface 118 refers to hardware and / or software configured to facilitate communication between the user and product management platform 110. Interface 118 renders user interface elements and receives input via these user interface elements. Examples of interfaces include graphical user interface (GUI), command line interface (CLI), haptic interface, and voice command interface. Examples of user interface elements include checkboxes, radio buttons, drop-down lists, list boxes, buttons, toggles, text fields, date and time pickers, command lines, sliders, pages, and forms.

[0034] In this embodiment, the different components of interface 118 are specified using different languages. The behavior of user interface elements is specified using a dynamic programming language (such as JavaScript). The content of user interface elements is specified using a markup language (such as Hypertext Markup Language (HTML) or XML User Interface Language (XUL)). The layout of user interface elements is specified using a style sheet language (such as Cascading Style Sheets (CSS)). Alternatively, interface 118 may be specified using one or more other languages ​​(such as Java, C, or C++).

[0035] The system obtains a product description for each product. For example, if the sales data includes SKUs, the system obtains the product description associated with each SKU from product data 121.

[0036] In one embodiment, the NLP model applies the Term Frequency-Inverse Document Frequency (TF-IDF) algorithm to assign weights to words, abbreviations, and codes within a SKU. TF-IDF is a numerical statistical algorithm used to evaluate the importance of words, abbreviations, or codes in distinguishing one SKU from another. For example, two SKUs might target two different milk products. One SKU includes the term "MILK-CHOC". The other SKU includes the term "MILK-STRW". The TF-IDF algorithm assigns higher weights to the codes (i.e., "CHOC" and "STRW") than to the word "milk" because "MILK" exists in both SKUs, and because the abbreviations "CHOC" and "STRW" each exist only in one of the SKUs. In other words, the unique codes within the SKU are more useful for distinguishing products than the word "MILK".

[0037] According to one embodiment, the formula for calculating the TF-IDF of a term in a collection of SKUs is: TF (Term Frequency) * IDF (Inverse Document Frequency). Term frequency measures how frequently a term appears in a particular SKU. It is calculated as the number of times the term appears in the SKU divided by the total number of terms in the SKU. The term frequency component generates a value indicating the importance of the term in the SKU. Inverse document frequency measures how rare or unique a term is across the entire collection of SKUs. According to one embodiment, the IDF value is calculated as the logarithm of the total number of SKUs divided by the number of documents containing the term, and then the reciprocal of the result is taken.

[0038] By calculating the TF-IDF score for each term in the SKU, the system generates a value representing the importance of that term within the entire set of SKUs. According to one embodiment, calculating the TF-IDF values ​​of terms in the set of SKUs transforms the SKUs into a numerical feature matrix. Each row of the numerical feature matrix represents an SKU, and each column represents a term within the SKU and its corresponding TF-IDF score. This matrix can then be used as input to a clustering-type machine learning model.

[0039] According to one or more embodiments, the system applies a cosine similarity algorithm to the TF-IDF value of each SKU to generate a similarity score for each SKU. For example, the system may represent an SKU as a set of terms and weights corresponding to each term. The system may compare two SKUs based on (a) the set of matching terms and (b) the weights assigned to the terms. The system may select a specific SKU and generate a cosine similarity value for another set of SKUs. Another set of SKUs may be selected based on the presence of identical or related terms in the product description of the SKUs. According to one embodiment, the cosine similarity score of a specific SKU B compared to a key SKU A is calculated by applying the following formula:

[0040]

[0041] The product clustering engine 114 generates NLP-based product clusters 126 by applying a set of rules to a dataset that includes SKUs, sales data, and similarity scores. The system clusters SKUs together based on (a) revenue exceeding a threshold revenue value within a specific time period and (b) cosine similarity scores closer to the threshold percentage of the SKU. For example, the system can identify a set of 300 SKUs in the category “yogurt.” The system can cluster ten SKUs out of the 300 SKUs together based on the following criteria: (a) the SKUs generated at least $5,000 in revenue during the given time period, and (b) the SKUs have a cosine similarity score within 0.05, corresponding to the 95th percentile.

[0042] According to an alternative embodiment, NLP model 113 includes a machine learning model. The NLP machine learning model receives SKU description terms as input data and generates embeddings for the SKUs. Training the NLP-type machine learning model includes preprocessing the dataset. The system collects a large dataset of SKUs. The system tokenizes the SKUs by dividing them into distinct words, abbreviations, and codes. The system transforms the numerical representations of the SKUs into dense vectors, or embeddings. The embeddings capture the semantic relationships between the words, abbreviations, and codes. The embeddings represent the words, abbreviations, and codes of the SKUs in a continuous vector space. The system trains the NLP-type machine learning model to generate embeddings for the SKUs such that embeddings for more closely related SKUs are closer to each other in the continuous vector space than embeddings for less closely related SKUs.

[0043] The system applies a clustering-type machine learning model to a collection of data generated by an NLP-type model, such as numerical matrices generated by a TF-IDF-type model or embeddings generated by an NLP-type machine learning model, to generate product clusters. For example, the system can apply trained clustering algorithms such as K-Means, Hierarchical Clustering, DBSCAN (density-based spatial clustering with noise), and Gaussian Mixture Models (GMM). The clustering machine learning model assigns each data point, or each embedding representing a SKU, to the nearest cluster center based on a distance metric (such as Euclidean distance) from the data point to the cluster center. According to one or more embodiments, if a data point is not within a threshold distance from a cluster center, the model designates that data point as a new cluster center. For example, in a K-Means-type machine learning model, the system assigns each data point to the nearest centroid. The system then calculates a new centroid based on the mean of the point assigned to it. This process iterates until the change in centroids no longer exceeds a threshold change level, or until a specified maximum number of iterations is reached.

[0044] Product clustering engine 114 applies price elasticity estimation regression algorithm 124 to an NLP-based product cluster to generate initial self-price and cross elasticity values ​​for each product in the product set. The price elasticity estimation regression algorithm includes sales and demand values ​​and coefficients for key products, as well as sales and demand values ​​and coefficients for target products. Specifically, the price elasticity estimation regression algorithm includes: (a) a key sales volume value, representing the total sales volume of a key product at a specific retail location (“store”) during a given time interval; (b) an offset value; (c) a key product self-price coefficient; (d) a key product price value, representing the average price of the key product at the store during that time interval; (e) a basic demand coefficient; (f) an average sales volume value, representing the average sales volume of the key product at the store over a duration comprising multiple time intervals (e.g., if the time interval is one week, then the value is calculated for a full year or more than 52 weeks); (g) a seasonality coefficient; (h) a total sales volume value, representing the total sales volume of all goods at a specific store during that time interval; (i) a target product sales coefficient; (j) a target product sales volume value, representing the sales volume of the target product at the store during that time interval; (k) a cross-price coefficient; and (l) a price value, representing the average price of the target product at the store during that time interval. The system performs regression on an input dataset containing sales data of SKUs from a specific product cluster to determine the values ​​of the coefficients, including the key product self-price coefficient and the target product cross-price coefficient. In one or more embodiments, the self-price coefficient corresponds to the self-price elasticity value, which represents the relationship between changes in product price and changes in product demand, and the cross-price coefficient corresponds to the cross-elasticity value, which represents the relationship between changes in the price of the key product and changes in the demand for the target product.

[0045] The product clustering engine 114 generates resilient sub-clusters of target products based on determining the following: (a) the key product has a negative self-price coefficient value, (b) the key product's self-price coefficient value exceeds a threshold value, (c) the target product has a positive cross-price coefficient value, and (d) the target product's cross-price coefficient value exceeds a threshold value. For example, in an embodiment where the self-price coefficient value and cross-price coefficient value are values ​​between 0 and 1, the threshold for both could be 0.4 (e.g., -0.4 for the self-price coefficient and +0.4 for the cross-price coefficient). Alternatively, the thresholds for the self-price coefficient and the cross-price coefficient can be different. As an example, the threshold for the self-price coefficient could be 0.3 (i.e., "-0.3"), and the threshold for the cross-price coefficient could be 0.5.

[0046] The product data transformation engine 112 applies a cluster elasticity estimation regression algorithm 125 to generate a set of cluster-based self-price and cross elasticity estimates for each elasticity-based sub-cluster 127. For each product in each elasticity-based product cluster, the product data transformation engine 112 applies a modified cluster-based elasticity value to that product to generate a customized cluster-based elasticity value for that product. The product data transformation engine 112 modifies the cluster-based elasticity value for each product based on the proportion of the product's sales relative to other products in the elasticity-based product cluster.

[0047] The price elasticity refinement engine 115 performs a set of refinement operations on a customized set of cluster-based elasticity values. The price elasticity refinement engine 115 can impose constraints on cross-elasticity values ​​based on the self-price elasticity values ​​of key products. For example, the price elasticity refinement engine 115 can reduce the cross-elasticity value associated with products having low self-price elasticity values. In other words, for a product whose demand remains almost unchanged or unchanging due to a change in price, that product should not have a high cross-elasticity value with other products. A change in demand for the primary product is likely to result in little or no change in demand for substitute products.

[0048] Furthermore, the price elasticity refinement engine 115 can limit the cross elasticity of a product based on demand for the product. For example, if the demand for a product is 100 units over a time interval, then a price change for that product should not lead to a demand for substitute products exceeding 100 units.

[0049] Furthermore, the price elasticity refinement engine 115 can apply cross-elasticity limits based on the characteristics of other products or substitutes within the elastic product cluster of the key product. For example, if there are three other products in the elastic product cluster, then the change in demand among these three other products should not exceed the total demand for the key product. Additionally, since changes in product price result in some demand loss—or consumers who do not purchase the product and not its substitutes—the system can also limit the total change in demand among substitutes to less than the total demand for the key product. For example, if the demand for the key product is 100 units over a given time interval, then a price change in that product could result in a total demand of no more than 80 units for the three substitutes (10 units corresponding to customers predicted to purchase the key product at a higher price, and 10 units corresponding to lost demand), distributed among the three substitutes.

[0050] Product management platform 110 includes a demand forecasting engine 116 for predicting product demand based on product price elasticity estimates generated by product data transformation engine 112. Demand forecasting engine 116 uses refined product-level price elasticity values ​​for a set of products to create a demand forecasting model 128 to predict product demand for that set of products. For example, a user can access a GUI via user interface 118 to provide a set of price change data to product management platform 110. Demand forecasting engine 116 applies demand forecasting model 128 (trained with refined price elasticity values ​​for a set of products, including those associated with price changes) to price data that includes price change data and price data for other products that may not indicate price changes. Model 128 generates demand forecasts corresponding to (a) the product for which a price change is indicated, and (b) other products (such as substitute products) for which product data transformation engine 112 generates refined product-level cross elasticity values. According to one example, the user provides a proposed price change, and model 128 both (a) identifies substitute products and (b) predicts the demand change for substitute products.

[0051] Product management engine 117 generates instructions for manufacturers 131, inventory sites 134, and / or retailers 135 to manage production, product transfer, and / or product pricing based on forecasts generated by demand forecasting engine 116.

[0052] Further embodiments and / or examples of computer networks are described in Section 5, which is entitled “Computer Networks and Cloud Networks”.

[0053] In one or more embodiments, the data repository 120 is any type of storage unit and / or device for storing data (e.g., a file system, database, collection of tables, or any other storage mechanism). Additionally, the data repository 120 may include multiple different storage units and / or devices. These multiple different storage units and / or devices may or may not be of the same type or located at the same physical site. Furthermore, the data repository 120 may be implemented or executed on the same computing system as the product management platform 110. Alternatively, or additionally, the data repository 120 may be implemented or executed on a computing system separate from the product management platform 110. The data repository 120 may be coupled to the product management platform 110 via a direct connection or via network communication.

[0054] The information describing product data 121, inventory data 122, sales data 123, elasticity algorithms 124 and 125, clustering 126 and 127, and demand forecasting model 128 can be implemented in any component within system 100. However, for clarity and explanation purposes, this information is displayed within data storage 120.

[0055] 3. Model product demand using cluster-based price elasticity estimates.

[0056] Figure 2A-2C The illustration shows a set of example operations for modeling product demand using cluster-based price elasticity estimation according to one or more embodiments. Figure 2A-2C One or more operations shown can be modified, rearranged, or omitted entirely. Accordingly, Figure 1 The specific order of operations shown should not be construed as limiting the scope of one or more embodiments.

[0057] The system detects a trigger to initiate the process of generating price elasticity estimates (operation 202). The trigger can be automatically generated or user-generated. For example, a user can interact with a graphical user interface (GUI) to select one or more products for analysis. A user can request demand forecasts for products. According to one example, a user can interact with the GUI to generate candidate price changes for one or more products. According to another example, a user interacts with the GUI of a product management platform that allows users to set prices for goods at one or more retail locations. The trigger can be detecting when a user enters a proposed price change for one or more products. Upon detecting a proposed price change, without further user instruction, the system can automatically initiate operations to (a) estimate the elasticity values ​​of a set of products (including the products for which the price change is proposed) and (b) generate demand forecasts for one or more products in that set. Alternatively, the system can periodically initiate operations to determine cluster-based, refined elasticity estimates for a set of products. When a user enters a proposed price change for one or more products, the system can apply a previously generated demand forecasting model (trained using previously determined cluster-based, refined elasticity values) to predict the demand change associated with the user's proposed price change.

[0058] According to another example, triggering can involve detecting one or both of price changes and demand changes for one or more products in a set of product data. For example, a marketing platform might track the quantity of products sold and their prices over a period of time. The system can set threshold values ​​for one or both of the units sold and price changes to initiate (a) estimating the elasticity values ​​of the set of products (including those for which price changes and / or demand changes were detected), and (b) generating demand forecasts for one or more products. For example, the system might detect a 10% price change for a competitor's product. The system can generate and / or update estimates of the user's product's self-price elasticity and cross-price elasticity relative to the competitor's product. The system can also apply demand forecasting models to the product data (including elasticity estimates) to predict changes in demand for the user's product based on price changes in the competitor's product.

[0059] As another example, a manufacturing management platform can detect changes in the price and / or demand of one or more goods. The platform can then initiate estimates of the elasticity of the products manufactured by a manufacturer and demand forecasts, enabling the manufacturer to adjust production based on these forecasts.

[0060] The system obtains product sales data (Operation 204). The system can obtain product IDs, such as the SKU and price of the products sold by the retailer. Sales data includes product prices and the quantity of items sold over a period of time. According to one example, this collection of sales data includes sales data for thousands of products sold by a retailer from a specific retail location. According to another example, the sales data includes sales data for tens of thousands of products sold by a retailer from multiple different locations. According to yet another example, the sales data may include sales data for tens of thousands of products sold by multiple different retailers from multiple different locations.

[0061] The system applies a Natural Language Processing (NLP) model to the sales data set to generate a first set of product clusters (Operation 206). The system obtains a product description for each product. For example, if the sales data includes SKUs, then the system obtains a product description associated with each SKU. Product descriptions may include text content with words and abbreviations. For example, the product description for a specific strawberry milk product includes the text: “DANNON OIKOS TZ STRWBRY”. This description includes both human-understandable text (e.g., “DANNON OIKOS”), human-recognizable abbreviations that are not words or known abbreviations but are easily recognized by humans (e.g., “STRWBRY”), and abbreviations whose meaning is not obvious to humans (e.g., “TZ”). Another SKU may only include abbreviations. For example, a retailer may generate a product SKU with (a) an abbreviation of the company or brand name, (b) an alphanumeric code indicating the product model and / or color, (c) a code indicating the product size, and (d) a code indicating a specific variant of the model. Any human-understandable words and abbreviations may be omitted from the SKU.

[0062] In one embodiment, the NLP model applies the Term Frequency-Inverse Document Frequency (TF-IDF) algorithm to assign weights to words, abbreviations, and codes within a SKU. TF-IDF is a numerical statistical algorithm used to evaluate the importance of words, abbreviations, or codes in distinguishing one SKU from another. For example, two SKUs might target two different milk products. One SKU includes the term "MILK-C35Q." The other SKU includes the term "MILK-A456." The TF-IDF algorithm assigns a higher weight to the codes (i.e., "C35Q" and "A456") than to the word "milk" because "MILK" exists in both SKUs, and because each code exists only in one of the SKUs. In other words, the codes are more helpful in distinguishing the products than the word "MILK."

[0063] According to one embodiment, the formula for calculating the TF-IDF of terms in SKUs within an aggregate of SKUs is: TF (term frequency) * IDF (inverse document frequency).

[0064] Term frequency (IF) measures how frequently a term appears in a particular SKU. It is calculated as the number of times the term appears in the SKU divided by the total number of terms in the SKU. The IF component generates a value indicating the importance of the term in the SKU. Inverse document frequency (IDF) measures how rare or unique a term is across the entire collection of SKUs. According to one embodiment, the IDF value is calculated as the logarithm of the total number of SKUs divided by the number of documents containing the term, and then the reciprocal of the result is taken.

[0065] By calculating the TF-IDF score for each term in the SKU, the system generates a value representing the importance of that term within the entire set of SKUs. According to one embodiment, calculating the TF-IDF values ​​of terms in the set of SKUs transforms the SKUs into a numerical feature matrix. Each row of the numerical feature matrix represents an SKU, and each column represents a term within the SKU and its corresponding TF-IDF score. This matrix can then be used as input to a clustering-type machine learning model.

[0066] According to one or more embodiments, the system applies a cosine similarity algorithm to the TF-IDF value of each SKU to generate a similarity score for each SKU. For example, the system may represent an SKU as a set of terms and weights corresponding to each term. The system may compare two SKUs based on (a) the set of matching terms and (b) the weights assigned to the terms. The system may select a specific SKU and generate a cosine similarity value for another set of SKUs. Another set of SKUs may be selected based on the presence of identical or related terms in the product description of the SKUs. According to one embodiment, the cosine similarity score of a specific SKU B compared to a key SKU A is calculated by applying the following formula:

[0067]

[0068] The system further generates clusters by applying a set of rules to a dataset that includes SKUs, sales data, and similarity scores. The system clusters SKUs together based on (a) revenue exceeding a threshold revenue value within a specific time period and (b) a cosine similarity score closer to the threshold percentage of the SKU. For example, the system can identify a set of 300 SKUs in the category "Yogurt". The system can cluster ten SKUs out of these 300 SKUs together based on the following criteria: (a) the SKUs generated at least $5,000 in revenue during the given time period, and (b) the SKUs have a cosine similarity score within 0.05, corresponding to the 95th percentile. The system avoids including products that did not generate the threshold revenue within the given time interval in the product cluster.

[0069] According to an alternative embodiment, the system trains an NLP-type machine learning model to generate embeddings for SKUs. Training the NLP-type machine learning model includes preprocessing the dataset. The system collects a large dataset of SKUs. The system tokenizes SKUs by dividing them into distinct words, abbreviations, and codes. The system transforms the numerical representations of the SKUs into dense vectors, or embeddings. The embeddings capture the semantic relationships between words, abbreviations, and codes. The embeddings represent the words, abbreviations, and codes of the SKUs in a continuous vector space. The system trains the NLP-type machine learning model to generate embeddings for SKUs such that embeddings for more closely related SKUs are closer to each other in the continuous vector space than embeddings for less closely related SKUs.

[0070] According to an embodiment, the system applies a clustering-type machine learning model to a collection of data generated by an NLP-type model, such as a numerical matrix generated by a TF-IDF-type model or embeddings generated by an NLP-type machine learning model, to generate product clusters. For example, the system may apply trained clustering algorithms such as K-means, hierarchical clustering, DBSCAN (density-based spatial clustering with noisy applications), and Gaussian mixture models (GMM).

[0071] According to one or more embodiments, a clustering machine learning model assigns each data point, or each embedding representing a SKU, to the nearest cluster center based on a distance metric (such as Euclidean distance) from the data point to the cluster center. According to one or more embodiments, if a data point is not within a threshold distance from a cluster center, the model designates that data point as a new cluster center. For example, in a K-means type machine learning model, the system assigns each data point to the nearest centroid. The system then calculates a new centroid based on the mean of the point assigned to it. This process iterates until the change in centroid no longer exceeds a threshold level, or until a specified maximum number of iterations is reached.

[0072] The system selects a cluster from the first set of product clusters (Operation 208). The system determines preliminary estimates of the self-price elasticity of each product in the cluster and the cross-price elasticity of each product in the cluster with other products in the cluster (Operation 210). Figure 2B The diagram illustrates a set of operations used to determine preliminary estimates of the self-price elasticity of each product in the cluster and the cross-elasticity of each product in the cluster with other products in the cluster, based on an applied elasticity estimation regression algorithm.

[0073] The system selects a key product from the products in the product cluster (operation 224). For example, if the cluster includes ten SKUs (products 1-10), then the system selects product 1 as the key product. The system selects a target product to pair with the key product to determine the self-price and cross-price coefficient values ​​for the key and target products (operation 226). In the example where the product cluster includes SKUs 1-10 and the system selects product 1 as the key product, the system selects product 2 as the initial target product.

[0074] The system applies the elasticity estimation regression algorithm to the product data of the key product and the target product to determine the preliminary self-price elasticity and preliminary cross-price elasticity values ​​of the key / target product pair (Operation 228). The elasticity estimation regression algorithm includes the following elements: (a) key sales volume value, representing the total sales volume of the key product at a specific retail location (“store”) during a certain time interval; (b) offset value; (c) key product self-price coefficient; (d) key product price value, representing the average price of the key product at the store during that time interval; (e) basic demand coefficient; (f) average sales volume value, representing the average sales volume of the key product at the store over a duration comprising multiple time intervals (e.g., if the time interval is one week, then the value is calculated for a full year or more than 52 weeks); (g) seasonality coefficient; (h) total sales volume value, representing the total sales volume of all goods at a specific store during that time interval; (i) target product sales coefficient; (j) target product sales volume value, representing the sales volume of the target product at the store during that time interval; (k) cross-price coefficient; and (l) price value, representing the average price of the target product at the store during that time interval. The system applies an elasticity estimation regression algorithm to an input dataset that includes sales data for SKUs of a specific product cluster to determine the values ​​of coefficients, including the self-price coefficient of the key product and the cross-price coefficient of the target product. In one or more embodiments, the self-price coefficient corresponds to the self-price elasticity value, which represents the relationship between changes in product price and changes in product demand, and the cross-price coefficient corresponds to the cross-price elasticity value, which represents the relationship between changes in the price of the key product and changes in the demand for the target product.

[0075] The system determines whether another candidate target product exists in the cluster (Operation 230). In an example where the product cluster includes SKUs of products 1-10, where the system selects product 1 as the key product, and where the system performs regression based on product 1 (key product) and product 2 (target product), the system determines that another product (e.g., products 3-10) exists in the cluster.

[0076] Based on the determination that there exists another product in the cluster that has not yet been paired with the key product to estimate its self-price and cross-elasticity values, the system selects the next candidate product (operation 232). In an example where the product cluster includes SKUs of products 1-10, the system selects product 1 as the key product, and the system performs regression based on product 1 (key product) and product 2 (target product), the system selects product 3 as the next target product.

[0077] The system applies the resilience estimation regression algorithm to the key product and the next target product (operation 228). The system repeats operations 228, 230, and 232 until every product in the cluster has been paired with a key product. In other words, the system applies the resilience estimation regression algorithm to key product 1 and target products 2, 3, 4, 5...10.

[0078] Based on the premise that each product in the cluster has been paired with a key product, the system determines whether there is another candidate key product in the cluster (operation 234). In an example embodiment where the system applies the resilience estimation regression algorithm to key product 1 and target products 2-10 respectively, the system determines that product 2-10 has not yet been selected as a key product.

[0079] Based on the determination that another candidate key product exists in the cluster, the system selects the next candidate as the key product (operation 236). In an example embodiment where the system applies the elasticity estimation regression algorithm to key product 1 and target products 2-10 respectively, the system then selects product 2 as the key product. The system repeats operations 228, 230, and 232 for the selected key product until the selected key product has been paired with each of the other products in the cluster that is a target product. The system repeats operations 234 and 236 until every product in the product cluster has been selected as a key product, and the system has estimated the self-price and cross-elasticity values ​​for each key / target product pair in the cluster. In an example where the product cluster includes products 1-10, the system applies the elasticity estimation regression algorithm to each key product / target product pair, including: key product 1, target products 2-10 respectively; key product 2, target products 1 and 3-10 respectively; key product 3, target products 1, 2, and 4-10 respectively; and so on.

[0080] The system applies a set of clustering criteria to the self-price and cross-price elasticity estimates for each key / target product pair to cluster products into elasticity-based sub-clusters (Operation 238). Specifically, the system determines for each key / product pair's estimated elasticity value whether: (a) the key product has a negative self-price coefficient value, (b) the key product's self-price coefficient value exceeds a threshold value, (c) the target product has a positive cross-price coefficient value, and (d) the target product's cross-price coefficient value exceeds a threshold value. For example, in an embodiment where the self-price coefficient and cross-price coefficient values ​​for the key / target product pair are values ​​between 0 and 1, the threshold for both could be 0.4 (e.g., -0.4 for the self-price coefficient and +0.4 for the cross-price coefficient). Alternatively, the thresholds for the self-price coefficient and the cross-price coefficient can be different. As an example, the threshold for the self-price coefficient could be 0.3 (i.e., "-0.3"), and the threshold for the cross-price coefficient could be 0.5.

[0081] The system determines whether there are any other clusters for applying the elasticity estimation regression algorithm (Operation 212). In the example where the system clusters the set of products into fifty NLP-based clusters, the system determines whether the elasticity estimation regression algorithm has been applied to the products in each of the fifty clusters.

[0082] If another cluster exists, the system selects the next cluster (operation 214). The system can apply the resilience estimation regression algorithm to any set of goods, such as all goods within a category, all goods sold at a specific retail location, or all goods across multiple retail locations.

[0083] System fine-tuning of cross-elasticity estimation (Operation 218). Figure 2C The diagram illustrates a set of operations for fine-tuning cross elasticity estimates. The system applies a cluster-based elasticity estimation regression algorithm to product cluster data associated with each key product to generate cluster-based values ​​for the self-price elasticity and cross elasticity of key product / cluster pairs (operation 240). According to one or more embodiments, the cluster-based elasticity estimation regression algorithm includes (a) values ​​corresponding to sales and demand for the key product, and (b) values ​​corresponding to sales and demand for elasticity-based sub-clusters associated with the key product. The system applies the cluster-based elasticity estimation regression algorithm to determine cluster-based self-price and cross elasticity estimates for key product / cluster pairs. For example, if a product selected as a key product is a member of three elasticity-based sub-clusters, then the system applies the cluster-based elasticity estimation regression algorithm to: (a) the key product, and (b) pairs of sets of three elasticity-based sub-clusters associated with the key product. Specifically, the system applies the cluster-based elasticity estimation regression algorithm to a single key product and one or more clusters, each cluster comprising one or more target products. Therefore, the cluster-based elasticity estimation regression algorithm includes a single self-price coefficient and multiple cluster-based cross-price coefficients, each corresponding to a separate elasticity-based product cluster determined in operation 238.

[0084] According to one example, the algorithm may include (a) a key sales value, representing the total sales of a key product at a specific retail location (“store”) during a certain time interval, (b) an offset value, (c) a key product self-price coefficient, (d) a key product price value, representing the average price of the key product at the store during that time interval, (e) a basic demand coefficient, (f) an average sales value, representing the average sales of the key product at the store over a duration comprising multiple time intervals (e.g., if the time interval is one week, then the value is calculated for a full year or more than 52 weeks), (g) a seasonality coefficient, (h) a total sales value, representing the total sales of all goods at a specific store during that time interval, and, for each elasticity-based subcluster: (i) a target subcluster sales coefficient, (j) a target subcluster sales value, representing the sales of all products in the target subcluster at the store during that time interval, (k) a target subcluster cross-price coefficient, and (l) a target subcluster price value, representing the average price of all target products in the target subcluster at the store during that time interval.

[0085] After generating cluster-based self-price and cross-elasticity estimates for key product / cluster pairs, the system initiates the process of generating product-level fine-tuned self-price and cross-elasticity estimates.

[0086] For each product in a elasticity-based sub-cluster, the system generates a customized product-level elasticity value based on the cluster-level elasticity value (operation 242). The system determines the customized product-level elasticity value based on (a) the cluster-based self-price and cross elasticity values ​​determined in operation 240 for all products in the same elasticity-based product cluster, and (b) the proportion of the total number of products in the cluster attributable to that product. For example, an elasticity-based cluster may consist of three products with sales attribution as follows: Product 1: 50%, Product 2: 30%, Product 3: 20%. Accordingly, the system may determine the customized elasticity value for Product 1 based on: [cluster-based self-price and cross elasticity value] x 0.5. Similarly, the system may determine the customized elasticity value for Product 2 based on: [cluster-based self-price and cross elasticity value] x 0.3. Similarly, the system may determine the customized elasticity value for Product 3 based on: [cluster-based self-price and cross elasticity value] x 0.2. For example, if the cluster-based autoprice and cross-elasticity values ​​for a specific elasticity-based sub-cluster are calculated to be -0.5 and +0.8, respectively, then the system can determine the customized autoprice and cross-elasticity values ​​for Product 1 as -0.5 x 0.5 = -0.25 and +0.8 x 0.5 = +0.4, respectively. Similarly, the system can determine the customized autoprice and cross-elasticity values ​​for Product 2 as -0.15 and +0.24, respectively. Likewise, the system can determine the customized autoprice and cross-elasticity values ​​for Product 3 as -0.1 and +0.16, respectively.

[0087] The system further fine-tunes the customized elasticity values ​​of products by applying limits to the cross-elasticity values ​​to generate cluster-based fine-tuned cross-elasticity values ​​for each product (Operation 242). The system can impose constraints on cross-elasticity values ​​based on the self-price elasticity values ​​of key products. For example, the system can reduce the cross-elasticity values ​​associated with products having low self-price elasticity values. In other words, a product whose demand remains almost unchanged or unchanging due to price changes should not have high cross-elasticity values ​​with other products. Changes in demand for the primary product are likely to result in little or no change in demand for substitute products.

[0088] Furthermore, the system can limit the cross-price elasticity of a product based on demand for that product. For example, if the demand for a product is 100 units over a time interval, then a change in the price of that product should not lead to a demand for substitute products exceeding 100 units.

[0089] Furthermore, the system can apply cross-elasticity limits based on the characteristics of other products or substitutes within the elastic product cluster of the key product. For example, if three other products exist in the elastic product cluster, the sum of the changes in demand for those three products should not exceed the total demand for the key product. Additionally, since changes in product price result in some demand loss—or consumers who do not purchase the product and not its substitutes—the system can also limit the total change in demand among substitutes to less than the total demand for the key product. For example, if the demand for the key product is 100 units over a given time interval, then a price change in that product could result in a total demand for the three substitutes not exceeding 80 units (10 units corresponding to customers predicted to purchase the key product at a higher price, and 10 units corresponding to lost demand), distributed across the three substitutes.

[0090] The system determines whether another candidate key product exists in the set of products for which elasticity values ​​are being determined (operation 244). If another candidate key product exists, the system selects the next candidate as the key product (operation 246). The system repeats operations 240, 242, and 244 for new key products until each product has been selected as a key product and cluster-based self-price and cross-elasticity values ​​have been calculated for each key product. For example, in an example embodiment where the elasticity-based product sub-clusters generated in operation 238 include products 1, 2, 6, and 7, the system selects each product (e.g., 1, 2, 6, and 7) in turn as a key product and applies a cluster-based elasticity estimation regression algorithm to each key product to determine cluster-based self-price and cross-elasticity values ​​for each key product.

[0091] The system uses fine-tuned elasticity estimates to generate a demand forecasting model to predict demand for one or more products (operation 220). According to one embodiment, the system uses fine-tuned elasticity estimates to train the demand forecasting model. The model receives price data for a set of products as input data. The price data includes at least an initial set of price data and a modified set of price data. The modified data includes price changes for one or more products. Based on the received input data, the model predicts changes in demand for products whose prices have changed, at least based on fine-tuned self-price elasticity values. The model also predicts demand values ​​for one or more substitute products as indicated by fine-tuned cross-price elasticity values. According to an example embodiment, the system receives price data as input data and generates the following as output data: (a) a set of products that are substitutes for products with changed prices, and (b) demand forecasts for both the products with changed prices and the substitute products.

[0092] For example, a retailer can include sales data for each product in a specific product category (such as "shirts" or "dairy products") as input data into a demand forecasting model. The retailer could indicate a sales activity where the prices of ten items in the "shirts" category will decrease by 10%. The demand forecasting model generates a forecast of the change in sales among these ten items based on the determined self-price elasticity values, and generates forecasts for other products in the "shirts" category based on fine-tuned cross-price elasticity values. According to one example embodiment, the demand forecasting model generates one or more recommendations to maximize a specified sales metric. For example, the model could apply a set of rules to predict the price of a set of products that would result in a specified quantity of products being sold within four weeks. Alternatively, the model could apply a set of rules to predict the price that will maximize profit.

[0093] According to one embodiment, a product management platform (such as an inventory management platform, a sales management platform, or a platform combining inventory and sales management) monitors sales data to detect changes in demand. The platform can compare sales volume to threshold values. Based on determining that sales volume of a specific product exceeds an upper threshold or falls below a lower threshold, the system can trigger actions to (a) determine cluster-based self-price and cross-price elasticity values ​​for products related to the target product (e.g., determined by applying a natural language processing model to the product's SKU description), and (b) model the demand for related products and / or predict target prices based on the monitored sales data. For example, the system can detect a decline in sales volume of a specific brand of footwear. The system can model the demand for candidate alternative footwear based on cluster-based, finely tuned self-price and cross-price elasticity estimates to determine the target price for the alternative footwear.

[0094] The system adjusts product inventory and / or sales attributes based on forecasts (Operation 222). For example, based on forecasts generated by a demand forecasting model, a retailer can instruct the system to schedule sales to lower the price of a collection of products. Alternatively, a retailer can instruct the system to raise the price of a collection of products.

[0095] 4. Example Implementation

[0096] Figures 3A-3C An example embodiment is illustrated.

[0097] Retailer 302 generates time-series product sales data by tracking the prices and sales of products corresponding to sales inventory units (SKUs). Retailer 302 wants to determine the impact of a set of price changes proposed at the start of a new season, including raising the price of at least one set of products and lowering the price of another set of products.

[0098] Retailers provide Natural Language Processing model 306 with sales data of products sold in specific stores, including SKU descriptions. Retailers' SKUs include specific formats: (a) abbreviations of the company or brand name, (b) alphanumeric codes indicating product model and / or color, (c) codes indicating product size, and (d) codes indicating specific variations of the model. SKUs include combinations of human-understandable words (such as “milk,” “yogurt,” and “bread”), abbreviations (such as “strwbry,” “pln,” and “yel”), and codes (such as C2349 and P4455).

[0099] The NLP model applies the Term Frequency-Inverse Document Frequency (TF-IDF) algorithm to assign weights to words, abbreviations, and codes within a SKU. TF-IDF is a numerical statistical algorithm used to evaluate the importance of words, abbreviations, or codes in distinguishing one SKU from another. The NLP model transforms the SKU into a numerical feature matrix. Each row of the numerical feature matrix represents an SKU, and each column represents a term within the SKU and its corresponding TF-IDF score. The system applies a cosine similarity algorithm to the TF-IDF value of each SKU to generate a similarity score for each SKU. The system generates NLP-based SKU clusters by applying a set of rules to a dataset that includes SKUs, sales data, and similarity scores. The system clusters SKUs that (a) have revenue values ​​exceeding a threshold within a specific time period, and (b) have cosine similarity scores indicating a similarity equal to or higher than 95% of all SKUs in a specific product category.

[0100] Figure 3A The diagram illustrates a product cluster 308 based on NLP, including a first cluster 309a containing products 1-6, a second cluster 309b containing products 7-20, and so on up to n clusters 309n.

[0101] The system applies the elasticity estimation regression algorithm 310 to clusters 309a-309n to generate elasticity-based sub-clusters 311a-311n. Specifically, the system applies the elasticity estimation regression algorithm to each pair of products in cluster 1 (309a) to generate elasticity-based clusters 311a and 311b. Similarly, the system applies the elasticity estimation regression algorithm to each pair of products in cluster 2 (309b) to generate clusters 311c-311f. The system applies the elasticity estimation regression algorithm 310 to each pair of products in each cluster. Specifically, for cluster 309a, the system applies the algorithm to the following product pairs:

[0102]

[0103] For each key product / target product pair, the system applies a elasticity estimation regression algorithm to determine: (a) the initial self-price elasticity value of the key product / target product pair, and (b) the initial cross-price elasticity value of the key product / target product pair. The system generates elasticity-based clusters 311a-311n by clustering target products associated with the same key product whose self-price and cross-price elasticity estimates satisfy the following criteria: (a) the key product has a negative self-price coefficient value, (b) the key product's self-price coefficient value exceeds a threshold value, (c) the target product has a positive cross-price coefficient value, and (d) the target product's cross-price coefficient value exceeds a threshold value. In other words, each elasticity-based cluster 311a-311n includes (a) a single key product satisfying criteria (a) and (b), and one or more target products satisfying criteria (c) and (d).

[0104] The system applies the cluster-based elasticity estimation regression algorithm 312 to elasticity-based clusters 311a-311n to generate cluster-based elasticity values ​​313a-313n. Applying the cluster-based elasticity estimation regression algorithm involves applying the algorithm to pairs of sets including a single key product and one or more product clusters 311a-312n to generate cluster-level self-price and cross-elasticity values ​​313a-313n.

[0105] The system generates product-level elasticity values ​​314a-314n by modifying the cluster-based elasticity value with the sales-based value for each specific product in the cluster. This is done by passing cluster-level self-price and cross-elasticity values ​​313a-313n to specific products. For example, cluster 311a includes products 1, 3, and 5. The sales proportions of products 1, 3, and 5 are 60%, 30%, and 10%, respectively. The system generates product-level elasticity values ​​from the cluster-based elasticity values ​​by multiplying the cluster-based elasticity values ​​by the relative sales proportion attributed to each product.

[0106] The system applies one or more refinement algorithms 315 to product-level elasticity values ​​314a-314n to generate refined estimated elasticity values ​​316a-316n. Based on one refinement algorithm 315, the system imposes constraints on cross-elasticity values ​​based on the product's independent price elasticity. For example, the system can reduce the cross-elasticity associated with products having low independent price elasticity. In other words, for a product whose demand changes little or no due to a price change, the product should not have a high cross-elasticity with other products. A change in demand for the primary product is likely to result in little or no change in demand for substitute products.

[0107] Based on another refinement algorithm 315, the system limits the cross-price elasticity of products based on the demand for those products. For example, if the demand for a product is 100 units over a time interval, then a change in the price of that product should not cause the demand for substitute products to exceed 100 units.

[0108] Based on another refinement algorithm, the system applies cross-elasticity limits based on the characteristics of other products or substitutes within the elastic product cluster of the key product. For example, if there are three other products in the elastic product cluster, the change in demand among these three other products should not exceed the total demand for the key product. Furthermore, since changes in product price lead to some demand loss—or consumers who do not purchase the product and not its substitutes—the system can also limit the total change in demand among substitutes to less than the total demand for the key product. For example, if the demand for the key product is 100 units over a given time interval, then a price change in that product could result in a total demand of no more than 80 units for the three substitutes (10 units corresponding to customers predicted to purchase the key product at a higher price, and 10 units corresponding to lost demand), distributed among the three substitutes.

[0109] The system generates a product demand forecasting model 320 based on refined estimated elasticity values ​​316a-316n. The product demand forecasting model 320 is trained to receive product price data as input features and generate product demand data for the product and additional products, including substitute products, based on the refined elasticity estimates. The retailer interacts with a graphical user interface (GUI) to select a set of products for demand analysis (operation 317). For example, this set of products may include a subset of products sold by the retailer, including products associated with proposed price changes, such as raising the prices of some products and lowering the prices of others. The set of products may also include all products sold by the retailer. The product demand forecasting model 320 receives price data for the selected set of products and generates product demand forecast data 322 for one or more products. According to an example embodiment, the retailer provides the product demand forecasting model 320 with (a) current or historical price data for the set of products, and (b) price change data for one or more products within the set of products. Based on the refined estimated elasticity values ​​316a-316n used by the training model 320, model 320 generates output data that (a) identifies a set of products that differs from those identified by the retailer as having price changes and are substitutes for the price-changed products, and (b) predicts changes in demand for the price-changed products and substitutes. Accordingly, model 320 provides the retailer with a forecast of demand for the goods sold by the retailer, taking into account factors such as collinearity, low product demand, low product self-price elasticity, and the quantity of available substitutes affected by product price changes.

[0110] 5. Computer networks and cloud networks

[0111] In one or more embodiments, a computer network provides connectivity between a set of nodes. Nodes may be local to each other and / or geographically distant from each other. Nodes are connected via a set of links. Examples of links include coaxial cable, unshielded twisted cable, copper cable, fiber optic cable, and virtual links.

[0112] A subset of nodes implements a computer network. Examples of such nodes include switches, routers, firewalls, and Network Address Translation (NAT). Another subset of nodes uses a computer network. Such nodes (also referred to as "hosts") can execute client processes and / or server processes. Client processes make requests for computing services, such as the execution of a specific application and / or the storage of a specific amount of data. Server processes respond by performing the requested service and / or returning the corresponding data.

[0113] A computer network can be a physical network, including physical nodes connected by physical links. A physical node is any digital device. A physical node can be a function-specific hardware device, such as a hardware switch, hardware router, hardware firewall, and hardware NAT. Alternatively or concurrently, a physical node can be a general-purpose machine configured to perform various virtual machines and / or applications that perform corresponding functions. A physical link is the physical medium connecting two or more physical nodes. Examples of links include coaxial cable, unshielded twisted cable, copper cable, and fiber optic cable.

[0114] Computer networks can be overlay networks. An overlay network is a logical network implemented on top of another network, such as a physical network. Each node in the overlay network corresponds to a corresponding node in the underlying network. Therefore, each node in the overlay network is associated with both an overlay address (used to address the overlay node) and an underlying address (used to address the underlying node that implements the overlay node). Overlay nodes can be digital devices and / or software processes (such as virtual machines, application instances, or threads). The links connecting overlay nodes are implemented as tunnels through the underlying network. Overlay nodes at either end of the tunnel treat the underlying multi-hop path between them as a single logical link. Tunneling is performed through encapsulation and decapsulation.

[0115] In this embodiment, the client may be local to or remote from the computer network. The client may access the computer network via other computer networks, such as a private network or the Internet. The client may use a communication protocol, such as Hypertext Transfer Protocol (HTTP), to transmit requests to the computer network. Requests may be transmitted through interfaces such as client interfaces (such as web browsers), program interfaces, or application programming interfaces (APIs).

[0116] In this embodiment, a computer network provides connectivity between clients and network resources. Network resources include hardware and / or software configured to execute server processes. Examples of network resources include processors, data storage devices, virtual machines, containers, and / or software applications. Network resources are shared among multiple clients. Clients independently request computing services from the computer network. Network resources are dynamically allocated to requesting and / or clients on an on-demand basis. The network resources allocated to each request and / or client can be scaled up or down based on, for example, (a) computing services requested by a specific client, (b) aggregated computing services requested by a specific tenant, and / or (c) the requested aggregated computing services of the computer network. Such a computer network may be referred to as a "cloud network."

[0117] In this embodiment, the service provider offers a cloud network to one or more end users. The cloud network can implement various service models, including but not limited to Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS). In SaaS, the service provider offers end users the ability to use applications running on the service provider's network resources. In PaaS, the service provider offers end users the ability to deploy custom applications onto network resources. Custom applications can be created using programming languages, libraries, services, and tools supported by the service provider. In IaaS, the service provider offers end users the ability to provision processing, storage, networking, and other basic computing resources provided by the network resources. Any application, including operating systems, can be deployed on the network resources.

[0118] In embodiments, computer networks can implement various deployment models, including but not limited to private clouds, public clouds, and hybrid clouds. In a private cloud, network resources are provisioned to a specific group of one or more entities (as used herein, an "entity" refers to a company, organization, person, or other entity) for exclusive use. Network resources can be located locally or remotely from the specific group of entities. In a public cloud, cloud resources are provisioned to multiple entities (also referred to as "tenants" or "customers") that are independent of each other. The computer network and its network resources are accessed by clients corresponding to different tenants. Such a computer network can be referred to as a "multi-tenant computer network." Several tenants can use the same specific network resources at different times and / or at the same time. Network resources can be located locally or remotely from the tenant's location. In a hybrid cloud, the computer network includes both private and public clouds. The interface between the private and public clouds allows for the portability of data and applications. Data stored in the private cloud and data stored in the public cloud can be exchanged through the interface. Applications implemented in the private cloud and applications implemented in the public cloud can be dependent on each other. You can use the interface to make calls from an application in a private cloud to an application in a public cloud (and vice versa).

[0119] In this embodiment, the tenants of a multi-tenant computer network are independent of each other. For example, one tenant's business or operations may be separate from those of another tenant. Different tenants may have different network requirements for the computer network. Examples of network requirements include processing speed, data storage capacity, security requirements, performance requirements, throughput requirements, latency requirements, resilience requirements, quality of service (QoS) requirements, tenant isolation, and / or consistency. The same computer network may need to meet the different network requirements needed by different tenants.

[0120] In one or more embodiments, in a multi-tenant computer network, tenant isolation is implemented to ensure that applications and / or data from different tenants are not shared with each other. Various tenant isolation methods can be used.

[0121] In this embodiment, each tenant is associated with a tenant ID. Each network resource in a multi-tenant computer network is tagged with a tenant ID. A tenant is only allowed access to a specific network resource if the tenant and the specific network resource are associated with the same tenant ID.

[0122] In this embodiment, each tenant is associated with a tenant ID. Each application implemented by the computer network is identified by the tenant ID. Alternatively or additionally, each data structure and / or dataset stored by the computer network is identified by the tenant ID. A tenant is allowed access to a specific application, data structure, and / or dataset only if the tenant and the specific application, data structure, and / or dataset are associated with the same tenant ID.

[0123] As an example, each database implemented in a multi-tenant computer network can be labeled with a tenant ID. Only the tenant associated with the corresponding tenant ID can access the data in a specific database. As another example, each entry in a database implemented in a multi-tenant computer network can be labeled with a tenant ID. Only the tenant associated with the corresponding tenant ID can access the data in a specific entry. However, the database can be shared by multiple tenants.

[0124] In this embodiment, the subscription list indicates which tenants are authorized to access which applications. For each application, a list of tenant IDs of tenants authorized to access that application is stored. A tenant is only allowed to access a specific application if its tenant ID is included in the subscription list corresponding to that specific application.

[0125] In this embodiment, network resources (such as digital devices, virtual machines, application instances, and threads) corresponding to different tenants are isolated to tenant-specific overlay networks maintained by a multi-tenant computer network. As an example, packets from any source device within a tenant overlay network can only be transmitted to other devices within the same tenant overlay network. Encapsulation tunneling is used to prevent any transmission from a source device on one tenant overlay network to devices in other tenant overlay networks. Specifically, packets received from a source device are encapsulated within an outer packet. The outer packet is transmitted from a first encapsulation tunnel endpoint (communicating with the source device in the tenant overlay network) to a second encapsulation tunnel endpoint (communicating with the destination device in the tenant overlay network). The second encapsulation tunnel endpoint decapsulates the outer packet to obtain the original packet transmitted by the source device. The original packet is transmitted from the second encapsulation tunnel endpoint to the destination device within the same specific overlay network.

[0126] 6. Miscellaneous; Extension

[0127] The embodiments are directed to a system having one or more devices, which include a hardware processor and are configured to perform any of the operations described herein and / or stated in any of the following claims.

[0128] In an embodiment, the non-transitory computer-readable storage medium includes instructions that, when executed by one or more hardware processors, cause to perform any operation described herein and / or stated in any of the claims.

[0129] According to one or more embodiments, any combination of the features and functions described herein may be used. In the foregoing specification, embodiments have been described with reference to numerous specific details that may vary depending on the implementation. Accordingly, this specification and the accompanying drawings should be viewed in an illustrative rather than restrictive sense. The sole and exclusive indication of the scope of the invention, and what the applicant intends to define as the scope of the invention, is the literal and equivalent scope of the claims generated in the specific form of the set of claims arising from this application, including any subsequent amendments.

[0130] 7. Hardware Overview

[0131] According to one embodiment, the technology described herein is implemented by one or more dedicated computing devices. The dedicated computing device may be hardwired to execute the technology, or may include digital electronic devices (such as one or more application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or network processing units (NPUs) that are persistently programmed to execute the technology, or may include one or more general-purpose hardware processors programmed to execute the technology according to program instructions in firmware, memory, other storage devices, or combinations thereof. Such dedicated computing devices may also combine custom hardwired logic, ASICs, FPGAs, or NPUs with custom programming to implement the technology. The dedicated computing device may be a desktop computer system, a portable computer system, a handheld device, a networking device, or any other device that combines hardwired and / or program logic to implement the technology.

[0132] For example, Figure 4 This is a block diagram illustrating a computer system 400 on which embodiments of the present invention may be implemented. The computer system 400 includes a bus 402 or other communication mechanism for transmitting information and a hardware processor 404 coupled to the bus 402 for processing information. For example, the hardware processor 404 may be a general-purpose microprocessor.

[0133] Computer system 400 also includes main memory 406, such as random access memory (RAM) or other dynamic storage devices, coupled to bus 402 for storing information and instructions to be executed by processor 404. Main memory 406 can also be used to store temporary variables or other intermediate information during the execution of instructions to be executed by processor 404. When such instructions are stored in non-transitory storage media accessible to processor 404, such instructions make computer system 400 a dedicated machine customized to perform the operations specified in the instructions.

[0134] The computer system 400 also includes a read-only memory (ROM) 408 or other static storage device coupled to the bus 402 for storing static information and instructions for the processor 404. A storage device 410, such as a disk or optical disk, is provided and coupled to the bus 402 for storing information and instructions.

[0135] Computer system 400 may be coupled via bus 402 to a display 412, such as a cathode ray tube (CRT), for displaying information to a computer user. Input device 414, including alphanumeric keys and other keys, is coupled to bus 402 for transmitting information and command selections to processor 404. Another type of user input device is a cursor control 416, such as a mouse, trackball, or arrow keys, for transmitting directional information and command selections to processor 404 and for controlling cursor movement on display 412. Such input devices typically have two degrees of freedom on two axes (a first axis (e.g., x) and a second axis (e.g., y)), allowing the device to specify a position in a plane.

[0136] Computer system 400 may implement the techniques described herein using custom hardwired logic, one or more ASICs or FPGAs, firmware, and / or program logic, which, when combined with the computer system, make computer system 400 a special-purpose machine or program the computer system 400 as such. According to one embodiment, computer system 400 performs the techniques described herein in response to processor 404 executing one or more sequences of one or more instructions contained in main memory 406. Such instructions may be read into main memory 406 from another storage medium, such as storage device 410. Executing the sequence of instructions contained in main memory 406 causes processor 404 to perform the processing steps described herein. In alternative embodiments, hardwired circuitry may be used in place of or in combination with software instructions.

[0137] As used herein, the term "storage medium" refers to any non-transitory medium that stores data and / or instructions that enable a machine to operate in a particular manner. Such storage media can include non-volatile media and / or volatile media. For example, non-volatile media include optical discs or magnetic disks, such as storage device 410. Volatile media include dynamic memory, such as main memory 406. Common forms of storage media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tape or any other magnetic data storage media, CD-ROMs, any other optical data storage media, any physical media with a perforated pattern, RAM, PROMs and EPROMs, FLASH-EPROMs, NVRAMs, any other memory chips or cassette tapes, content-addressable memory (CAM), and tri-state content-addressable memory (TCAM).

[0138] Storage media differ from transmission media but can be used in conjunction with them. Transmission media participate in the transfer of information between storage media. For example, transmission media include coaxial cables, copper wires, and optical fibers, including wires containing bus 402. Transmission media can also take the form of sound waves or light waves, such as those generated during radio wave and infrared data communication.

[0139] Carrying one or more sequences of instructions to processor 404 for execution can involve various forms of media. For example, the instructions may initially be carried on a disk or solid-state drive of a remote computer. The remote computer may load the instructions into its dynamic memory and transmit them over a telephone line using a modem. A modem local to computer system 400 may receive data over the telephone line and use an infrared transmitter to convert the data into an infrared signal. An infrared detector may receive the data carried in the infrared signal, and appropriate circuitry may place the data on bus 402. Bus 402 carries the data to main memory 406, from which processor 404 retrieves and executes the instructions. The instructions received by main memory 406 may optionally be stored on storage device 410 before or after execution by processor 404.

[0140] Computer system 400 also includes a communication interface 418 coupled to bus 402. Communication interface 418 provides bidirectional data communication coupled to network link 420, which connects to local network 422. For example, communication interface 418 may be an Integrated Services Digital Network (ISDN) card, a cable modem, a satellite modem, or a modem for providing data communication connectivity with a corresponding type of telephone line. As another example, communication interface 418 may be a LAN card for providing data communication connectivity with a compatible local area network (LAN). Wireless links may also be implemented. In any such implementation, communication interface 418 transmits and receives electrical, electromagnetic, or optical signals carrying digital data streams representing various types of information.

[0141] Network link 420 typically provides data communication to other data devices via one or more networks. For example, network link 420 may provide a connection to host computer 424 or to data devices operated by Internet Service Provider (ISP) 426 via local network 422. ISP 426, in turn, provides data communication services via a worldwide packet data communication network now commonly referred to as the “Internet” 428. Both local network 422 and Internet 428 use electrical, electromagnetic, or optical signals that carry digital data streams. Signals through various networks, as well as signals on network link 420 and through communication interface 418, are example forms of transmission media that carry digital data to and from computer system 400.

[0142] Computer system 400 can send messages and receive data, including program code, via a network, network link 420, and communication interface 418. In the Internet example, server 430 can transmit requested code for an application via the Internet 428, ISP 426, local network 422, and communication interface 418.

[0143] The received code can be executed by processor 404 when it is received, and / or stored in storage device 410 or other non-volatile storage device for later execution.

[0144] In the foregoing description, embodiments of the invention have been described with reference to numerous specific details that may vary depending on the implementation. Accordingly, this description and drawings should be viewed in an illustrative rather than restrictive sense. The sole and exclusive indication of the scope of the invention, and what the applicant intends to define as the scope of the invention, is the literal and equivalent scope of the claims generated in the specific form of the set of claims resulting from this application, including any subsequent amendments.

Claims

1. A computer-readable medium comprising instructions that, when executed by one or more hardware processors, cause performance of operations comprising: generating, for forecasting effects of price and demand changes among a plurality of products, a retail forecast model by at least: obtaining a set of product data, including: sales data for the plurality of products and product descriptions for the plurality of products; clustering the plurality of products into a plurality of product clusters according to text similarity among the product descriptions for the plurality of products; applying a cluster-level price elasticity estimation regression algorithm to the plurality of product clusters to generate a set of cluster-level estimated price elasticity values; modifying the set of cluster-level estimated price elasticity values based on demand attributes for the plurality of products to generate a plurality of product-level price elasticity values for the plurality of products by at least: modifying a first cluster-level estimated price elasticity value for a first product cluster with a first demand value representing a demand level for a first product in the first product cluster to generate a first product-level price elasticity value corresponding to the first product; and generating the retail forecast model for the plurality of products based on the plurality of product-level price elasticity values.

2. The computer-readable medium of claim 1, wherein clustering the plurality of products into the plurality of product clusters according to text similarity among the product descriptions for the plurality of products comprises: applying a natural language processing (NLP) model to the product descriptions for the plurality of products to identify text similarity among the product descriptions; and clustering the plurality of products into a set of NLP-based product clusters based on the text similarity.

3. The computer-readable medium of claim 2, wherein the NLP model comprises (a) a term frequency-inverse document frequency (TF-IDF) algorithm to generate a numerical frequency matrix comprising TF-IDF values for terms in the product descriptions and (b) a cosine similarity algorithm to generate a text similarity score for each pair of products among the plurality of products based on the TF-IDF values.

4. The computer-readable medium of claim 2, wherein the NLP model generates a plurality of embeddings respectively corresponding to the plurality of products based on the product descriptions for the plurality of products, and wherein clustering the plurality of products into the plurality of product clusters comprises: applying a clustering-type machine learning model to the plurality of embeddings to generate the plurality of product clusters.

5. The computer-readable medium of claim 2, wherein the operations further comprise: applying a product-level price elasticity estimation regression algorithm to respective pairs of products in the set of NLP-based product clusters to generate a first set of estimated price elasticity values for the plurality of products by at least: applying the product-level price elasticity estimation regression algorithm to a first product and a second product in a first NLP-based product cluster to determine a first estimated elasticity value for the first product; and applying the product-level price elasticity estimation regression algorithm to the second product and the first product in the first NLP-based product cluster to determine a second estimated elasticity value for the second product. ​ ​ ​ For each respective product cluster of the plurality of product clusters, comparing a first set of estimated price elasticity values for products in the respective product cluster to a clustering criterion to generate the plurality of product clusters, the plurality of product clusters being elastic-based product subclusters of the NLP-based product clusters, at least by: determining that a first subset of products in the first product cluster satisfies the clustering criterion; based on determining that the first subset of products satisfies the clustering criterion: clustering the first subset of products into a first elastic-based product subcluster; determining that a second subset of products in the first product cluster satisfies the clustering criterion; and based on determining that the second subset of products satisfies the clustering criterion: clustering the second subset of products into a second elastic-based product subcluster.

6. The computer-readable medium of claim 5, wherein applying the product-level price elasticity estimation regression algorithm to respective pairs of products in the set of NLP-based product clusters comprises: (a) generating a plurality of product pairs by: (i) selecting a first product in a first NLP-based product cluster as a key product; (ii) selecting a second product in the first NLP-based product cluster as a target product; (b) applying the product-level price elasticity estimation regression algorithm to the key product and the target product to determine a own price elasticity value associated with the key product and the target product and a cross elasticity value associated with the key product and the target product; and repeating operations (a) and (b) until each product among the plurality of products has been selected as a key product and paired with every other product among the plurality of products selected as a target product.

7. The computer-readable medium of claim 1, wherein the operations further comprise: obtaining price change data for at least one product among the plurality of products; applying the retail forecast model to a set of modified price data for the plurality of products, the set of modified price data including the price change data for the at least one product; and generating, by the retail forecast model, a demand forecast for the at least one product based on the price change data.

8. The computer-readable medium of claim 1, wherein the set of product data includes one or more of: time series data representing sales of the plurality of products; a unique product identifier (ID) for each product among the plurality of products; and a text-based product description for each product among the plurality of products.

9. The computer-readable medium of claim 1, wherein applying the cluster-level price elasticity estimation regression algorithm to the plurality of product clusters to generate the set of cluster-level estimated price elasticity values comprises: (a) generating a plurality of key product / cluster pairs by at least: (i) selecting a first product as a key product; (ii) selecting at least one elastic-based subcluster from among the plurality of product clusters as a target set of elastic-based subclusters; (b) applying a cluster-level price elasticity estimation regression algorithm to the target set of key products and elasticity-based sub-clusters to determine a cluster-level own-price elasticity value associated with the target set of key products and elasticity-based sub-clusters and a cluster-level cross-elasticity value associated with the target set of key products and elasticity-based sub-clusters; and repeating operations (a) and (b) until each elasticity-based sub-cluster has been paired with each product selected as a key product as a target elasticity-based sub-cluster in the set of elasticity-based sub-clusters.

10. The computer-readable medium of claim 1, wherein the operations further comprise: generating a plurality of refined product-level price elasticity values from the plurality of product-level price elasticity values by performing at least one of: reducing one or more product-level cross-elasticity values based on a determination that a corresponding product-level own-price elasticity value does not satisfy a value of an own-price elasticity threshold; reducing the one or more product-level cross-elasticity values based on a demand level of a corresponding set of one or more products; and reducing the one or more product-level cross-elasticity values based on a number of substitute products corresponding to a particular product, and wherein the retail forecast model is generated based on the plurality of refined product-level price elasticity values.

11. A method comprising the operations of any of claims 1-10.

12. A system comprising: one or more processors; and memory storing instructions that, when executed by the one or more processors, cause the system to perform the operations of any of claims 1-10.