snapshots-to-scorecards.Rmd
A model snapshot from the ADM datamart can be turned into a scorecard
using just a single function call from the pdstools
library.
The snapshot
contains the (encoded) string retrieved
from the pymodeldata
field in the ADM model table. This
string can be copied from a table browsing function in a database tool,
from a dataset export or from scripted database access.
The string below is an example - replace it with the data that you export using one of these methods.
snapshot <- "eJztW1lz2zgSfp9fwVLlYbdKUhEXjzxMl ...... ufYeNc6T30I+5Hs5BK2m7/8HRyIsNw=="
Then this function call into pdstools
creates the
scorecard from it.
sc <- pdstools::getScorecardFromSnapshot(snapshot, "Example Snapshot")
It will return a list with 3 (actually 4 but the 4th is not for end users) elements:
element | description |
---|---|
scorecard |
A data.table with a human-readable scorecard
|
mapping |
A data.table with the mapping from score to propensity
|
pmml | A PMML scorecard that can be saved and executed |
The “Points” in the scorecard give the weight for all the (active) predictors.
Field | Value | Points |
---|---|---|
Age | ||
Age | MISSING | 96.437526 |
Age | <24.12 | 148.308844 |
Age | [24.12, 29.08> | 13.023477 |
Age | [29.08, 35.16> | 143.479613 |
Age | [35.16, 37.08> | 91.634507 |
Age | [37.08, 39.16> | 118.329683 |
Age | [39.16, 43.16> | 28.829975 |
Age | [43.16, 46.04> | 116.010850 |
Age | [46.04, 49.08> | 149.301996 |
Age | [49.08, 54.04> | 21.882418 |
Age | [54.04, 56.12> | 0.000000 |
Age | ≥56.12 | 70.818252 |
CreditHistory | ||
CreditHistory | MISSING | 26.616712 |
CreditHistory | Paid on time | 35.067342 |
CreditHistory | Past arrears | 0.000000 |
CreditHistory | Repaid on time | 14.056107 |
CreditHistory | Other | 26.616712 |
Devices(1).DeviceModel | ||
Devices(1).DeviceModel | MISSING | 77.749766 |
Devices(1).DeviceModel | Apple iPad 3 | 0.000000 |
Devices(1).DeviceModel | Apple iPhone 5 | 124.445623 |
Devices(1).DeviceModel | HTC One M8 | 86.046285 |
Devices(1).DeviceModel | Huawei Honor 7 | 86.046285 |
Devices(1).DeviceModel | Nokia Lumia Icon | 109.124669 |
Devices(1).DeviceModel | Samsung Galaxy S5 | 76.528461 |
Devices(1).DeviceModel | Sony Xperia M4 Aqua | 94.643414 |
Devices(1).DeviceModel | Other | 50.420464 |
Devices(1).DeviceType | ||
Devices(1).DeviceType | MISSING | 52.286727 |
Devices(1).DeviceType | Smart Phone | 63.189780 |
Devices(1).DeviceType | Tablet | 0.000000 |
Devices(1).DeviceType | Other | 52.286727 |
Income | ||
Income | MISSING | 76.599514 |
Income | <24470.88 | 83.423495 |
Income | [24470.88, 29058.4> | 153.195279 |
Income | [29058.4, 43476.32> | 78.344693 |
Income | [43476.32, 46425.44> | 20.955630 |
Income | [46425.44, 49374.56> | 153.873446 |
Income | [49374.56, 52651.36> | 65.432124 |
Income | [52651.36, 56911.2> | 96.918704 |
Income | [56911.2, 62809.44> | 20.334361 |
Income | ≥62809.44 | 0.000000 |
Param.CLVSegment | ||
Param.CLVSegment | MISSING | 20.747266 |
Param.CLVSegment | Develop | 27.093396 |
Param.CLVSegment | Nurture | 0.000000 |
Param.CLVSegment | VIP | 5.351073 |
Param.CLVSegment | Other | 20.747266 |
Param.FourG | ||
Param.FourG | MISSING | 22.694102 |
Param.FourG | false | 0.000000 |
Param.FourG | true | 19.132586 |
Param.FourG | Other | 22.694102 |
Param.International | ||
Param.International | MISSING | 16.685086 |
Param.International | false | 12.739769 |
Param.International | true | 0.000000 |
Param.International | Other | 16.685086 |
Param.OverallUsage | ||
Param.OverallUsage | MISSING | 67.032221 |
Param.OverallUsage | <0.18 | 42.560955 |
Param.OverallUsage | [0.18, 0.25> | 26.641231 |
Param.OverallUsage | [0.25, 0.315> | 96.254264 |
Param.OverallUsage | [0.315, 0.465> | 39.476156 |
Param.OverallUsage | [0.465, 0.555> | 95.284394 |
Param.OverallUsage | [0.555, 0.595> | 0.000000 |
Param.OverallUsage | [0.595, 0.785> | 28.361665 |
Param.OverallUsage | [0.785, 0.865> | 97.330400 |
Param.OverallUsage | [0.865, 0.96> | 46.329616 |
Param.OverallUsage | [0.96, 1.055> | 108.893254 |
Param.OverallUsage | ≥1.055 | 15.955747 |
Param.Sentiment | ||
Param.Sentiment | MISSING | 51.152249 |
Param.Sentiment | Negative | 44.386295 |
Param.Sentiment | Neutral | 67.931121 |
Param.Sentiment | Positive | 0.000000 |
Param.Sentiment | Other | 51.152249 |
Param.SubscriptionCount | ||
Param.SubscriptionCount | MISSING | 54.958616 |
Param.SubscriptionCount | <1.0025 | 45.647598 |
Param.SubscriptionCount | [1.0025, 2.0025> | 56.546142 |
Param.SubscriptionCount | ≥2.0025 | 0.000000 |
PaymentHistory | ||
PaymentHistory | MISSING | 38.183537 |
PaymentHistory | Same day | 16.995283 |
PaymentHistory | Same month | 0.000000 |
PaymentHistory | Same week | 50.015422 |
PaymentHistory | Other | 38.183537 |
Subscriptions(1).SubscriptionType | ||
Subscriptions(1).SubscriptionType | MISSING | 36.649743 |
Subscriptions(1).SubscriptionType | Data Only | 0.000000 |
Subscriptions(1).SubscriptionType | Gold | 56.049883 |
Subscriptions(1).SubscriptionType | Platinum | 30.874208 |
Subscriptions(1).SubscriptionType | Silver | 43.089281 |
Subscriptions(1).SubscriptionType | Other | 124.263290 |
The sum of all the weights (points) gives a score which is then mapped to a propensity according to the score distribution of the model. Note that the scores are mapped so the score range is 0..1000 instead of the raw values used in the model plots in Pega.
Score Range | Propensity |
---|---|
<-846.327577951935 | 0.1500000 |
[-846.327577951935, 183.291169358266> | 0.1619718 |
[183.291169358266, 422.887984770074> | 0.2051406 |
[422.887984770074, 442.314753587248> | 0.2587940 |
[442.314753587248, 520.021828855942> | 0.2823303 |
[520.021828855942, 526.497418461667> | 0.3196721 |
[526.497418461667, 532.973008067392> | 0.3309859 |
[532.973008067392, 539.448597673116> | 0.3813559 |
[539.448597673116, 545.924187278841> | 0.5431034 |
[545.924187278841, 552.399776884565> | 0.6145833 |
[552.399776884565, 610.680083336086> | 0.6274272 |
[610.680083336086, 720.765106633403> | 0.6467611 |
[720.765106633403, 727.240696239128> | 0.6458333 |
[727.240696239128, 740.191875450577> | 0.7812500 |
[740.191875450577, 759.618644267751> | 0.8170732 |
[759.618644267751, 785.521002690649> | 0.9150943 |
[785.521002690649, 817.898950719271> | 0.9793388 |
[817.898950719271, 876.179257170792> | 0.9827586 |
[876.179257170792, 915.032794805139> | 0.9825581 |
[915.032794805139, 3777.24340053539> | 0.9858491 |
≥3777.24340053539 | 0.9791667 |
Next to these two elements, there also is a PMML representation of an executable scorecard. This can be saved into a file and executed in Pega (or in any other platform that supports PMML).
write(sc$pmml, "scorecard.xml")
This is how that PMML file looks. There is a
<Scorecard>
element that includes the score to
propensity mapping as an output transformation. The raw scores are
transformed to the 0..1000 range using a linear normalization
transformation.
In addition to the propensity, the scorecard also outputs the raw score, the rescaled score, and the evidence and performance of the model (which are constant values for a snapshotted model). In addition three explantion fields are returned that can be used to give the reason codes when scoring the model.
<PMML xmlns="http://www.dmg.org/PMML-4_1" version="4.1">
<Header description="ADM Model export for Example Snapshot">
<Application name="adm2pmml" version="1.1"/>
<Timestamp>Fri Sep 22 15:17:15 2023</Timestamp>
</Header>
<DataDictionary>
<DataField name="Propensity" dataType="double" optype="continuous"/>
<DataField name="Normalized Score" dataType="double" optype="continuous"/>
<DataField name="Raw Score" dataType="double" optype="continuous"/>
<DataField name="Evidence" dataType="integer" optype="continuous"/>
<DataField name="Performance" dataType="double" optype="continuous"/>
<DataField name="Model ID" dataType="string" optype="categorical"/>
<DataField name="Explain-1" dataType="string" optype="categorical"/>
<DataField name="Explain-2" dataType="string" optype="categorical"/>
<DataField name="Explain-3" dataType="string" optype="categorical"/>
<DataField name="Age" dataType="double" optype="continuous"/>
<DataField name="CreditHistory" dataType="string" optype="categorical"/>
<DataField name="Devices(1).DeviceModel" dataType="string" optype="categorical"/>
<DataField name="Devices(1).DeviceType" dataType="string" optype="categorical"/>
<DataField name="Income" dataType="double" optype="continuous"/>
<DataField name="Param.CLVSegment" dataType="string" optype="categorical"/>
<DataField name="Param.FourG" dataType="string" optype="categorical"/>
<DataField name="Param.International" dataType="string" optype="categorical"/>
<DataField name="Param.OverallUsage" dataType="double" optype="continuous"/>
<DataField name="Param.Sentiment" dataType="string" optype="categorical"/>
<DataField name="Param.SubscriptionCount" dataType="double" optype="continuous"/>
<DataField name="PaymentHistory" dataType="string" optype="categorical"/>
<DataField name="Subscriptions(1).SubscriptionType" dataType="string" optype="categorical"/>
</DataDictionary>
<Scorecard modelName="Example Snapshot" functionName="regression" algorithmName="PEGA Adaptive Decisioning" useReasonCodes="true" reasonCodeAlgorithm="pointsAbove" baselineMethod="min" initialScore="0">
<MiningSchema>
<MiningField name="Age" usageType="active" invalidValueTreatment="asIs"/>
<MiningField name="CreditHistory" usageType="active" invalidValueTreatment="asIs"/>
<MiningField name="Devices(1).DeviceModel" usageType="active" invalidValueTreatment="asIs"/>
<MiningField name="Devices(1).DeviceType" usageType="active" invalidValueTreatment="asIs"/>
<MiningField name="Income" usageType="active" invalidValueTreatment="asIs"/>
<MiningField name="Param.CLVSegment" usageType="active" invalidValueTreatment="asIs"/>
<MiningField name="Param.FourG" usageType="active" invalidValueTreatment="asIs"/>
<MiningField name="Param.International" usageType="active" invalidValueTreatment="asIs"/>
<MiningField name="Param.OverallUsage" usageType="active" invalidValueTreatment="asIs"/>
<MiningField name="Param.Sentiment" usageType="active" invalidValueTreatment="asIs"/>
<MiningField name="Param.SubscriptionCount" usageType="active" invalidValueTreatment="asIs"/>
<MiningField name="PaymentHistory" usageType="active" invalidValueTreatment="asIs"/>
<MiningField name="Subscriptions(1).SubscriptionType" usageType="active" invalidValueTreatment="asIs"/>
</MiningSchema>
<Output>
<OutputField name="Normalized Score" feature="predictedValue" dataType="double" optype="continuous"/>
<OutputField name="Propensity" feature="transformedValue" dataType="double" optype="continuous">
<Discretize field="Normalized Score">
<DiscretizeBin binValue="0.15">
<Interval closure="openOpen" rightMargin="-846.327577951935"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.161971830985915">
<Interval closure="closedOpen" leftMargin="-846.327577951935" rightMargin="183.291169358266"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.205140640155189">
<Interval closure="closedOpen" leftMargin="183.291169358266" rightMargin="422.887984770074"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.258793969849246">
<Interval closure="closedOpen" leftMargin="422.887984770074" rightMargin="442.314753587248"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.282330345710627">
<Interval closure="closedOpen" leftMargin="442.314753587248" rightMargin="520.021828855942"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.319672131147541">
<Interval closure="closedOpen" leftMargin="520.021828855942" rightMargin="526.497418461667"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.330985915492958">
<Interval closure="closedOpen" leftMargin="526.497418461667" rightMargin="532.973008067392"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.38135593220339">
<Interval closure="closedOpen" leftMargin="532.973008067392" rightMargin="539.448597673116"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.543103448275862">
<Interval closure="closedOpen" leftMargin="539.448597673116" rightMargin="545.924187278841"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.614583333333333">
<Interval closure="closedOpen" leftMargin="545.924187278841" rightMargin="552.399776884565"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.627427184466019">
<Interval closure="closedOpen" leftMargin="552.399776884565" rightMargin="610.680083336086"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.646761133603239">
<Interval closure="closedOpen" leftMargin="610.680083336086" rightMargin="720.765106633403"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.645833333333333">
<Interval closure="closedOpen" leftMargin="720.765106633403" rightMargin="727.240696239128"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.78125">
<Interval closure="closedOpen" leftMargin="727.240696239128" rightMargin="740.191875450577"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.817073170731707">
<Interval closure="closedOpen" leftMargin="740.191875450577" rightMargin="759.618644267751"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.915094339622642">
<Interval closure="closedOpen" leftMargin="759.618644267751" rightMargin="785.521002690649"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.979338842975207">
<Interval closure="closedOpen" leftMargin="785.521002690649" rightMargin="817.898950719271"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.982758620689655">
<Interval closure="closedOpen" leftMargin="817.898950719271" rightMargin="876.179257170792"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.982558139534884">
<Interval closure="closedOpen" leftMargin="876.179257170792" rightMargin="915.032794805139"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.985849056603774">
<Interval closure="closedOpen" leftMargin="915.032794805139" rightMargin="3777.24340053539"/>
</DiscretizeBin>
<DiscretizeBin binValue="0.979166666666667">
<Interval closure="closedOpen" leftMargin="3777.24340053539"/>
</DiscretizeBin>
</Discretize>
</OutputField>
<OutputField name="Raw Score" feature="transformedValue" dataType="double" optype="continuous">
<NormContinuous field="Normalized Score">
<LinearNorm orig="0" norm="-0.843049390894435"/>
<LinearNorm orig="1000" norm="0.701211534961616"/>
</NormContinuous>
</OutputField>
<OutputField name="Evidence" feature="transformedValue" dataType="integer" optype="continuous">
<Constant>3922</Constant>
</OutputField>
<OutputField name="Performance" feature="transformedValue" dataType="double" optype="continuous">
<Constant>0.79615356519048</Constant>
</OutputField>
<OutputField name="Model ID" feature="transformedValue" dataType="string" optype="categorical">
<Constant>pychannel_Call Center_pydirection_Inbound_pygroup_Tablets_pyissue_Sales_pyname_Apple iPad Pro</Constant>
</OutputField>
<OutputField name="Explain-1" feature="reasonCode" rank="1"/>
<OutputField name="Explain-2" feature="reasonCode" rank="2"/>
<OutputField name="Explain-3" feature="reasonCode" rank="3"/>
</Output>
<ModelExplanation>
<PredictiveModelQuality targetField="Classifier" dataUsage="training" numOfRecords="3922">
<LiftData rankingQuality="0.59230713038096" targetFieldValue="Positive">
<ModelLiftGraph>
<LiftGraph>
<XCoordinates>
<Array type="int">9 79 1109 1307 2087 2147 2217 2275 2332 2379 2790 3283 3306 3353 3393 3445 3565 3709 3794 3899 3922</Array>
</XCoordinates>
<YCoordinates>
<Array type="int">1 11 211 51 220 19 23 22 31 29 258 319 15 37 33 48 118 142 84 104 23</Array>
</YCoordinates>
</LiftGraph>
</ModelLiftGraph>
</LiftData>
<ROC positiveTargetFieldValue="Positive">
<ROCGraph>
<XCoordinates>
<Array type="int">1 0.996231747527084 0.968440885539331 0.582666038624588 0.513424399434762 0.249646726330664 0.230334432406971 0.208195949128592 0.191238813000471 0.178991992463495 0.170513424399435 0.0984455958549223 0.0164861045690061 0.0127178520960904 0.00800753650494583 0.00471031559114461 0.00282618935468676 0.00188412623645784 0.000942063118228921 0.000471031559114461 0</Array>
</XCoordinates>
<YCoordinates>
<Array type="int">1 0.999444135630906 0.993329627570873 0.876042245692051 0.84769316286826 0.725403001667593 0.714841578654808 0.702056698165648 0.689827682045581 0.672595886603669 0.656475819899944 0.513062812673708 0.33574207893274 0.327404113396331 0.306837131739855 0.288493607559755 0.261812117843246 0.196220122290161 0.117287381878822 0.0705947748749305 0.0127848804891606</Array>
</YCoordinates>
</ROCGraph>
</ROC>
</PredictiveModelQuality>
</ModelExplanation>
<Characteristics>
<Characteristic name="Age___score" reasonCode="Age" baselineScore="0">
<Attribute partialScore="96.4375260487076" reasonCode="Age|Missing|score=96|min=0|avg=85|max=149">
<SimplePredicate field="Age" operator="isMissing"/>
</Attribute>
<Attribute partialScore="148.308844091508" reasonCode="Age|<24.1|score=148|min=0|avg=85|max=149">
<SimplePredicate field="Age" operator="lessThan" value="24.12"/>
</Attribute>
<Attribute partialScore="13.0234770081693" reasonCode="Age|<29.1|score=13|min=0|avg=85|max=149">
<SimplePredicate field="Age" operator="lessThan" value="29.08"/>
</Attribute>
<Attribute partialScore="143.479613194141" reasonCode="Age|<35.2|score=143|min=0|avg=85|max=149">
<SimplePredicate field="Age" operator="lessThan" value="35.16"/>
</Attribute>
<Attribute partialScore="91.6345071010996" reasonCode="Age|<37.1|score=92|min=0|avg=85|max=149">
<SimplePredicate field="Age" operator="lessThan" value="37.08"/>
</Attribute>
<Attribute partialScore="118.329682710395" reasonCode="Age|<39.2|score=118|min=0|avg=85|max=149">
<SimplePredicate field="Age" operator="lessThan" value="39.16"/>
</Attribute>
<Attribute partialScore="28.8299751392086" reasonCode="Age|<43.2|score=29|min=0|avg=85|max=149">
<SimplePredicate field="Age" operator="lessThan" value="43.16"/>
</Attribute>
<Attribute partialScore="116.010849508305" reasonCode="Age|<46|score=116|min=0|avg=85|max=149">
<SimplePredicate field="Age" operator="lessThan" value="46.04"/>
</Attribute>
<Attribute partialScore="149.301995534391" reasonCode="Age|<49.1|score=149|min=0|avg=85|max=149">
<SimplePredicate field="Age" operator="lessThan" value="49.08"/>
</Attribute>
<Attribute partialScore="21.8824180050011" reasonCode="Age|<54|score=22|min=0|avg=85|max=149">
<SimplePredicate field="Age" operator="lessThan" value="54.04"/>
</Attribute>
<Attribute partialScore="0" reasonCode="Age|<56.1|score=0|min=0|avg=85|max=149">
<SimplePredicate field="Age" operator="lessThan" value="56.12"/>
</Attribute>
<Attribute partialScore="70.8182515576495" reasonCode="Age|>=56.1|score=71|min=0|avg=85|max=149">
<SimplePredicate field="Age" operator="greaterOrEqual" value="56.12"/>
</Attribute>
</Characteristic>
<Characteristic name="CreditHistory___score" reasonCode="CreditHistory" baselineScore="0">
<Attribute partialScore="26.6167114705942" reasonCode="CreditHistory|Missing|score=27|min=0|avg=19|max=35">
<SimplePredicate field="CreditHistory" operator="isMissing"/>
</Attribute>
<Attribute partialScore="35.0673420351103" reasonCode="CreditHistory|Paid on time|score=35|min=0|avg=19|max=35">
<SimplePredicate field="CreditHistory" operator="equal" value="Paid on time"/>
</Attribute>
<Attribute partialScore="0" reasonCode="CreditHistory|Past arrears|score=0|min=0|avg=19|max=35">
<SimplePredicate field="CreditHistory" operator="equal" value="Past arrears"/>
</Attribute>
<Attribute partialScore="14.0561067508589" reasonCode="CreditHistory|Repaid on time|score=14|min=0|avg=19|max=35">
<SimplePredicate field="CreditHistory" operator="equal" value="Repaid on time"/>
</Attribute>
<Attribute partialScore="26.6167114705942" reasonCode="CreditHistory|Remaining Symbols|score=27|min=0|avg=19|max=35">
<True/>
</Attribute>
</Characteristic>
<Characteristic name="Devices(1).DeviceModel___score" reasonCode="Devices(1).DeviceModel" baselineScore="0">
<Attribute partialScore="77.7497655929801" reasonCode="Devices(1).DeviceModel|Missing|score=78|min=0|avg=72|max=124">
<SimplePredicate field="Devices(1).DeviceModel" operator="isMissing"/>
</Attribute>
<Attribute partialScore="0" reasonCode="Devices(1).DeviceModel|Apple iPad 3|score=0|min=0|avg=72|max=124">
<SimplePredicate field="Devices(1).DeviceModel" operator="equal" value="Apple iPad 3"/>
</Attribute>
<Attribute partialScore="124.445622697435" reasonCode="Devices(1).DeviceModel|Apple iPhone 5|score=124|min=0|avg=72|max=124">
<SimplePredicate field="Devices(1).DeviceModel" operator="equal" value="Apple iPhone 5"/>
</Attribute>
<Attribute partialScore="86.0462854050385" reasonCode="Devices(1).DeviceModel|HTC One M8 Huawei Honor 7|score=86|min=0|avg=72|max=124">
<SimpleSetPredicate field="Devices(1).DeviceModel" booleanOperator="isIn">
<Array type="string">"HTC One M8" "Huawei Honor 7"</Array>
</SimpleSetPredicate>
</Attribute>
<Attribute partialScore="109.124668597584" reasonCode="Devices(1).DeviceModel|Nokia Lumia Icon|score=109|min=0|avg=72|max=124">
<SimplePredicate field="Devices(1).DeviceModel" operator="equal" value="Nokia Lumia Icon"/>
</Attribute>
<Attribute partialScore="76.5284613360182" reasonCode="Devices(1).DeviceModel|Samsung Galaxy S5|score=77|min=0|avg=72|max=124">
<SimplePredicate field="Devices(1).DeviceModel" operator="equal" value="Samsung Galaxy S5"/>
</Attribute>
<Attribute partialScore="94.6434143572362" reasonCode="Devices(1).DeviceModel|Sony Xperia M4 Aqua|score=95|min=0|avg=72|max=124">
<SimplePredicate field="Devices(1).DeviceModel" operator="equal" value="Sony Xperia M4 Aqua"/>
</Attribute>
<Attribute partialScore="50.4204637927994" reasonCode="Devices(1).DeviceModel|Remaining Symbols|score=50|min=0|avg=72|max=124">
<True/>
</Attribute>
</Characteristic>
<Characteristic name="Devices(1).DeviceType___score" reasonCode="Devices(1).DeviceType" baselineScore="0">
<Attribute partialScore="52.2867273710315" reasonCode="Devices(1).DeviceType|Missing|score=52|min=0|avg=43|max=63">
<SimplePredicate field="Devices(1).DeviceType" operator="isMissing"/>
</Attribute>
<Attribute partialScore="63.1897801411752" reasonCode="Devices(1).DeviceType|Smart Phone|score=63|min=0|avg=43|max=63">
<SimplePredicate field="Devices(1).DeviceType" operator="equal" value="Smart Phone"/>
</Attribute>
<Attribute partialScore="0" reasonCode="Devices(1).DeviceType|Tablet|score=0|min=0|avg=43|max=63">
<SimplePredicate field="Devices(1).DeviceType" operator="equal" value="Tablet"/>
</Attribute>
<Attribute partialScore="52.2867273710315" reasonCode="Devices(1).DeviceType|Remaining Symbols|score=52|min=0|avg=43|max=63">
<True/>
</Attribute>
</Characteristic>
<Characteristic name="Income___score" reasonCode="Income" baselineScore="0">
<Attribute partialScore="76.5995143163437" reasonCode="Income|Missing|score=77|min=0|avg=68|max=154">
<SimplePredicate field="Income" operator="isMissing"/>
</Attribute>
<Attribute partialScore="83.4234948582504" reasonCode="Income|<24470.9|score=83|min=0|avg=68|max=154">
<SimplePredicate field="Income" operator="lessThan" value="24470.88"/>
</Attribute>
<Attribute partialScore="153.195278914682" reasonCode="Income|<29058.4|score=153|min=0|avg=68|max=154">
<SimplePredicate field="Income" operator="lessThan" value="29058.4"/>
</Attribute>
<Attribute partialScore="78.3446929175841" reasonCode="Income|<43476.3|score=78|min=0|avg=68|max=154">
<SimplePredicate field="Income" operator="lessThan" value="43476.32"/>
</Attribute>
<Attribute partialScore="20.9556304366338" reasonCode="Income|<46425.4|score=21|min=0|avg=68|max=154">
<SimplePredicate field="Income" operator="lessThan" value="46425.44"/>
</Attribute>
<Attribute partialScore="153.873446293297" reasonCode="Income|<49374.6|score=154|min=0|avg=68|max=154">
<SimplePredicate field="Income" operator="lessThan" value="49374.56"/>
</Attribute>
<Attribute partialScore="65.4321244056093" reasonCode="Income|<52651.4|score=65|min=0|avg=68|max=154">
<SimplePredicate field="Income" operator="lessThan" value="52651.36"/>
</Attribute>
<Attribute partialScore="96.9187043584835" reasonCode="Income|<56911.2|score=97|min=0|avg=68|max=154">
<SimplePredicate field="Income" operator="lessThan" value="56911.2"/>
</Attribute>
<Attribute partialScore="20.3343614889223" reasonCode="Income|<62809.4|score=20|min=0|avg=68|max=154">
<SimplePredicate field="Income" operator="lessThan" value="62809.44"/>
</Attribute>
<Attribute partialScore="0" reasonCode="Income|>=62809.4|score=0|min=0|avg=68|max=154">
<SimplePredicate field="Income" operator="greaterOrEqual" value="62809.44"/>
</Attribute>
</Characteristic>
<Characteristic name="Param.CLVSegment___score" reasonCode="Param.CLVSegment" baselineScore="0">
<Attribute partialScore="20.7472661579346" reasonCode="Param.CLVSegment|Missing|score=21|min=0|avg=13|max=27">
<SimplePredicate field="Param.CLVSegment" operator="isMissing"/>
</Attribute>
<Attribute partialScore="27.0933958462666" reasonCode="Param.CLVSegment|Develop|score=27|min=0|avg=13|max=27">
<SimplePredicate field="Param.CLVSegment" operator="equal" value="Develop"/>
</Attribute>
<Attribute partialScore="0" reasonCode="Param.CLVSegment|Nurture|score=0|min=0|avg=13|max=27">
<SimplePredicate field="Param.CLVSegment" operator="equal" value="Nurture"/>
</Attribute>
<Attribute partialScore="5.35107331015385" reasonCode="Param.CLVSegment|VIP|score=5|min=0|avg=13|max=27">
<SimplePredicate field="Param.CLVSegment" operator="equal" value="VIP"/>
</Attribute>
<Attribute partialScore="20.7472661579346" reasonCode="Param.CLVSegment|Remaining Symbols|score=21|min=0|avg=13|max=27">
<True/>
</Attribute>
</Characteristic>
<Characteristic name="Param.FourG___score" reasonCode="Param.FourG" baselineScore="0">
<Attribute partialScore="22.6941016911203" reasonCode="Param.FourG|Missing|score=23|min=0|avg=15|max=23">
<SimplePredicate field="Param.FourG" operator="isMissing"/>
</Attribute>
<Attribute partialScore="0" reasonCode="Param.FourG|false|score=0|min=0|avg=15|max=23">
<SimplePredicate field="Param.FourG" operator="equal" value="false"/>
</Attribute>
<Attribute partialScore="19.1325864111918" reasonCode="Param.FourG|true|score=19|min=0|avg=15|max=23">
<SimplePredicate field="Param.FourG" operator="equal" value="true"/>
</Attribute>
<Attribute partialScore="22.6941016911203" reasonCode="Param.FourG|Remaining Symbols|score=23|min=0|avg=15|max=23">
<True/>
</Attribute>
</Characteristic>
<Characteristic name="Param.International___score" reasonCode="Param.International" baselineScore="0">
<Attribute partialScore="16.68508599479" reasonCode="Param.International|Missing|score=17|min=0|avg=9|max=17">
<SimplePredicate field="Param.International" operator="isMissing"/>
</Attribute>
<Attribute partialScore="12.7397685457491" reasonCode="Param.International|false|score=13|min=0|avg=9|max=17">
<SimplePredicate field="Param.International" operator="equal" value="false"/>
</Attribute>
<Attribute partialScore="0" reasonCode="Param.International|true|score=0|min=0|avg=9|max=17">
<SimplePredicate field="Param.International" operator="equal" value="true"/>
</Attribute>
<Attribute partialScore="16.68508599479" reasonCode="Param.International|Remaining Symbols|score=17|min=0|avg=9|max=17">
<True/>
</Attribute>
</Characteristic>
<Characteristic name="Param.OverallUsage___score" reasonCode="Param.OverallUsage" baselineScore="0">
<Attribute partialScore="67.0322213433807" reasonCode="Param.OverallUsage|Missing|score=67|min=0|avg=59|max=109">
<SimplePredicate field="Param.OverallUsage" operator="isMissing"/>
</Attribute>
<Attribute partialScore="42.5609546212072" reasonCode="Param.OverallUsage|<0.2|score=43|min=0|avg=59|max=109">
<SimplePredicate field="Param.OverallUsage" operator="lessThan" value="0.18"/>
</Attribute>
<Attribute partialScore="26.6412308326057" reasonCode="Param.OverallUsage|<0.3|score=27|min=0|avg=59|max=109">
<SimplePredicate field="Param.OverallUsage" operator="lessThan" value="0.25"/>
</Attribute>
<Attribute partialScore="96.2542641931648" reasonCode="Param.OverallUsage|<0.3|score=96|min=0|avg=59|max=109">
<SimplePredicate field="Param.OverallUsage" operator="lessThan" value="0.315"/>
</Attribute>
<Attribute partialScore="39.4761560970849" reasonCode="Param.OverallUsage|<0.5|score=39|min=0|avg=59|max=109">
<SimplePredicate field="Param.OverallUsage" operator="lessThan" value="0.465"/>
</Attribute>
<Attribute partialScore="95.2843939702075" reasonCode="Param.OverallUsage|<0.6|score=95|min=0|avg=59|max=109">
<SimplePredicate field="Param.OverallUsage" operator="lessThan" value="0.555"/>
</Attribute>
<Attribute partialScore="0" reasonCode="Param.OverallUsage|<0.6|score=0|min=0|avg=59|max=109">
<SimplePredicate field="Param.OverallUsage" operator="lessThan" value="0.595"/>
</Attribute>
<Attribute partialScore="28.361665137313" reasonCode="Param.OverallUsage|<0.8|score=28|min=0|avg=59|max=109">
<SimplePredicate field="Param.OverallUsage" operator="lessThan" value="0.785"/>
</Attribute>
<Attribute partialScore="97.3303999087408" reasonCode="Param.OverallUsage|<0.9|score=97|min=0|avg=59|max=109">
<SimplePredicate field="Param.OverallUsage" operator="lessThan" value="0.865"/>
</Attribute>
<Attribute partialScore="46.3296157964835" reasonCode="Param.OverallUsage|<1|score=46|min=0|avg=59|max=109">
<SimplePredicate field="Param.OverallUsage" operator="lessThan" value="0.96"/>
</Attribute>
<Attribute partialScore="108.893254293129" reasonCode="Param.OverallUsage|<1.1|score=109|min=0|avg=59|max=109">
<SimplePredicate field="Param.OverallUsage" operator="lessThan" value="1.055"/>
</Attribute>
<Attribute partialScore="15.95574724619" reasonCode="Param.OverallUsage|>=1.1|score=16|min=0|avg=59|max=109">
<SimplePredicate field="Param.OverallUsage" operator="greaterOrEqual" value="1.055"/>
</Attribute>
</Characteristic>
<Characteristic name="Param.Sentiment___score" reasonCode="Param.Sentiment" baselineScore="0">
<Attribute partialScore="51.1522491218495" reasonCode="Param.Sentiment|Missing|score=51|min=0|avg=43|max=68">
<SimplePredicate field="Param.Sentiment" operator="isMissing"/>
</Attribute>
<Attribute partialScore="44.3862949080378" reasonCode="Param.Sentiment|Negative|score=44|min=0|avg=43|max=68">
<SimplePredicate field="Param.Sentiment" operator="equal" value="Negative"/>
</Attribute>
<Attribute partialScore="67.9311208685448" reasonCode="Param.Sentiment|Neutral|score=68|min=0|avg=43|max=68">
<SimplePredicate field="Param.Sentiment" operator="equal" value="Neutral"/>
</Attribute>
<Attribute partialScore="0" reasonCode="Param.Sentiment|Positive|score=0|min=0|avg=43|max=68">
<SimplePredicate field="Param.Sentiment" operator="equal" value="Positive"/>
</Attribute>
<Attribute partialScore="51.1522491218495" reasonCode="Param.Sentiment|Remaining Symbols|score=51|min=0|avg=43|max=68">
<True/>
</Attribute>
</Characteristic>
<Characteristic name="Param.SubscriptionCount___score" reasonCode="Param.SubscriptionCount" baselineScore="0">
<Attribute partialScore="54.958615685671" reasonCode="Param.SubscriptionCount|Missing|score=55|min=0|avg=47|max=57">
<SimplePredicate field="Param.SubscriptionCount" operator="isMissing"/>
</Attribute>
<Attribute partialScore="45.6475981448893" reasonCode="Param.SubscriptionCount|<1|score=46|min=0|avg=47|max=57">
<SimplePredicate field="Param.SubscriptionCount" operator="lessThan" value="1.0025"/>
</Attribute>
<Attribute partialScore="56.5461419676674" reasonCode="Param.SubscriptionCount|<2|score=57|min=0|avg=47|max=57">
<SimplePredicate field="Param.SubscriptionCount" operator="lessThan" value="2.0025"/>
</Attribute>
<Attribute partialScore="0" reasonCode="Param.SubscriptionCount|>=2|score=0|min=0|avg=47|max=57">
<SimplePredicate field="Param.SubscriptionCount" operator="greaterOrEqual" value="2.0025"/>
</Attribute>
</Characteristic>
<Characteristic name="PaymentHistory___score" reasonCode="PaymentHistory" baselineScore="0">
<Attribute partialScore="38.1835370957457" reasonCode="PaymentHistory|Missing|score=38|min=0|avg=30|max=50">
<SimplePredicate field="PaymentHistory" operator="isMissing"/>
</Attribute>
<Attribute partialScore="16.995282852412" reasonCode="PaymentHistory|Same day|score=17|min=0|avg=30|max=50">
<SimplePredicate field="PaymentHistory" operator="equal" value="Same day"/>
</Attribute>
<Attribute partialScore="0" reasonCode="PaymentHistory|Same month|score=0|min=0|avg=30|max=50">
<SimplePredicate field="PaymentHistory" operator="equal" value="Same month"/>
</Attribute>
<Attribute partialScore="50.0154224744931" reasonCode="PaymentHistory|Same week|score=50|min=0|avg=30|max=50">
<SimplePredicate field="PaymentHistory" operator="equal" value="Same week"/>
</Attribute>
<Attribute partialScore="38.1835370957457" reasonCode="PaymentHistory|Remaining Symbols|score=38|min=0|avg=30|max=50">
<True/>
</Attribute>
</Characteristic>
<Characteristic name="Subscriptions(1).SubscriptionType___score" reasonCode="Subscriptions(1).SubscriptionType" baselineScore="0">
<Attribute partialScore="36.6497434517809" reasonCode="Subscriptions(1).SubscriptionType|Missing|score=37|min=0|avg=29|max=124">
<SimplePredicate field="Subscriptions(1).SubscriptionType" operator="isMissing"/>
</Attribute>
<Attribute partialScore="0" reasonCode="Subscriptions(1).SubscriptionType|Data Only|score=0|min=0|avg=29|max=124">
<SimplePredicate field="Subscriptions(1).SubscriptionType" operator="equal" value="Data Only"/>
</Attribute>
<Attribute partialScore="56.0498831256715" reasonCode="Subscriptions(1).SubscriptionType|Gold|score=56|min=0|avg=29|max=124">
<SimplePredicate field="Subscriptions(1).SubscriptionType" operator="equal" value="Gold"/>
</Attribute>
<Attribute partialScore="30.8742081334001" reasonCode="Subscriptions(1).SubscriptionType|Platinum|score=31|min=0|avg=29|max=124">
<SimplePredicate field="Subscriptions(1).SubscriptionType" operator="equal" value="Platinum"/>
</Attribute>
<Attribute partialScore="43.0892812621927" reasonCode="Subscriptions(1).SubscriptionType|Silver|score=43|min=0|avg=29|max=124">
<SimplePredicate field="Subscriptions(1).SubscriptionType" operator="equal" value="Silver"/>
</Attribute>
<Attribute partialScore="124.26329016258" reasonCode="Subscriptions(1).SubscriptionType|Remaining Symbols|score=124|min=0|avg=29|max=124">
<True/>
</Attribute>
</Characteristic>
</Characteristics>
</Scorecard>
</PMML>