27.05.2019 / Mika Laukkanen

Heti aluksi on mainittava, että tämä blogi on kohdistettu pääasiassa henkilöille, joilla on liittymäpintaa Business Intelligence ratkaisuihin ja nyt niiden parantaminen tekoälyn avulla on alkanut kiinnostaa.


Tekoälyyn liittyvissä esityksissä käytetään usein seuravaanlaista esitystapaa, kun halutaan kuvata mihin tekoäly asemoituu datan hyödyntämisessä.

 

Kuvan alkupää lähtee perusraportoinnista (mitä tapahtui) ja etenee kohti edistyneempää analytiikkaa (ennustamista) – samalla kun vaikeusaste ja ratkaisun arvo kasvaa. Loppupäässä on luonnollisesti kyse nykytermein tekoälystä tai AI:sta.

Pitäisikö kuvaa tulkita niin, että tekoäly on kehittyneempää Business Intelligenceä? 

Yllättävän usein olen törmännyt eri yrityksissä ajatteluun, jossa tekoälyn kehittäminen on sidottu Business Intelligence järjestelmien kehittämiseen. Ajatuksena se, että kun kerätään dataa ja tehdään raportteja, niin sen jälkeen ollaan kypsiä hyödyntämään koneoppimista (tekoälyä) samassa aihepiirissä.

Eli tekoälyprojektien aloittamista saatetaan (turhaan) viivytellä, jos “perusraportointi ei ole kunnossa”.

Kynttilöistä ei kehittynyt hehkulamppuja

Jos katsotaan reaalimaailman tekoälysovelluksia, niin vain melko harvassa niistä on havaittavissa em. kehityskulku raportoinnista tekoälyyn. Seuraavissa tapauksissa ko. esitystapa ei oikein edes toimi. Eikä varmaan ole tarkoituskaan.

  • Kuvantunnistus ja konenäkö
  • Tekstianalytiikka ja luonnollisen kielen tunnistus
  • Ennakoiva huolto reaaliaikaisella IoT datalla
  • Anomalioiden löytäminen Big Datasta
  • Musiikin tai kuvien tuottaminen tekoälyn avulla

Eli tekoälyratkaisuja syntyy paljon alueille, joissa perinteisellä Business Intelligencellä ei ole roolia.

Toisaalta, tekoälyratkaisuja voidaan usein kehittää ilman taustalla olevaa BI ratkaisua vaikka se toisikin lisäarvoa tai asioiden välillä näyttäisi olevan luonnollinen jatkumo.

Otetaan esimerkki asiakasanalytiikasta, vaikka asiakaspoistuma. Jos BI:n ja AI:n sitoo toisiinsa, niin on luonnollista rakentaa ensiksi BI-järjestelmä, jossa asiakastiedot ovat tietovarastossa, josta tehdään nippu raportointia, esim. “kuinka monta % asiakkaista poistuu vuosittain”.  Ja kun tämä on valmiina, niin hyödynnetään tekoälyä ennustamaan, että ketkä ovat seuraavat kytkimen nostajat.

Näin voi toimia, mutta käytännön elämässä on toimittu myös käänteisesti.

Kuvassa on esitetty erään oikean tekoälyprojektin vaiheet. Siinä aloitettiin keräämällä asiakastietoja monista eri lähteistä, vain ennustamista varten. Kun myöhemmin ennustemallit huomattiin toimiviksi (olivat jo tuotannossa), niin ko. tietoja alettiin tuoda BI-järjestelmään.

Kuulin joskus hauskan vertauksen, jossa todettiin ettei kynttilöistä kehittynyt hehkulamppuja. Siinä oli kyse disruptiivista keksinnöistä, hehkulamppu ei ollut vain parempi kynttilä. Mielestäni sama analogia toimii myös aika hyvin BI:n ja AI:n välillä.

Eri tarkoitus, eri kehityspolut

Business Intelligence -ratkaisut ovat nyt ja jatkossa kivijalka yritysten raportoinnille ja analytiikalle, jota ilman ei tule toimeen. Omenakauppiaan tulee tietää monta omenaa meni kaupaksi eilen, viime viikolla ja joulumyynnissä.

Tekoälyratkaisut eivät auta omenakauppiasta vain ennustamaan omenoiden menekkiä, vaan myös tulkkaamaan kiinalaisten turistien omenatiedustelut ja automatisoimaan kirjanpidon.

BI ja AI ratkaisuilla on yleensä eri tavoitteet, mutta myös itse projektit saattavat erota kuin yö ja päivä toisistaan. Näistä syistä en sitoisi niiden kehittämissuunnitelmia liian tiukasti toisistaan riippuvaiseksi.


28.08.2018 / Mika Laukkanen

Tässä on kollega Ville Niemijärven kirjoitus analytiikan (nykyään tekoäly tai koneoppiminen) hyödyntämisestä vuodelta 2014. Ajattelin hieman päivittää sitä ja laittaa uudelleen jakoon, kun aihe on ajankohtaisempi kuin artikkelin ilmestymisvuonna. Kukapa muuten tietää, että millä termillä näitä ratkaisuja kutsutaan seuraavan neljän vuoden päästä?


Asiakaspoistuma-analyysi (eng. churn) tarkoittaa analytiikan prosessiketjua, jossa selvitetään mitkä asiakkaat ovat vaarassa poistua, millä todennäköisyydellä ja miksi. Poistuma tarkoittaa sitä kun asiakas lopettaa sopimuksen palveluntarjoajan kanssa tai yksinkertaisesti lopettaa asioimisen yrityksessä. Voidaan puhua myös asiakaspidosta (eng. retention). Termi liittyy läheisesti myös asiakkuuden elinkaaren arvon määrittämiseen (customer life-cycle value) ja nykypäivän yhteen muotitermiin; customer journey. Itse näkisin kuitenkin, että kyseessä on enemmänkin yksinkertaisesti paremmasta asiakashallinnasta ja huolenpidosta…

Poistuma-analyysi sopii hyvin sopimusliiketoimintaan, esimerkiksi sähköyhtiöille, puhelin- ja internet operaattoreille, kuntosaliketjuille tai lehtitaloille. Mutta poistuma-analyysiä voidaan tehdä myös vähittäiskaupassa, jos vain asiakas tunnistetaan (kanta-asiakasjärjestelmän avulla). Tällöin pitää vain päättää milloin asiakas on poistunut? Mikä on riittävän pitkä aika, että asiakas ei ole käynyt kaupassa, jotta voidaan päätellä hänen vaihtaneen vakiokauppaansa.

Tässä kirjoituksessa käydään läpi asiakaspoistuma-analyysiä ja miten se tehdään käytännössä. Lähestymme aihetta yleisestä yksityiseen. Lopussa näytämme kädestä pitäen miten homma tehdään alusta loppuun.

Asiakaspoistuma-analyysin tuotto on helppo laskea

Kaikessa analytiikkatyössä tulee laskea mitä saamme analyysistä irti, mikä on investoinnin ROI, paljonko jää viivan alle. Jollei investointi tuota moninkertaisesti enemmän kuin analyysi ja tiedon keräys maksaa, ei sitä kannata tehdä.

Asiakaspoistuman osalta tämä on erittäin helppoa tehdä. Otetaan esimerkki sähkön myynnistä.

Sähköyhtiöllä on 100 000 asiakasta. Keskimääräinen laskutus per asiakas on 1000e/vuosi. Nopea selvitys sähköyhtiön sopimuskannasta kertoo, että keskimäärin vuodessa sopimuksen lopettaa 8% asiakkaista.

Tämä tarkoittaa, että asiakkaita poistuu 8000 kpl/vuosi. Rahassa tämä on siis 8000kpl*1000e=8 miljoonaa euroa. Tuo on se potti, jota lähdemme pienentämään ja sitä kautta tekemään asiakkaallemme lisää rahaa.

Osa näistä 8000:sta poistuu luonnollisen poistuman kautta, osa vaihtaa kaupunkia. Ja sitten on se osa joka vaihtaa palveluntarjoajaa koska yrityksen tuote, palvelu tai hinta ei ole riittävän hyvä. Tai kilpailijalla on parempi. Kutsuttakoon tätä laadulliseksi poistumaksi.

Kun menemme asiakkaalle, teemme aina vastaavan laskelman ja arvioimme asiakkaan kanssa yhdessä, mikä on tuon laadullisen poistuman osuus ja kuinka paljon on realistista saada pienennettyä sitä. Sähköyhtiöiden osalta voimme katsoa julkisesta datasta, esim. THL:ltä, mikä on muuttoliike kunnasta pois päin ja paljonko poistuu jalat edellä. Näin emme joudu arvailemaan vaan meillä on faktaa laskelmien taustalla. Sanottakoon esimerkkinä, että sähköyhtiön tapauksessa 3% on luonnollista/muuttopoistumaa ja loput 5% on laadullista poistumaa. Poistumaa, johon voimme vaikuttaa. Tähän iskemme kyntemme.

Entä jos voimme pudottaa tuota 5% poistumaa vaikka vain yhden prosenttiyksikön? Tämä tarkoittaisi 1000 asiakasta ja miljoonaa euroa vuodessa lisämyyntiä. Jos analyysi maksaa 20 000 euroa, on investoinnin tuotto aika huima. Se on jotain sellaista, jota kannattaisi kaikkien tavoitella.

Mitä dataa poistuma-analyysi tarvitsee?

Ensiksi otamme historiatietoa eli tietoa jo poistuneista ja ei-poistuneista asiakkaista. Toisin sanoen sähköyhtiön tapauksessa luemme sopimustietokantaa ja sähkönkulutustietoja (yhä yleisemmin tietovarastoa tai edistyneimmissä yrityksessä erikseen toteutettua analytiikkakantaa) ja haemme sieltä mahdollisimman pitkän historian, mahdollisimman monelta asiakkaalta. Mitä enemmän sitä parempi. Historia-aineistoon otetaan mukaan asiakkaiden taustatietoja sekä käyttäytymiseen liittyvää tietoa.

Taustatietoja ovat esimerkiksi

  • alue/kaupunki/postinumero
  • demografiatiedot (tulo- ja koulutustaso)
  • sukupuoli
  • ikä
  • asiakkuuden kesto
  • talotyyppi, koko, lämmitysmuoto jne. toimialaspesifistä tietoa

Käyttäytymiseen liittyviä tietoja ovat esimerkiksi:

  • kulutus- ja laskutushistoria (esim. keskimääräinen kulutus per kk)
  • ostetut tuotteet (eli millainen sopimus)
  • reklamaatiota, asiakaspalautteet, yhteydet asiakaspalveluun
  • maksuhäiriöt
  • muut toimialaspesifit tiedot
  • Ja lopuksi se tärkein tieto: onko asiakas poistunut vai ei (K/E)

Monilta yrityksiltä ei löydy kaikkia näitä tietoja, olen nähnyt yrityksiä joilla asiakkaista tiedetään käytännössä vain numero ja osoite. Ei edes nimeä tai sitä onko kyseessä yritys- vai henkilöasiakas. Ennen kuin analytiikkaa päästään hyödyntämään täysillä, on edessä usein systemaattinen tiedon keräämisvaihe ja mahdollisesti muutokset lähdejärjestelmiin/tietovarastoon.

Ennen analyysia emme tiedä mitkä tiedot ovat relevantteja ja vaikuttavat poistumisen takana ja sen selvittäminen onkin koko homman ydin.

Miten poistuma-analyysi tehdään?

Kun tiedot on kasassa, jaamme datan kahteen eri settiin: opetusdataan ja testidataan (esimerkiksi suhteessa 60-40). Mainittakoon että data voitaisiin jakaa myös kolmeen eri settiin: opetus-, testi- ja validointidata. Joka tapauksessa, opetusdatan avulla muodostamme ennustemallin, käyttäen liiketoimintaongelmaan sopivaa analytiikka-algoritmia (esim. gradient boosting, neuroverkko, logistinen regressio, naive-bayes). Parhaan mallin löytäminen vaatii useita iteraatioita.

Työ vaatii analytiikkasoftan. Itse suosimme Pythonia ja R:ää, jotka sitten voivat pyöriä vaikkapa Azuren tai AWS:n pilvessä.

Muodostunutta ennustemallia testataan testidataa vasten. Koska testidata on historiadataa, tiedämme onko asiakas poistunut vai ei. Testin voisi ajatella siten, että peitämme tuon poistuma-tiedon ja kuvittelemme, että kyseessä olisi täysin uutta dataa. Annamme mallin tehdä ennusteen eli kertoa todennäköisyydet poistua kullekin asiakkaalle. Tämän jälkeen tarkastamme tuloksen ja arvioimme mallin tarkkuuden. Näin varmistamme toimiiko malli ja kannattaako sitä hyödyntää uutta dataa vasten vai pitääkö sitä parantaa.

Asiakaspoistuma-analyysin tulokset

Poistuma-analyysi tuottaa nipun tuloksia, esim.:

  1. Kaikki nykyiset asiakkaat listattuna poistumatodennäköisyyden mukaan
  2. Selittävät tekijät poistuman taustalla
  3. Ennustemallin hyvyyden kriteerit (AUC, Confusion matrix..)

asiakaspoistuma_tulos

Ensimmäinen tarkoittaa siis konkreettista listaa, jonka voit heittää myynti-/asiakaspalveluyksikölle tai soittokoneistolla ja käskeä kontaktoimaan heti aluksi akuuteimmat top 100 poistujaa.

Toinen tuotos eli selittävät tekijät antavat tulkinnan ilmiölle. Ne kertovat miksi asiakkaat poistuvat. Nämä tulokset on erittäin arvokasta tietoa niin asiakaspalvelulle, myynnille kuin tuotepäälliköille, liiketoiminnan kehittämiselle ylipäätään.

Analyysissä voi tulla esille, että hinta ei olekaan merkittävä tekijä poistuman taustalla vaan huono asiakaspalvelu tai tietylle asiakassegmentille sopimaton tuotepaletti (esim. sähköyhtiöltä puuttuu ekosähkö valikoimastaan). Riippuen valitusta menetelmästä, tulee eroja miten suoraviivaisesti näitä selittäviä tekijöitä voidaan tulkita. Esimerkiksi syvän neuroverkon (deep learning) tulkinta on huomattavasti monimutkaisempaa kuin logistisen regression antamisen tulosten.

Parhaimmassa tapauksessa analyysin tuotoksista voidaan generoida sääntökoneisto ja sisällyttää se esimerkiksi asiakaspalvelun työpöydälle tai CRM-järjestelmään. Säännöt voivat olla yksinkertaisuudessaan kertoimia ja IF-lauseita ja voidaan toteuttaa esimerkiksi SQL-komentoina. Analytiikan tulokset kirjoitetaankin usein takaisin joko operatiivisiin järjestelmiin tai tietovarastoon.

Kolmas tuotos kertoo, että miten tarkka ja hyvä malli on. Ei mennä tässä siihen matematiikkaan tarkemmin. Kannattaa vaan tietää, että siihen on suhteellisen objektiiviset keinot käytössä.

Analyysistä toimintaan

Analytiikan pitää johtaa toimintaan. Sen pitää tuottaa tulosta. Tämä erottaa sen perinteisemmästä raportoinnista ja business intelligencestä, jossa tuijotetaan enemmänkin raportteja ja taulukoita. Näytti käppyrät mitä tahansa, hommia jatketaan kuten ennenkin. Kunnes ollaan karilla tai kortistossa.

Poistuma-analyysissa toiminta tarkoittaa monta asiaa, esimerkiksi:

  1. kontaktoidaan poistumariskissä olevat asiakkaat
  2. pyritään pitämään heidät tai parhaimmassa tapauksessa tekemään lisämyyntiä
  3. kehitetään asiakaspalvelun laatua
  4. kehitetään tuotteita/palveluita vastaamaan paremmin kysyntää
  5. ennakoidaan liikevaihdon muutos kun tiedetään ennuste tulevasta poistumasta

Miksi yritys ei tee asiakaspoistuma-analyysiä?

Olemme tehneet vuosien varrella valtavan määrän eri analytiikan sovelluksia ja projekteja. Asiakaspoistuma-analyysi on antanut näistä todennäköisesti parhaimmat tulokset, varsinkin jos mitataan euroissa asiakkaiden saamaa hyötyä. Menetelmä on helppo ja suhteellisen nopea toteuttaa, se on helppo ymmärtää ja tulokset ovat käsin kosketeltavat.

Silti yllättävän harva yritys todella hyödyntää sitä. Syyt ovat moninaiset lähtien tietämättömyydestä aina itsepetokseen.

Surullisin on itseriittoisen sinnikäs toteamus, että ei meidän asiakkaat poistu muuta kuin manan majoille tai hinnan perässä, ne pihit penteleet.

Yrityksen tuotteessa ei ole kuulema mitään vikaa. Palvelu on priimaa ja markkinaosuus olisi 100% jos vain kilpailijat eivät myisi arvelluttavan halvalla sekundatuotteitaan. Jostain syystä liikevaihto kuitenkin mataa.

Uuden asiakkaan hankinta on aina kalliimpaa kuin vanhan pitäminen. Parhaimmassa tapauksessa tekemämme asiakaspoistuma-analyysin tuloksena kontaktoiduille asiakkaille saatiin myytyä aivan pöljänä lisää tavaraa. Asiakkaat eivät aina ole siis tyytymättömiä palveluun, he ovat vain herkkiä myynnille. Sinun kannattaa olla silloin ensimmäisenä paikalla.


 


22.08.2018 / Mika Laukkanen

Artikkelin kirjoittaja on Data Scientist Pekka Tiusanen Bilotilta, jonka kanssa Louhia yhdistyi kesäkuussa 2018.  Jatko-osa seuraa ensi viikolla.

ABOUT HIT RATE FORECASTING

Challenges in the sales process and management are common to many organizations. Improved data availability and machine learning algorithms provide means to forecast sales opportunity hit rates, which brings forth two interesting ML use cases. On the sales management level, keeping track of the sales funnel is essential and expected profit from the current sales pipeline is definitely of interest. On the contrary, individual salespersons have to be aware of critical price points in order to optimize profitability. Machine learning can answer such questions as “How much money do I currently have in the sales pipeline?” and “What price should I offer in this situation?”.

DATA ACQUISITION & MANIPULATION

The forecasting results will be only as good as your model and data. Opportunity hit rate is in the least to some extent dependent on price, lead type and margin. Hence, CRM attributes are worthwhile to consider in any hit rate engine. However, relevant information may reside in various data sources, such as ERP, IoT and social media. In large organizations, it is often most convenient to import all the forecasting attributes from an existing data warehousing architecture. Having finished the compilation stage, one may have to spend some time on joining tables and transforming data to form a comprehensive set of relevant features with good data quality.

1. The Process of Adopting a Hit Rate Engine

After the data has been cleaned, some data manipulation might still be required. For example, depending on the method and analysis platform, categorical features may have to be separately converted to dummy variables. In the modelling stage, each categorical feature forms as many binary variables as there are factor levels.

One may also want to combine classes within some of the features to achieve less specific categorizations. For instance, all the lead types that relate to marketing could be combined, leaving the rest of the lead types untouched. This type of considerations are ad hoc and they may improve or deteriorate forecasting performance depending on the chosen methodology and data.

Moreover, there is often a logical order to some of the categorical model features. Such ordinal features are converted into numeric form by applying the associated logical order. For example, a variable with values “satisfactory”, “better than satisfactory”, “good”, “very good” and “excellent” would naturally convert to a scale from 1 to 5.

For some features, it is important to find the optimal level of detail, often referred to as granularity in data warehousing jargon. This applies to, for instance, geographical location and organizational data. A good rule of thumb is that all the classes of each feature should have enough examples to justify inclusion. If only a few sales were recorded at a freshly opened sales office, including this sales office as a class in the training data probably displays an excessive level of detail. This type of a situation would allow two options: (1) either substitute “sales office” with a less specific feature, such as “sales region”, or (2) replace the values of offices having too few recorded sales with NAs.

Finally, it is often sensible or even necessary to derive new variables from the set of ML features extracted, transformed and loaded (ETL). For example, if margin is not provided, it can be calculated based on cost and price. It is also common to use some type of ratios as variables. One should also verify that the chosen statistical model is not sensitive to the number of variables or correlations between them. Truncating the number of features at some point depending on the purpose of your analysis and the chosen machine learning algorithm should be considered. It is sometimes useful to reduce dimensionality of the data by applying principle component analysis, for example.

PROPOSED METHODOLOGY

The gradient boosting algorithm is based on steepest descent and loss function minimization. The method first fits training set mean or some other rudimentary model to the target series which, in this case, consists of “won” or “lost”. A decision tree is fitted to the resulting error terms of this crude approximation. Another tree is fitted to the residuals of the first tree and iterations are continued until the chosen number of trees has been reached. Gradient boosting thus produces a forest which consists of individual trees. It makes sense to use regression tree based gradient boosting instead if your dependent variable is continuous. The process of fitting a gradient boosting model minimizes mean squared error analogous to loss function in mathematical terms.

The resulting statistical model is just an ensemble of trees generated based on your training data. The training series can be formed by taking a 70-80 % random sample of the total observations. Passing an individual opportunity to the forest-like model yields a hit rate forecast. One opportunity is just a row with the corresponding model feature values. The feature values of this particular opportunity determine the forecasting outcome of each tree. All the trees shift the resulting forecast up or down.

The forecasting model is tested against the validation set which typically comprises 20-30 % of total observations. Prediction accuracy can be determined by benchmarking the model with a confusion matrix. The matrix indicates how many lost (0) opportunities were correctly identified lost and, on the contrary, the number won (1) opportunities correctly forecasted.

Receiver operating characteristic (ROC) analysis is another way to benchmark classification models. The ROC curve displays the true positive rate (TPR) on the y-axis, whereas the false positive rate (FPR) is reflected on the x-axis. The true positive rate is the share of won opportunities correctly identified as such in the validation set. Furthermore, the false positive rate is for the proportion of lost opportunities incorrectly predicted won.

Estimated raw probabilities are used for classification scoring. The ROC curve illustrates how the TPR and FPR values behave as the classification threshold is changed. The intuition is that model performance improves in terms of detecting won opportunities along with a decline in the accuracy of catching lost opportunities as a consequence of shifting the threshold.

Possible overfitting of the model can be assessed by reviewing the ROC curves of training and validation sets. Any statistical model is overfitting if there is considerably more area under the curve in the training set compared to validation. Overfitting means that a statistical model is too specific so that it overestimates the associated predictive power. Complex statistical models are prone to overfitting. Hence, one should avoid using an excessive number of trees and tree depth as gradient boosting is employed.

2. Forecast Benchmarking

FROM FLASHCARDS TO TRULY DATA-DRIVEN SALES FUNNEL

Now that the hit rate engine is up and running, it is time to feed it some opportunity data! The model predicts the probability of acceptance for each individual opportunity fed to the algorithm, which allows better approximation of the sales funnel. The expected aggregate revenue can be estimated by multiplying predicted hit rates by the corresponding opportunity prices and summing up the results. Assuming that margin for each opportunity is known or derivable, it is possible to produce profitability estimates as well. The forecasting results can be integrated to the current BI reporting solution, which enables enhanced sales management and coordination.

3. Intelligent Sales Funnel

The gradient boosting method also allows extraction of the most relevant features predicting hit rate, which provides sales management with interesting insights. Hit rate drivers can be considered valuable from the product portfolio viewpoint too. However, some of these attributes are bound to be rather obvious — if price and margin are not listed among the most important hit rate features, your model may be misspecified.

Gradient boosting is a non-linear modeling procedure, so a direct two-way interpretation for factor contribution does not exist. Usually a combined feature importance metric is used because model attributes have three importance dimensions to them. Firstly, the “gain” metric is a volume-oriented forecast contribution statistic. On the contrary, “frequency” conveys how often features occur as tree splits within the model. Finally, the “cover” metric is for the relative number of opportunities associated with each particular feature. In case you are not satisfied with the combined metric nor individual components, it is also possible to visualize individual trees to truly understand the model dynamics.

SCENARIO-BASED PROFITABILITY MODELLING

The hit rate engine enables “what-if” analysis for individual opportunities, which allows the model to be deployed as a sales assistant. This ML implementation provides salespeople with a statistically justifiable estimate on how hit rate and profitability evolve as opportunity price is increased or decreased. More attributes for a salesperson to tinker with can be included as well.

4. Hit Rate Engine as a Sales Assistant

To fulfil the requirements set by the sales assistant use case, a range of prices has to be fed to the algorithm. The resulting impulse response is a range of hit rates. If the margin is included in the model, it has to be dynamically adjusted as price changes by using a suitable dependency function.

Hit Rate = Model(Price, Margin, Features1-N) + Ɛ

Now that we get the curve of hit rates out by dynamically changing price and margin, it is time to add profitability into the equation. This is fairly straightforward as we already have hit rate and margin calculated for each price level. The formula of expected profit includes probability of winning, corresponding price and margin at this price. This is obviously something that corporations want to maximize.

Expected Profit = Hit Rate * Opportunity Price * Margin

Forecasting accuracy increases along with the number of entered model input features assuming that the underlying statistical model has been produced according to best practices. The behaviour of hit rate and profitability with respect to price can be visualized and embedded as a sales assistant feature in a CRM or CPQ system. Of course, this requires proper usability design to ensure that the complexity of the underlying model is hidden from the salesperson. The model does not have to be trained constantly, so response time is not an issue.