Upload
kaylee
View
30
Download
0
Embed Size (px)
DESCRIPTION
Diplomová práce Systém předzpracování dat pro dobývání znalostí z databází. Hana Kotinová 14.9.2011. Osnova prezentace. Struktura a cíl práce Metody předzpracování dat Systémy předzpracování dat Historie vývoje DPT Jak program pracuje Budoucnost – plány na vylepšení Problémy Závěr. - PowerPoint PPT Presentation
Citation preview
Diplomová práce
Systém předzpracování dat pro dobývání znalostí z databází
Hana Kotinová14.9.2011
Struktura a cíl práceMetody předzpracování datSystémy předzpracování datHistorie vývoje DPTJak program pracujeBudoucnost – plány na vylepšeníProblémyZávěr
Osnova prezentace
Úvod Dobývání znalostí z databází Problémy fáze předzpracování Algoritmy předzpracování dat Vybrané systémy pro předzpracování dat Data preprocessing tool Závěr
Cíl práce – vytvoření programu Osobní cíl – zdokonalení v programování řešením
rozsáhlejšího projektu
Struktura a cíle práce
Transformace dat do strukturované podoby ve formě tabulky
Nastavení jednotného formátu pro data z různých zdrojů
Spojení více tabulek do jedné Ošetření chybějících hodnot Výběr atributů Výběr objektů Rozdělení dat Diskretizace a seskupování hodnot
Metody předzpracování dat
Transformace dat do strukturované podoby ve formě tabulky
Spojení více tabulek do jedné Nastavení jednotného formátu pro data z
různých zdrojů Ošetření chybějících hodnot Výběr atributů Výběr objektů Rozdělení dat Diskretizace a seskupování hodnot
Metody předzpracování dat v DPT
Systémy pro předzpracování dat
Mining Mart – Case Editor a Koncept Editor
SumatraTT
Historie vývoje (1)
DPT1Zdrojové kódy psané v notepadu
=> Kurz 4IT251 a přechod k BlueJ
Historie vývoje (2)
DPT2 po spuštěníDPT2 po načtení souboru
Historie vývoje (3)DPT3 po načtení souboru
Jak program pracuje
Logování operací Procedury diskretizace – doplnění o class
sensitive crisp a class sensitive fuzzy Standardní aplikace s více okny nebo řešení
pomocí karet Zpracování běžných databázových souborů,
nejen čistý text v podobě .csv souboru. Grafy
Budoucnost – plány na vylepšení
Programátorská zdatnost Práce na notebooku (parametry: 14“ obrazovka, 256MB RAM,
Pentium III, 750 MHz) Havárie disku na začátku práce Čas
Problémy
Závěrečné srovnání systémů
Mining Mart a SumatraTT
DPT
grafické systémy práce velkého
týmu Pracují s
databázemi Složité
Využívá jen běžné grafické rozhraní
1 člověk Pracuje pouze s
textovými soubory (.csv)
Jednodušší
Vývoj aplikace Data preprocessing tool bude pokračovat
Zájem o využití aplikace v České spořitelně, a.s.
Další verze budou dostupné na www.mankala.cz
Závěr
Děkuji za pozornost.
Prostor k dotazům …
Na straně 8 je uvedeno, že z dat pro analýzu je nutné vytvořit pouze jednu (databázovou) tabulku. Opravdu neexistují data-miningové procedury, které mohou pracovat s více než jednou tabulkou najednou? Neexistují dokonce procedury, které pracují s daty v jiné podobě než tabulkové (např. se síťovými grafy, obrázky…)? Jestli ano, tak uveďte příklady. Jestli ne, tak zdůvodněte, proč nemohou existovat.
Použití jedné tabulky je nejčastější, existují však i procedury prostorového data miningu
Podporováno např. Oracle Data Miner, MS SQL Server Analysis Services
Otázky vedoucího a oponenta
Jsou v sytému DPT implementovány nějaké operace, které nenalezneme v systémech SumatraTT nebo MiningMart?
Procedura Noise Evaluation
Vysvětlete detailně použitý algoritmus pro funkci Noise Evaluation.
Otázky vedoucího a oponenta
Účel: zjistit počet kontradikcí v datech. Kontradikcemi se myslí objekty, které mají stejné hodnoty vstupních atributů, ale liší se v cílovém atributu. Pokud se takové objekty vyskytnou, klasifikátor je zařadí to stejné(majoritní) třídy; objekty patřící do ostatních tříd jsou kontradikce.
Vstup: datová tabulka Výstup: počet kontradikcí, relativní chyba (error) a relativní správnost
(accuracy) kterou lze dosáhnout Parametry: cílový atribut (class), informace, který atribut je váha objektů Algoritmus: spočítat počty výskytů objektů, které se shodují v hodnotách vstupních
atributů (je-li použita váha objektů, počítá se počet objektů z těchto vah) a jejich rozdělení do tříd
Pro každý objekt spočítat max. možnou správnost (accuracy) jako počet (opět s přihlédnutím k váze) objektů v majoritní třídě
Spočítat celkovou max. možnou správnost jako (objekty správnost objektu)/počet_objektů a min. možnou chybu (error) neboli podíl šumu jako 1 – max. možná správnost
Procedura Noise Evaluation - zadání
Procedura Noise Evaluation – řešení (1)
public class NoiseEvaluation{ public NoiseEvaluation() { }
DataKapsa datoveStru ktury;
public void noise() { datoveStruktury = datoveStruktury.getInstance();
TreeMap<String, Double> mo = new TreeMap<String, Double>();
TreeMap<String, Double> moc = new TreeMap<String, Double>();
TreeMap<String, Double> mov = new TreeMap<String, Double>();
for (int x = 2; x <= datoveStruktury.pocetRadkuSouboru ; x++) {
String a = "";String b = "" + datoveStruktury.stavData[x]
[datoveStruktury.vybranyCil];;for (int y = 1; y <= datoveStruktury.pocetSloupcuSouboru; y++)
{if (y!= datoveStruktury.vybranyCil && y!=
datoveStruktury.vybranaVaha) {a = a + datoveStruktury.stavData[x][y] + ";";}}
Double freq = mo.get(a);Double freqv = mov.get(a);if (datoveStruktury.vybranaVaha == 0) {mo.put(a, (freq == null) ? 1 : freq + 1);mov.put(a, (freq == null) ? 1 : freq + 1);}else {mo.put(a, (freq == null) ? 1 : freq + 1);mov.put(a, (freqv == null) ?
Double.parseDouble(datoveStruktury.stavData[x][datoveStruktury.vybranaVaha]) : freqv + Double.parseDouble(datoveStruktury.stavData[x][datoveStruktury.vybranaVaha]));
}a = a + b;freq = moc.get(a);moc.put(a, (freq == null) ? 1 : freq + 1); } // end for x
Procedura Noise Evaluation – řešení (2)
if ((mo.size() < moc.size()) ) { moc.clear(); Iterator<String> ukazovatko = mo.keySet().iterator(); while(ukazovatko.hasNext()) { String klic = ukazovatko.next(); if (mo.get(klic) < 2) { ukazovatko.remove(); //mov.remove(klic); } } // while ukazovatko double totalAccuracy = 0; double tAErr = 0; Set<Map.Entry<String,Double>> mnozinaDvojic =
mo.entrySet(); for(Map.Entry <String, Double> dvojice : mnozinaDvojic) {
Grafika.oknoVysledku.setText(Grafika.oknoVysledku.getText() + "\n" + "Object: " + dvojice.getKey() + "\n" + " Total in all classes: " + mov.get(dvojice.getKey()).toString());
totalAccuracy = totalAccuracy + mov.get(dvojice.getKey()); }
if (datoveStruktury.sumaVah != 0) { totalAccuracy = (double)Math.round(100 -
(totalAccuracy * 100 / datoveStruktury.sumaVah )) / 100;
} else { totalAccuracy = (double)Math.round(100 -
(totalAccuracy * 100 / (datoveStruktury.pocetRadkuSouboru - 1) )) / 100;
} tAErr = (double)Math.round((1-totalAccuracy) * 100) /
100;
Grafika.oknoVysledku.setText(Grafika.oknoVysledku.getText() + "\n" + "maximum accuracy: " + totalAccuracy + ", error: " + tAErr);
} else { Grafika.oknoVysledku.setText(Grafika.oknoVysledku.get
Text() + "\n" + "No same objects in different classes, maximum accuracy: 1.0, error: 0.0" );
}
} // noise } // class