Vidensbaserede systemer er en type computeriseret system, der forsøger at efterligne menneskelig ræsonnering. Denne type systemer blev udviklet for at efterligne og repræsentere menneskelig intelligens gennem symboler, ofte i form af hvis-så-regler (if-then rules). De anvender specifik viden om et givent område og kan træffe beslutninger baseret på denne viden, på en måde der minder om, hvordan en menneskelig ekspert ville handle.

Et vidensbaseret system består af tre hovedkomponenter: en vidensbase, en inferensmotor og et brugerinterface. Vidensbasen er en samling af information og ressourcer, som systemet bruger til at træffe beslutninger. Inferensmotoren fungerer som en menneskelig hjerne og behandler den viden, som systemet har til rådighed, for at udlede nye informationer eller løsninger. Brugerinterfacet giver brugeren mulighed for at interagere med systemet og stille spørgsmål.

Vidensbaserede systemer opdeles typisk i fem typer:

  • Case-baserede systemer, der anvender tidligere viden om lignende situationer til at finde løsninger på nye problemer.

  • Ekspertsystemer, der simulerer eksperters beslutningstagning og giver forklaringer på de løsninger, de tilbyder.

  • Hypertekstmanipulationssystemer, der gemmer viden ved at linke tekst til andre tekstblokke gennem hypertekst, hvilket gør det nemt at tilgå en stor mængde data.

  • Intelligente undervisningssystemer, der er designet til at støtte læring ved at give personlig feedback baseret på brugerens præstationer.

  • Regelbaserede systemer, der er afhængige af menneskeskabte regler til at analysere og manipulere data for at opnå specifikke resultater.

Blandt disse typer er regelbaserede systemer især populære og bruges i stor grad indenfor AI. Et af de mest anvendte inferensmotorer i denne kategori er backward chaining.

Backward chaining er en logisk proces, hvor systemet arbejder baglæns fra en løsning for at finde ud af, hvilke betingelser og regler der førte til denne løsning. I AI anvendes backward chaining ofte i reverse engineering-situationer, hvor systemet forsøger at finde ud af, hvorfor en given konklusion eller beslutning blev truffet. Denne metode er ofte målstyret og anvender en dybdegående søgestrategi, hvor man starter fra en kendt konklusion og arbejder baglæns for at finde de underliggende årsager.

For eksempel, i en restaurant, hvor en kunde giver drikkepenge, kan backward chaining bruges til at bestemme årsagen til, at kunden valgte at give et bestemt beløb. Hvis drikkepengene er store, kunne systemet spore tilbage til, at både maden var lækker og servicen var fremragende, mens et lille beløb kunne indikere dårlig service eller mad af lav kvalitet. Systemet anvender så if-then regler til at bestemme, hvilke betingelser der har ført til det konkrete resultat.

En metode, der ligner backward chaining, er backpropagation, som er en algoritme, der anvendes i maskinlæring for at justere parametrene i en neural netværksmodel. Backpropagation bruges til at minimere fejl ved at justere modellen baglæns fra den endelige fejl for at opnå en optimal træning af modellen.

Modsat backward chaining er forward chaining en proces, hvor systemet arbejder fremad fra kendte data og anvender etablerede betingelser og regler for at nå frem til en løsning. I forward chaining starter systemet fra grundlæggende antagelser og anvender reglerne for at udlede nye oplysninger eller løsninger. Dette gør det muligt for systemet at bygge videre på tidligere kendte fakta og opbygge en forståelse af situationen, trin for trin.

Vidensbaserede systemer er afgørende i mange anvendelser af kunstig intelligens, da de giver systemerne evnen til at "tænke" som mennesker og træffe beslutninger baseret på forudbestemte regler. Dette gør dem særligt nyttige i komplekse scenarier, hvor menneskelig ekspertise er nødvendig, men ikke altid tilgængelig.

En vigtig forståelse for læseren er, at selvom vidensbaserede systemer kan efterligne menneskelig ræsonnering, er de ikke fejlfri. Der er altid behov for korrekt og opdateret viden i vidensbasen for at sikre, at systemet træffer præcise beslutninger. Desuden kan kompleksiteten i systemernes regler føre til situationer, hvor systemet træffer beslutninger baseret på forældet eller utilstrækkelig information, hvilket understreger vigtigheden af konstant evaluering og opdatering af disse systemer.

Hvordan bygger man en effektiv aktiekursforudsigelsesmodel med ANFIS?

For at bygge en effektiv aktiekursforudsigelsesmodel ved hjælp af Adaptive Neuro-Fuzzy Inference System (ANFIS) er det nødvendigt at følge flere specifikke skridt for at sikre både korrekt træning og evaluering af modellen. I det følgende gennemgås den proces, man skal følge for at bygge og validere en aktiekursmodel baseret på ANFIS.

Først og fremmest opretter man den indledende model for systemet. Dette gøres ved at vælge knappen "Generate FIS" i Neuro-Fuzzy Designer og beholde standardindstillingerne, hvor man anvender grid-partition som metode. Dette vil skabe den første version af modellen, som kan bruges til videre arbejde. Når dette er gjort, skal man vælge antallet af medlemsfunktioner (MF’er) for de fire inputparametre: Åbning, Høj, Lav og Volumen. Som udgangspunkt bruges fire medlemsfunktioner for hver input, og det er almindeligt at vælge gaussiske funktioner for input MFs og lineære funktioner for output MFs.

Når modellen er genereret, er det vigtigt at gemme den i arbejdsområdet eller som en fil, for senere at kunne fortsætte arbejdet med den. Et eksempel på filnavnet kunne være "ANFIS_Stock_App". Derefter kan træningsprocessen begynde. For at gøre dette skal man justere epokerne fra 3 til 60 og vælge metoden "backpropagation" for optimering. Når træningen er startet, vil modellen gradvist forbedre sig, og den kan evaluere sine resultater ved at sammenligne de oprindelige udgangsdata med de forudsigelser, der er genereret af den trænede model.

Efter træning kan modellen testes ved at vælge "Checking data"-muligheden og klikke på "Test Now"-knappen. Denne proces giver et direkte mål for, hvor godt modellen præsterer i forhold til de faktiske data. Det er muligt at se strukturen af ANFIS-modellen ved at bruge knappen "Structure", som giver et overblik over, hvordan de interne regler og output er genereret automatisk af systemet.

For at yderligere teste modellen kan man åbne "Rules View", hvor man kan ændre inputværdierne og se, hvordan outputtet ændres i realtid. Denne funktion giver en dynamisk test, som kan være nyttig for at forstå, hvordan modellen reagerer på forskellige markedsforhold.

Endelig kan man visualisere modellen i 3D ved at bruge "Surface"-funktionen, som viser, hvordan alle medlemsfunktioner hænger sammen i en overflade, der beskriver ANFIS-modellen. Dette giver et visuelt indtryk af, hvordan inputparametrene påvirker forudsigelsen.

For at evaluere og validere ANFIS-modellen anvendes et eksternt datasæt, som kan bruges til at teste forudsigelserne af aktiekurserne. Et muligt datasæt er Google_Stock_Price_Test.csv, som indeholder aktiekurser for perioden januar 3-31, 2017. De samme inputparametre bruges i dette datasæt, og ved at anvende disse data til modellen kan man sammenligne de forudsigte aktiekurser med de faktiske lukningskurser i testdatasættet. Denne evaluering er vigtig for at sikre, at modellen er generaliserbar og fungerer godt på nye, ikke tidligere sete data.

I den kode, der bruges til evalueringen, normaliseres alle kolonner af datasættet, hvilket er et nødvendigt skridt for at sikre, at modellen kun forholder sig til de relative ændringer i aktiekurserne, frem for de absolutte niveauer. Dette er essentielt, fordi aktiemarkederne ofte har store variationer, og det er ændringerne i priserne, der er af interesse, ikke de absolutte tal. Når dataene er normaliseret, kan modellen generere forudsigelser for aktiekurserne, som derefter sammenlignes med de faktiske priser for at vurdere modellens præstation.

Efter evalueringen af modellen kan den anvendes til forudsigelser baseret på nye data. Det er dog også vigtigt at forstå, at en model som ANFIS ikke nødvendigvis vil være perfekt. Selv efter træning og evaluering er det muligt, at den kan forbedres med flere data, andre algoritmer eller ved at justere nogle af dens parametre. Derfor bør brugere af ANFIS forstå, at modeller i maskinlæring og fuzzy systemer ofte kræver løbende tilpasning og optimering for at levere de bedste resultater over tid.

I sidste ende er det vigtigt at bemærke, at mens ANFIS er et kraftfuldt værktøj til forudsigelse, er det kun én metode blandt mange, der kan anvendes til aktiekursforudsigelse. Modellen er kun så god som de data, der foder den, og kvaliteten af de valgte input. Derudover er markedet ofte præget af kompleksitet og volatilitet, hvilket betyder, at alle modeller har deres begrænsninger og ikke bør ses som en garanti for nøjagtige forudsigelser.

Hvordan man anvender RegressionEnsemble og Random Forest i MATLAB for prædiktion

Når man arbejder med maskinlæring og regression, er en vigtig opgave at opbygge en model, der kan forudsige output baseret på givne inputdata. I denne kontekst fokuserer vi på at bruge RegressionEnsemble og random forest-algoritmer til at skabe en træningsmodel for et motorsystem. I denne proces anvendes flere specifikke funktioner og teknikker for at sikre præcisionen i prediktionen, som vi vil uddybe her.

Først genereres et nyt inputspændingsvektor kaldet inputVol. Dette vektor er initialiseret med et sæt af nye inputspændingsværdier. Det er vigtigt at bemærke, at navnet på denne nye inputvektor skal være præcist det samme som det, der blev brugt i datasættet. Hvis der er en forskel i navngivningen, kan MATLAB generere fejl, da det kun genkender navnet, der er brugt i datasættet. Derfor bør navngivningen være konsekvent for at undgå problemer under kørslen af koden.

Derudover skal inputVol konverteres til et tabelformat, selvom det oprindeligt er et vektorformat. Hvis dette skridt overses, vil der opstå fejl, når projektet kører. Den konverterede tabel tildeles en lokal variabel, X. Den eksporterede model, som blev oprettet i et tidligere skridt (for eksempel begged_motor_model), tildeles en lokal variabel, B. Denne model er et ensemble træningsobjekt og er allerede blevet trænet.

For at gøre prediktioner baseret på nye inputdata skal du bruge funktionen predictFcn(), som er knyttet til den trænede model. Det er vigtigt at understrege, at du ikke må bruge den generelle predict()-funktion, når du anvender en eksporteret eller trænet model. predict()-funktionen kan kun bruges direkte, hvis modellen er trænet ved hjælp af funktioner og ikke Apps. Dette er en vigtig forskel, som man bør være opmærksom på for at undgå fejl i kodekørslen.

Når vi har anvendt predictFcn() til at forudsige output, kan vi visualisere både de originale input-output-data og de forudsigede data på en graf. Formålet med denne visualisering er at sammenligne de oprindelige datapunkter med de forudsigede værdier. For at kunne lave denne sammenligning på én og samme graf, anvender vi hold on-kommandoen, som holder den oprindelige plotting på skærmen, mens de nye data tilføjes. Når begge datasæt er plottet, afsluttes processen med kommandoen hold off for at frigive den oprindelige plot.

Endvidere kan vi bruge grid-kommandoen til at tilføje gitterlinjer til grafen, hvilket gør det lettere at analysere de plottede data. For at give en mere forståelig visualisering anvendes også funktionerne legend() og label() for at give mening til plottet og identificere de enkelte datasæt korrekt.

Efter at have gennemført disse trin og udført koden, vil resultatet, som vises i figurerne 5.84 og 5.85, afsløre, hvor godt modellen præsterer. Hvis resultatet er tilfredsstillende, kan man overveje at bruge en trænet ensemble træmodel med Boosted Trees til at evaluere systemet på ny.

Når vi kigger på de funktioner, der er knyttet til RegressionEnsemble, er det vigtigt at bemærke de to centrale funktioner, der bruges i random forest-algoritmen: fitrensemble() og TreeBagger(). Den første funktion er kun relevant for regression, mens den anden kan bruges til både regression og klassifikation. For at kunne bruge TreeBagger() til regression, skal argumentet Method sættes til 'regression'.

Funktionen fitrensemble() anvender bagging med tilfældige predictor-selektioner ved hver opdeling. Denne funktion skaber et ensemble for regression og bruges som følger:

matlab
ens = fitrensemble(X, Y, Name, Value);

Her er X matrixen af inputdata, hvor hver række repræsenterer en observation og hver kolonne en inputvariabel. Y er vektoren af svar eller outputs, som matcher antallet af observationer i X. Derudover bruges parret Name, Value til at angive yderligere parametre som f.eks. aggregationsmetode og antal læringscyklusser.

Funktionen fitrensemble() kan også kaldes på forskellige måder afhængigt af, hvordan dataene er struktureret. For eksempel kan den bruges til at tilpasse en model baseret på en tabel med både input og output eller ved at anvende en formel til at skabe et regressionsensemble.

Når du arbejder med disse funktioner, skal du forstå, at der er flere måder at forfine din model på, afhængigt af de specifikke krav til datatypen og den ønskede præcision i dine forudsigelser. Dette betyder, at der er et stort fokus på at vælge den rigtige aggregation metode og antal træningscyklusser.

Yderligere væsentlige aspekter:
Når du træner en model som denne, er det vigtigt at sikre, at de data, du bruger, er godt forberedt. Det indebærer, at du skal tage højde for eventuelle manglende værdier, udlignede datasæt og variabiliteten i inputdataene. Kvaliteten af inputdataene er direkte relateret til præcisionen af den model, der bygges. Det er også afgørende at vælge passende evalueringsmetoder for at sikre, at modellen ikke overfitter dataene, og at den kan generalisere godt til nye, usete data. Dette kan omfatte teknikker som krydsvalidering og brug af test- og træningssæt.