Segmentation Step (Optimization - Negotiation Guidance)
This step performs the segmentation itself, meaning that it builds the segmentation tree. It is a sequence of two calculations: first the tree build, then the calculation of the gaps between segments. Once the calculation sequence is done, the step displays five tabs: Tree View, Indicators, Price Gaps, Selection Alignments, and Optimization Setup. The first three tabs are dashboards to navigate into the segmentation results. Selection Alignments and Optimization Setup are where you set the inputs to the optimization itself.
Segmentation and Price Gaps Calculation
Segmentation
First, the calculation creates a segmentation tree, using the segmentation parameters entered in the previous step. Each segment represents a subset of the source data. Each segment contains some metrics, such as the customer and the product counts, revenue, optimization target average (either margin or discount percentage average), etc.
The parameters of the elasticity function for each segment are evaluated. The elasticity function can then be used as the optimum optimization target value to maximize either the profit or the revenue. Those elasticity parameters are provided in the segments' metrics.
Price Gaps Calculation
Then, the prices gaps between each segment and its parent are calculated. It is the reason why, during the calculation run, you see that there are two steps. This price gaps concept is explained below, in the documentation about the place where it is used: Segmentation Step (Optimization - Negotiation Guidance) | Price Gaps.
Tree View
This tab is a dynamic view of the segmentation tree. You can expand and collapse it and get information about any segment.
For each segment, i.e. node of the tree, the following information is directly given:
The name of the segment (here S000002).
The last level of segmentation and the value it belongs to. Here the level is CG and its value is Corporate. Given the previous node in the tree, it means that the segment S000002 corresponds to the transactions where the field PG has the value Basic Economy and the field CG has the value Corporate.
# is the number of transactions in the segment (here 154).
avg is the average value of the optimization metric (margin% or discount%) in the segment.
rev is the total revenue represented by the segment.
If you click a segment, more information is provided in the right panel.
In addition to the information you already have in the tree view, you have some other metrics of the segment. In the segment Transactions, you also have access to the sample of input data present in this segment, two histograms, and a Quantity Chart. The first histogram is called Distribution.
The blue bars represent the number of transactions depending on the optimization metric value. Here, four transactions were done with a margin percentage between 16.3 and 16.4%. The green curve is the cumulative value. Next to it, 142 transactions were done with a margin percentage inferior to 16.4%. The black curve is a fit of a normal law on the data. The average value is 15% and the normal curve does not fit well on the segment.
The Quantity Chart displays one dot for each transaction of the segment
The dots are placed on X axis according to the optimization target for the transaction – here the margin percentage – and on Y axis according to the quantity of the transaction. Note that for large segments only 500 transactions are displayed on the chart.
The second histogram is called Optimal Target Chart.
This chart is created only if the elasticity is calculated for the given segment. It depends on the parameters you chose to limit some elasticity calculations in the Configuration step.
The histogram is the same as the previous chart. On top of it, the fitted elasticity curve is displayed in black. Expected revenue and expected profit curves are also displayed. They are shown as non-dimensional values. That means that they refer to an index and not an absolute value. It is the reason why the profit curve can be higher than the revenue one. Their shapes are important: they show the maximum of each curve (what is the optimal target metric value, in terms of profit or revenue) and how much the metric decreases if the target metric is not at its optimum. The vertical line shows the optimal target metric value based on a mix of profit and revenue: profit optimum represents 2/3 of the weight and revenue one represents 1/3.
If the next step has run, its outputs are also displayed in this tree view. See Results Step (Optimization - Negotiation Guidance) for details.
Indicators
This tab provides metrics and data that allow evaluating the pertinence of the segmentation results. There are five portlets.
Segmentation Overview
This table shows what amount of data is kept by each level of segmentation and how much this level of segmentation describes the target metric variations. The count of segments existing at each level is also displayed.
Details by Segment
This table summarizes the key metrics of all the segments in one place.
Elasticity Fit Chart
In this scatter chart, each dot represents a segment. The X axis is the divergence to a normal distribution (see above), so the segments on the right are the ones that less fit a normal distribution. The Y axis is the number of transactions in the segment. The segments which are far from the leaves in the segmentation should have more transactions in them and can be farther from a normal distribution (top right of the chart).
Elasticity Fit by Segment
This table provides the divergence to normal distribution (numerical value) for all the segments. The higher the value, the less the segment fits a normal distribution. The parenting level indicates how much the segment is far from the last segmentation level.
Fitting of Elasticity
This portlet provides the average divergence to a normal distribution of all the segments (see paragraph above). The higher this value, the less the segments fit normal distributions.
Price Gaps
Price Gaps across Segments
This table provides for each value of the selected segmentation level:
the global revenue of the segments corresponding to each value,
the average optimization target metric through the involved segments,
the average price gap to the overall mean. So this is computed for each segment related to the parent segment and then aggregated.
The price gaps are a way to evaluate how much the segments differ from each other at each level of segmentation. The idea is to evaluate how much a price depends on an attribute by checking the impact on the margin rate or the discount rate. The following formulas are used, with the reference being the one level higher in the segmentation tree:
For each segment, the gap between its average optimization target and its parent segment one is calculated. Then, at each segmentation level, those values are aggregated by segmentation level value. Moreover, the average optimization target and the total revenue for the segments of this level are calculated too.
As it is complicated, let’s propose an example.
Consider this segmentation tree, where the first level is Business Unit, and the second one is Customer type.
If you consider the Customer type level, for the value Distributor then:
The total revenue calculated here is the sum of the revenues of the segments S000214 and S002502.
The average optimization targets are the average values of the segments S000214 and S002502 weighted with their revenues (in case of margin percentage) or total list prices (in case of discount percentage).
The gaps between S000214 and S000001 on one hand and S002502 and S002365 on the other hand are calculated. Then, the average of these two gaps is the price gap of the Distributor value, for the Customer type level. It is implicit that the reference is the Business Unit level.
Spread of Price Gaps across Segments
This box plot chart displays the spread of the price gaps of the segments with their parent, for each value of the selected segmentation level.
Selection Alignments
From v2, it is possible to align the segments between each other. The alignments are optional. By default, the option is unchecked. You will have access to the user inputs if you click the checkbox Enable Price Alignment Criteria. This option is available only if no Weight Measure has been selected at the Definition step .
Let’s start with few recommendations about the alignment. Multiple alignment might be challenging to enforce as it might get into different directions. So we recommend:
Get the dimensions with the alignment as the first ones in the segmentation tree. This helps to avoid having a low number of comparison points due to data sparsity.
Better set the alignments on customer or transactions related attributes and not on product attributes. Indeed, list prices (or costs for margin%) should already reflect the consistency of prices related to product attributes. Saying there is 5% price gap between two brands would mean there is a difference of discounts that results in a 5% price difference, but that difference should be better directly embedded in the list price than adjusting the discount here.
Limit to a few alignments in a few dimensions that are the most important ones from a business point of view. It is also difficult to enforce many changes at the same time from a business perspective as it will impact customers more.
Avoid setting a specific percentile value in the parameters table. Indeed, this can shifted differently segments and alignments might not be satisfied anymore.
What are the alignments?
You may consider that some segments should have, on average, prices that are tied to similar segments on all segmentation levels except one. Let’s take an example.
Here is a segmentation tree:
The pricing manager considers that the prices of Direct Customer should be 25% lower, on average to Industry customers. For this, you set an alignment at the Brand level. The optimization target values of all the product and customer pairs in the scope of the model will be moved in order for the average price gaps between the segments S000114 and S000115, among the other segments too, to be as close as possible to this gap of -25%. The segment S000121 is not aligned with any segment because there is no similar segment to align with.
For the definition of a price gap, refer to Segmentation Step (Optimization - Negotiation Guidance) | Price Gaps. Here, we are speaking about price gaps between two segments in the same level of segmentation.
To do this, an Optimization Engine is automatically configured and executed behind the scene. For each alignment rule, all the relevant pairs of segments are aligned together.
How to configure the alignments?
If the button “Enable Price Alignment” is checked, the tab proposes the segmentation levels to set up alignments. To help the choice, the cardinality (count of different values) is displayed for each segmentation dimension. At most one dimension can be marked as recommended: it is the segmentation level coming from customer master data that has the maximum price driver importance, with a cardinality of less than thirty. You can select the alignments as you want. For each selected row, a new section is displayed, called “name of the dimension” - Requested Price Gaps.
First, choose the alignment type. For the moment, there is only one option: Reference based. Other type of alignment will be implemented in the future. Reference based means that you choose a reference value and you define the price gaps that the similar segments corresponding to another dimension value should reach in average. To help you decide the gap to apply, the average current gap value is displayed. If you go back to the example below: the current gap between Direct Customer and Industry customer is the average of the gaps between the segments S000114 and S000115, but also all the other pairs of segments at the same level of the segmentation tree, that are not displayed in the screenshot.
If you select an alignment, at least one requested gap must be set. You do not need to create gaps for each pair of values. In the example below, there is no requested gap for the customer type Distributor, compared to Industry. This means that no alignment constraint will be set on the segments corresponding to the Distributor customer type.
Debug the Alignments
When using the alignment, if the Optimization Engine fails to achieve the requested alignment, it is possible for advanced users to trigger some additional process to analyze the OE run. To do so, go to the Tables menu, to the Parameter Table called AdvancedParameters and change the value of OE_variable_exposed from ‘false' to 'true’.
If set to true, this variable will expose additional information related to the OE internal process, and create additional table available in Model Tables. It is recommend to use this option only if the OE is not functioning well, as setting this variable to 'true' can make the process considerably slower.
Optimization Setup
The Optimization Setup tab allows you to define the way to provide an optimum for each segment. You define three global percentiles. It is possible to override these global values for some segments (see below).
How the Percentile Values Are Used?
Three percentiles and four strategy coefficients define the optimization strategy.
The percentile values are used to split each segment among the optimization target values. For instance, a floor percentile of 30 means that 30% of the transactions in each segment will be considered “below the floor”. The floor and the ceiling percentiles are required, the target percentile is optional: if not provided, a specific value will be calculated for each segment, based on the score segment (see below).
The strategy coefficients are required. They indicate how much the optimization target values will move toward the next threshold in the optimization calculation. The optimization based on the percentiles is performed like this:
If a transaction was done with an optimization metric lesser than the floor percentile value, it is increased toward the floor percentile value, by the amount defined with the first strategy coefficient.
If a transaction was done with an optimization metric between the floor percentile value and the target percentile one, it is increased toward the target percentile value, by the amount defined with the second strategy coefficient.
If a transaction was done with an optimization metric between the target percentile value and the ceiling percentile one, it is decreased toward the target percentile value, by the amount defined with the third strategy coefficient.
If a transaction was done with an optimization metric upper than the ceiling percentile value, it is decreased toward the ceiling percentile value, by the amount defined with the fourth strategy coefficient.
Score Calculation
It is mandatory that the user defines the floor and the ceiling percentiles. The target one is optional. If it is not defined, it is calculated, based on the segment score. The score can vary from 0 to 100.
For “Margin%” Target Type: if score = 0, the target percentile will be the max(floor, 50) percentile; if 100, it will be the ceiling percentile; intermediary values of percentile apply to intermediary scores, using a linear interpolation between floor and ceiling percentiles.
For “Discount%” Target Type: if score = 0, the target percentile will be the min(ceiling, 50) percentile; if 100, it will be the floor percentile; intermediary values of percentile apply to intermediary scores, using a linear interpolation between floor and ceiling percentiles.
The score can be set by two methods. The default one is the CoV method. The higher the coefficient of variation of the optimization metric in the segment (CoV) is, the higher the score is. You can also define a value of Competitive Intensity (between 1 and 5) and a value of Product Performance (between 1 and 5) and then the score is calculated on top of them.
Override Percentiles for Some Segments
If the global percentiles are not to be used on some specific segment, you can override them by checking the box Use percentile values from the parameters table when present. Once it is checked, the values used will be the ones provided in the Parameter Table called Segments. Use the three dots at the top right of the model and then go to the Parameter Tables tab.
Any field of this table is editable if there is no calculation processing. Be careful not to change the values defining the segments' names and levels, but only the next fields.