sql >> Databasteknik >  >> NoSQL >> HBase

Använda COD och CML för att bygga applikationer som förutsäger lagerdata

Nej inte direkt. Du kommer förmodligen inte att bli rik om du inte jobbar riktigt hårt... Hur trevligt det än skulle vara, du kan inte förutsäga en aktiekurs enbart baserat på ML, men nu har jag din uppmärksamhet!

För att fortsätta från mitt tidigare blogginlägg om hur häftigt och enkelt det är att utveckla webbaserade applikationer som backas upp av Cloudera Operational Database (COD), startade jag ett litet projekt för att integrera COD med en annan CDP-molnupplevelse, Cloudera Machine Learning (CML).

I den här demon kommer jag att försöka förutsäga beteendet hos aktiers öppna priser baserat på deras historiska data, vilket betyder om ett öppet aktiekurs kommer att gå upp eller ner. Jag är ingen datavetare, men det finns många exempel online på hur man gör det (jag tog några kodprover, fixade dem och anpassade dem för att fungera med COD). För detta ändamål kommer jag att använda LSTM (Long Short-term memory) algoritmen. RNN i allmänhet (återkommande neurala nätverk) och LSTM fungerar specifikt mycket bra med tidsseriedata

För att undvika tvivel så utger vi oss inte för att vara aktiemarknadsexperter, och ingenting i det här blogginlägget ska ses som finansiell rådgivning på något sätt. Detta är enbart ett exempel på hur man utvecklar en lösning med Clouderas mjukvara.

Huvudkomponenter som används i denna demo:

  • Cloudera Operational Database (COD), som nämndes i mitt tidigare inlägg, är en hanterad dbPaaS-lösning tillgänglig som en upplevelse i Cloudera Data Platform (CDP)
  • CML är designad för datavetare och ML-ingenjörer, vilket gör det möjligt för dem att skapa och hantera ML-projekt från kod till produktion. Huvudfunktioner i CML: 
    • Utvecklingsmiljö för dataforskare, isolerade, containeriserade och elastiska
    • Production ML Toolkit  – Implementering, betjäning, övervakning och styrning av ML-modeller
    • App Servering – Bygg och Server anpassade applikationer för ML use-cases
    • Färdigförpackade applikationer till insikter för företagsanvändare
      • Enkel, dra-och-släpp-byggande av instrumentpaneler och appar med Cloudera Data Visualization
      • Mallapplikationer som startpaket för dina användningsfall
  • Lagerdata – för att hämta aktiedata använde jag alpha vantage-tjänsten (gratisversion). I grund och botten är det en tjänst som låter dig få en daglig sammanfattning av aktiestatistik (öppen, stäng, låg, hög volym)

Skapa applikationen

Det första vi behöver göra är att skapa en databas i COD.

1. Logga in på Cloudera Data Platform Public Cloud-kontrollplan

2. Välj Operational Database och klicka sedan på "Create Database"

3. Välj din miljö och namnge din databas

4. När databasen är igång, växla till JDBC-fliken

5. Ställ in ditt CDP-arbetslösenord

6. Låt oss nu gå till CML – Gå tillbaka till kontrollplanet och klicka på "Machine learning" och sedan "Provision workspace"  Ge din arbetsyta ett namn och välj den miljö du vill använda

7. När arbetsytan är klar, skapa ett nytt projekt, ge det ett namn och använd git för källkoden. All källkod finns här.

8. När projektet har skapats kommer du att se alla filer i projektkatalogen:

9. Lite extra logistik – vi behöver skapa miljövariabler för projektet, som kommer att lagra tillgången till vår databas och alpha vantage API Key. För att göra detta, gå till fliken "projektinställningar ->avancerat"

10. Låt oss nu börja köra projektet – klicka på "ny session", ge din session ett namn, välj "python 3" och resursprofilen

11. Antingen på terminalen eller CLI längst ner, installera alla nödvändiga bibliotek genom att köra "pip3 install -r requirements.txt"

12. Nästa steg är att skapa vår tabell där data kommer att lagras i vår databas. för det ändamålet, kör installationsskriptet:

13. Låt oss nu börja testa vår modell! Gå till runner.py och kör det. I grund och botten gör det här skriptet följande:

a) Hämtar den dagliga aktiedata från alpha-vintage

b) Grundläggande datatransformation

c) Lagra data i Cloudera Operational Database 

d) Kör modellen och skapa modellfilen (tech_ind_model.py)

e) Kör förutsägelsen för de senaste 120 dagarna

f) Beräkna den förväntade vinsten om vi köper och säljer aktier till exakta kurser 

14. Medan programmet körs kommer du att se att det samlar in data för varje aktie, laddar upp det till COD, utför förutsägelsen och ritar ett diagram som visar det förutsagda priset kontra det aktuella priset. Även om diagrammet visar att trenden i de flesta fall är mycket lik, kan även en liten skillnad påverka de totala intäkterna från dessa rekommendationer. Resultatet av körningen inkluderar nedanstående information för varje aktie:

a) rekommendation:behåll/köp/sälj 

b) senast förutspått:senast förutsagt pris 

c) pris:sista pris

d) förutspått:förutsägelse för nästa öppna pris

e) signal:hög/låg – är rekommendationen stark/inte

15. Baserat på förra gången jag körde programmet, skulle jag förlora pengar i de flesta aktier baserat på rekommendationerna, men samtidigt var det några som förutspådde en vinst på upp till 20 %!!!

Nu är algoritmisk handel i allmänhet och förutsägelse av aktiekurser ämnen som har funnits i många år. För att operationalisera användningsfall som detta med maskininlärning behöver du kraftfulla verktyg som är enkla att använda, skalbara och redo för företag.

Cloudera Operational Database ger undersekunders latens för slumpmässig läsning/skrivning och är precis vad som behövs för realtidsapplikationer som de som används i finansbranschen.

För att komma igång med CML och COD...

Hoppas du tycker det är användbart,

Lycka till med kodningen!


  1. Snabbreferensguide till olika NoSQL-databaser

  2. Gå igenom alla Mongo-samlingar och kör en fråga

  3. Java Mongodb nummerlång fråga

  4. MongoDB Hitta Exact Array Match men ordningen spelar ingen roll