Hurtownie i eksploracja danych - zsk.ict.pwr.wroc.plPołączyć się z serwerem Analysis Services...
Transcript of Hurtownie i eksploracja danych - zsk.ict.pwr.wroc.plPołączyć się z serwerem Analysis Services...
1
Hurtownie i eksploracja danych Laboratorium
Część 1: OLAP
Cel
Poznanie metod budowy środowiska OLAP umożliwiającego wielowymiarową analizę faktów w funkcji
wymiarów.
Opanowanie umiejętności wykorzystania narzędzi MS SQL Server 2017:
Integration Services (SSIS) – jest to narzędzie za pomocą którego zostanie wykonany proces ETL
(Extract-Transform-Load), czyli skrypty pobierające dane z systemów źródłowych oraz integrujące
i czyszczące dane.
Analysis Services (SSAS) – za pomocą tego narzędzia zostanie zaprojektowany i zbudowany
wielowymiarowy model danych (kostki wielowymiarowe).
Zadanie polega na wykonaniu wielowymiarowej analizy ocen wystawianych studentom na Wydziale
Elektroniki, w funkcji wszystkich dostępnych w danych atrybutów (zmiennych) mogących mieć związek
(wpływ?) na wystawiane oceny – takich jak np. typ kursu, semestr studiów, kierunek, specjalność,
atrybuty opisujące studenta itd.
Dane do analizy grades.csv
students.csv
teachers.csv
teacher_title.csv
course_group.csv
Zadania
1. Etap I: ETL (Extract-Tranform-Load) – polega na załadowaniu danych do analizy z baz (plików)
źródłowych do bazy MS SQL, wykonując integrację i wyczyszczenie danych. Skrypty ETL będą
zbudowane za pomocą narzędzia Integration Services pakietu MS SQL Server (dostępne z
poziomu SQL Server Data Tools (SSDT – dodatek do Visual Studio 2017) – projekt wg szablonu
Integration Services Project).
Podstawowe zadanie skryptów ETL to integracja i usunięcie niespójności w danych źródłowych
(nieprawidłowe wartości danych, niespójne/niejasne sposoby kodowania wartości, niespójne
relacje klucz obcy-klucz główny pomiędzy tabelami faktów i wymiaru).
Szczegółowe zadania do wykonania za pomocą skryptów ETL:
Wczytanie danych źródłowych (patrz dane do analizy), utworzenie docelowych tabel
(struktura tabel docelowych patrz pkt. 5).
Usunięcie niespójności dotyczących wartości zmiennych i konwencji kodowania (np.
oceny = 0 lub 1, puste wpisy (np. w kolumnie exam), niespójne oznaczenia płci).
2
Usunięcie niespójności dotyczących relacji pomiędzy tabelami (niespójności pomiędzy
kluczem obcym w tabeli faktów i kluczem głównym w tabeli wymiaru – np. pomiędzy
teacher_id w tabeli faktów grades i teacher_id w tabeli teachers). Podobna niespójność
pomiędzy tabelami grades – course_group. Patrz również wskazówka 9.
Utworzenie nowych atrybutów wymiarów (dimension attributes). Przykładowe ciekawe
atrybuty:
Typ semestru (zimowy / letni – wg parzystości numeru semestru),
Rok studiów
Typ kursu – wykład, lab itd. – wg symbolu kursu.
Utworzenie tabeli workload (opisującej obciążenie prowadzącego (albo studenta) w danym
semestrze – mierzone np. liczbą kursów albo ocen w semestrze).
Przeformatowanie tabeli faktów (grades) – w taki sposób, żeby zawierała wyłącznie
zmienną fakt i klucze obce do tabel wymiarów. Kolumny z oryginalnej tabeli grades, które
nie są zmienną fakt lub kluczami do tabel wymiarów, należy przenieść do
(nowoutworzonych) tabel wymiaru. Patrz wskazówka 10.
Realizacji procesu ETL w narzędziu SSIS:
W narzędziu SSDT otworzyć projekt wg szablonu Integration Services Project.
Zbudować SSIS Package, w którym będą umieszczone skrypty ETL (najwygodniej zacząć
od SSIS Import Export Wizard, dostępnego w Solutions Explorer – SSIS Packages).
Import Export Wizard: jako Data Source wybrać właściwe dla danych źródłowych (np.
MS Access lub płaskie pliki); jako Destination wybrać nową bazę na lokalnym serwerze
SQL.
Wykonać skrypty zawarte w utworzonym pakiecie SSIS (Execute Package wybrane z
menu dla utworzonego package’a). Po wykonaniu task’ów w pakiecie dane źródłowe
powinny być dostępne w docelowej bazie (sprawdź).
Dalsze kroki polegają na dopisaniu do utworzonego przez Wizarda pakietu skryptów,
które zrealizują właściwą integrację i czyszczenie danych (technicznie – poprzez usuwanie
błędnych wierszy, zamianę wartości, łączenie tabel itp. ). Tworzenie skryptów ETL: za
pomocą Task’ów Execute SQL Task i/lub Data Flow Task.
Wskazówka: w przypadku posłużenia się Data Flow Task’ami – użyteczne narzędzia do realizacji
procesu ETL (dostępne przez Toolbox edytora Data Flow ) to:
Derived Column w celu warunkowej modyfikacji kolumn,
Conditional Split w celu wybrania interesujących wierszy,
Merge Join – w celu łączenia tabel po wspólnej wartości klucza,
2. Etap II: Budowa wielowymiarowego modelu danych. Polega na określeniu relacji pomiędzy
tabelami (tabela faktów – tabele wymiarów); określeniu zmiennych które będą przedmiotem
analizy oraz zmiennych – wymiarów. Następnie należy zbudować kostkę wielowymiarową. W
naszym zadaniu zmienną analizowaną jest ocena, pozostałe zmienne powinny być wymiarami
(uwzględnić wymiary niedostępne wprost w danych, możliwe do wyznaczenia z danych).
Zadanie wykonujemy przy pomocy narzędzia Analysis Services pakietu MS SQL Server
(dostępne z poziomu SSDT – projekt wg szablonu Analysis Services Project).
Kolejne kroki w tym etapie:
W narzędziu SSDT otworzyć projekt wg szablonu Analysis Services Project.
3
Zdefiniować Data Source wskazujące na dane docelowe utworzone przez proces ETL
(Solutions Explorer – New Data Source).
Zdefiniować Data Source View (dla zdefiniowanego w kroku poprzednim Data Source),
określające relacje pomiędzy tabelami faktów i wymiarów.
Zdefiniować relację pomiędzy tabelami faktów i wymiarów (relacje definiują klucz obcy
w tabeli faktów – klucz własny w tabeli wymiarów). Wykonujemy to za pomocą edytora
Data Source View (xxx.dsv [Design]).
Zdefiniować nową kostkę wielowymiarową (Cube) – korzystając z Data Source View
utworzonego w poprzednim kroku.
Wykonać edycję kostki tak żeby spełniała wymagania dot. analizowanych zmiennych
(Measures), wymiarów, po którym można prowadzić analizy (Dimensions), hierarchii
wymiarów. Patrz również wskazówki w punkcie 4.
Utworzyć kostkę i umieścić ją w serwerze Analysis Services (Build – Deploy).
Połączyć się z serwerem Analysis Services (za pomocą SQL Server Management Studio) i
otworzyć kostkę za pomocą Browsera – wykonać kilka wielowymiarowych analiz.
Projektując kostkę należy uwzględnić wymiary:
Hierarchia wg kursów (typ kursu (typ), forma zajęć (W,P,L,C), forma zaliczenia,
indywidualny kurs),
Hierarchia wg prowadzących (tytuł prowadzącego, indywidualny prowadzący),
Hierarchia wg afiliacji prowadzącego (jednostka, tytuł (skrót), indywidualny prowadzący),
Płeć prowadzącego,
Płeć studenta,
Hierarchia wg czasu (rok studiów, semester Z,L),
(*) Miara(-y) obciążenia prowadzącego w semestrze.
3. Wykonać kilka analiz na zbudowanej kostce za pomocą Browsera / Excela (dodatkowo za pomocą
zapytań MDX) – w celu zbadania ciekawych zależności w zbiorze oceny (np. kto ocenia surowiej
– kobiety czy mężczyźni, jak to zależy od tytułu prowadzącego? itd.).
(*) Jak można zrealizować przykładową analizę bezpośrednio na danych w systemie
transakcyjnym (bez wykorzystania MDX i wielowymiarowych danych, a jedynie z pomocą
zapytania SQL) ?
4. Wskazówki
Nr Zadanie… Jak to zrobić
1 Dodać wymiar (cube
dimension) na
podstawie kolumny
zawartej w tabeli
faktów
Metoda I: za pomocą Data source view designera zbudować
Named Query zawierające kolumnę z tabeli faktów, która ma
pełnić rolę wymiaru, a następnie zlinkować powstałą w ten
sposób tabelę z tabelą faktów. Cube Designer wykorzysta tą
tabelę jako podstawę dla nowego wymiaru (cube dimension).
Metoda II: alternatywną metodą jest zdefiniowanie wymiaru za
pomocą Dimension Designera (Cube Designer Cube
Structure Add Cube Dimension). Jako tabelę wymiaru
wskazujemy tabelę faktów, w niej zaś odpowiednie kolumny
jako klucz i atrybut interesującego nas wymiaru (wymiar taki
4
może mieć w szczególnym przypadku tylko jedną kolumnę –
klucz).
2 Zbudować hierarchię
wymiarów (drill down
hierarchy)
Hierarchie atrybutów wymiarów można zdefiniować za pomocą
Dimension Designera – okno Hierarchy
(Uruchomienie Dimension Designera: Cube Designer
wybierz interesujący wymiar z menu kontekstowego wybierz
Edit dimension)
3 Dodać miary
(measures), które mają
być umieszczone w
kostce
Cube Designer okno Measure. Statistics przechowywane w
kostce są określone przez atrybut AggregateFunction związany z
miarą (measure)
4 Dodać element
wyliczany do kostki
(np. w celu uzyskania
statystyki AVG w
raportach)
Za pomocą Cube Designer zakładka Calculations (Add
calculated member), dodać formułę definiującą wartość
wyliczaną na podstawie miar zawartych w kostce. W ten sposób
uzyskamy w raportach możliwość analizowania średniej (oceny)
i innym nieaddytywnych (nieagregowalnych) miar, których nie
możemy przechowywać w kostce.
5 Zmienić sposób w jaki
wartości wymiaru są
wizualizowane w
raportach (np. w celu
zastąpienia wartości
pustej przez np. ‘?’ itd.)
Za pomocą Named Calculations dodanych do tabeli (Data
Source View Named Calculations). Przykładowe wyrażenie
(podajemy w polu Expression edytora Named Calculations)
CASE
WHEN lecture_group IS NULL THEN
'?'
ELSE
CAST(lecture_group AS nvarchar)
END
6 Dodać wymiar
wyliczony – obciążenie
prowadzących
Za pomocą SSIS: wykorzystać SQL task w celu wyliczenia
liczby ocen (lub liczby różnych kursów) na nauczyciela na
semestr.
Następnie wykorzystać węzeł Merge Join w celu połączenia tej
informacji z tabelą faktów (po kluczu którym jest id nauczyciela
i semester)t
Uwaga: dołączony wymiar wyliczany może mieć dużą liczbę
wartości. Należy wówczas rozważyć pogrupowanie wartości w
przedziały – wykonujemy to za pomocą atrybutów tego
wymiaru DiscretizationMethod i DiscretizationBucketCount .
7 Usunąć wiersze
spełniające pewny
warunek (subset data)
Za pomocą SSIS: wykorzystać SQL task w celu usunięcia
wybranych wierszy.
Alternatywnie można wykorzystać narzędzie Conditional Split.
8 Wczytanie do bazy
wielu plików za
pomocą
ForEachLoopContainer
(użyteczne przy
1. Utworzyć Data Flow Task, który wczyta pierwszy plik z
ocenami
(użyć Flat File Source połączony z OLE DB Destination. Flat
File Connection Manager powinien wskazywać wybrany
(pierwszy) plik z ocenami). Sprawdzić że działa!
5
wczytywaniu plików z
ocenami)
2. Użyć For Each Loop Container
(skonfigurować Collection oraz Variable Mapping – wówczas
wskazana zmienna przechowa wskazanie na plik do wczytania)
3. Przeciągnąć Data Flow Task jako ciało pętli For Each Loop
Container
4. W oknie Properties Flat File Connection Managers wybrać
Expression, następnie Property Connection String ustawić na
zmienną wpisaną w pkt. 2 – Variable Mapping
9 Naprawienie
niespójności klucz
obcy-klucz główny
pomiędzy tabelami
faktów i wymiaru
Możliwe są niespójności w danych źródłowych polegające na
występowaniu pewnych wartości klucza obcego w tabeli faktów,
której brakuje w tabeli wymiaru. Taka relacja klucz obcy –
klucz główny jest niespójna i wymaga naprawienia. Naprawa
nie może polegać na usuwaniu wierszy z tabeli faktów.
Sugerowana metoda diagnozy problemu
SELECT f.klucz
FROM tabela_faktów as f
LEFT JOIN tabela_wymiaru AS w ON f.klucz = w.klucz
WHERE (w.klucz IS NULL)
GROUP BY f.klucz
Metoda naprawy spójności relacji:
INSERT INTO tabela_wymiaru
SELECT f.klucz, domyśle wartości dla pól wymiaru...
FROM tabela_faktów as f
LEFT JOIN tabela_wymiaru AS w ON f.klucz = w.klucz
WHERE (w.klucz IS NULL)
GROUP BY f.klucz
10 Utworzenie nowego
wymiaru na podstawie
kolumn z tabeli faktów
nie będących FK do
tabeli wymiaru.
Metoda 1:
Dla każdej kolumny nie będącej FK w tabeli faktów tworzymy
nową tabelę wymiaru (kolumna ta stanie się FK do
nowoutworzonej tabeli wymiaru). Przykład dla kolumny semestr
w tabeli grades:
SELECT DISTINCT semester, ew. inne kolumny związane
z semestrem
INTO semester
FROM grades
Metoda 2:
Tworzymy jedną tabelę wymiaru zawierającą wszystkie
kolumny z tabeli faktów nie będące FK. Klucz tej tabeli
umieszczamy jako FK w tabeli faktów.
Idea – tworzymy tabelę tymczasową:
SELECT
IDENTITY (bigint, 1, 1) AS id,
pozostałe kolumny tabeli faktów...
INTO
grades_tmp
6
FROM
grades
którą następnie rozbijamy na nową tabelę wymiaru:
SELECT
id , semester, itd.
INTO
grades_desc
FROM
grades_tmp
i nową tabelę faktów
SELECT
note, id AS note_desc_id, pozostałe FKs do innych tabel wymiaru
INTO
grades_fact_table
FROM
grades_tmp
11 Nadanie uprawnień do
bazy danych
utworzonej przez ETL
dla Analysis Services
(wykonujemy ten krok
jeśli operacja
kompilacji kostki
(deployment) nie udaje
się z komunikatem o
braku uprawnień)
Nadajemy użytkownikowi
LOCALHOST\MSSQLServerMSASUser uprawnienie
db_datareader w stosunku do bazy utworzonej w ETL-u.
W tym celu wykonujemy procedurę:
1. Management Studio connect to SQL Server
2. Select Security – Logins – New Login
3. Login Name – Search
4. Object Types – select Groups
5. Advanced – Find Now
6. Select SQLServerMSASUser login
7. In Login Properties for this login, select User Mapping
8. Select the ETL database (check the map box) and select
the db_datareader role
5. Zmienne – typ i znaczenie
Tabela grades
semester Integer, 1..10
year Integer, 1980..
course Id kursu, tekst, do 10 znaków
teacher_id Integer, 0..99999
grade ocena, wartości 2, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5
exam wartość ‘E’ oznacza ocenę z egzaminu, pole puste - zaliczenie
student_id Integer, 0..999999
Tabela students
spec kierunek, tekst, do 3 znaków
sub_spec specjalizacja, tekst, do 3 znaków
sub_spec2 profil dyplomowania, tekst, do 3 znaków
gender płeć, ‘K’/ ‘M’
7
student_id Integer, 0..999999
Tabela teachers
teacher_id Integer, 0..99999
gender płeć, 1 – mężczyzna, 2 – kobieta
faculty wydział, Integer, 1..12
institute instytut, tekst, do 5 znaków
title_id id tytułu nauczyciela, Integer, 0..50
Tabela course_group
course Id kursu, tekst, do 10 znaków
course_group 1 – kursy wydziałowe, 2 – WF, 3 – języki obce, 4 – “humany”
Tabela teacher_title
title_id id tytułu nauczyciela, Integer, 0..50
title_long pełna tytulatura prowadzącego, tekst, do 30 znaków
title tytuł prowadzącego, wersja skrócona, tekst, do 10 znaków
6. Przykładowa postać skryptu ETL w narzędziu SSIS:
9
Część 2: Data Mining
Cel
Poznanie procesu Data Mining i metodologii SEMMA (Sample - Explore - Modify - Model - Assess)
oraz opanowanie umiejętności wykorzystania narzędzia SAS Enterprise Miner i podstaw programowania
w SAS 4 GL (języka skryptowego do preprocesingu i analizy danych).
Zadanie będzie polegało na wykonaniu modelowania predykcyjnego, którego celem jest sklasyfikowanie
wiadomości przesyłanych pocztą elektroniczną jako spam lub nie-spam.
Dane do analizy spam.dat
Zadania
Zbudować model – klasyfikator wiadomości pocztowych opisanych atrybutami jak w danych
wejściowych. Zmienna celu (target) przyjmuje wartość ‘yes’ dla wiadomości spam lub ‘no’ dla
wiadomości nie będącej spamem.
Atrybuty wiadomości pocztowych użyte do klasyfikacji wiadomości są oparte na projekcie SpamAssassin
(http://spamassassin.apache.org).
Proces DM należy zbudować wg metodologii SEMMA:
Input Data, Data Partition (Sample),
Insight, Distribution Explorer, Multiplot (Explore),
Data Set Attributes (Modify) – tu określamy rolę w modelu poszczególnych zmiennych oraz
ich typ (measurement level),
Tree | Regression | Neural Net (Model),
Assess (Assess),
Score.
Spodziewane wyniki:
- Wynik klasyfikacji wiadomości ze zbioru testowego,
- Liczba błedów:
o “noyes” (dobry list sklasyfikowany jako spam) oraz
o “yesno” (spam sklasyfikowany jako nie-spam).
- Czułość i specyficzność klasyfikatora.
Kryteria:
Szczególnie powinniśmy unikać klasyfikowania listów dobrych jako spam. Stąd kryteria akceptowalności
klasyfikatora przyjmujemy:
- Minimalizacja stopy błędów “yesno”,
- Przy jednoczesnym zapewnieniu stopy błędów “noyes” < 1%.
10
Zadanie polega na próbie “dostrojenia” klasyfikatora, tak żeby przy zachowaniu ustalonego marginesu
błędów typu “noyes” minimalizować błąd przeciwny. Ścieżki wg których dostrajamy klasyfikator:
Poprzez dobór zmiennych cech (będzie to próba odpowiedzi na pytanie: czy może warto
wybrać podzbiór cech najbardziej związanych ze zmienną celu, zamiast uczyć klasyfikator
na zbiorze wszystkich cech?) – patrz też wskazówka 7.
Poprzez zmianę czułości klasyfikatora kosztem jego specyficzności (patrz krzywa ROC
uzyskanego klasyfikatora) – patrz też wskazówka 6.
Wprowadzając do modelu różne koszty dla obu rodzajów błędów (patrz wskazówka 5).
Eksperymentując z ustawieniami algorytmów poszczególnych klasyfikatorów (takich jak
logistic regresssion, decision tree, neural network).
Metody metauczenia – składanie modeli, np. za pomocą węzła Ensemble, również metoda
Bagging albo Boosting – patrz wskazówka 8.
Wskazówki (dla Enterprise Minera 12.x)
Nr Zadanie… Jak to zrobić
1 Jak zbudować model
predykcyjny w
programie EM 12.x
1. Założyć projekt (File-New-Project), w którym będzie
budowany/testowany model predykcyjny.
Założyć bibliotekę (File-New-Library) wskazującą na folder z
danymi uczącymi.
(Uwaga: Jeśli dane uczące nie zostały dostarczone w formacie
SAS data set (tj. jako plik z rozszerzeniem .sas7bdat), wówczas
dostarczone dane należy wczytać do formatu SAS data set za
pomocą programu SAS (SAS Foundation ) – np. poprzez File /
Import Data).
2. Utworzyć Data Source (File-New-Data Source) – wskazujące
na dane uczące w założonej wcześniej bibliotece.
3. Kolumny w Data Source opisać za pomocą metadanych – podać
odpowiednie atrybuty Role (Input, Target, Rejected) i Level
(Interval, Ordinal, Nominal, Binary itp.).
3. Utworzyć diagram w projekcie. W diagramie umieścić węzeł
Input Data (Sample-Input Data), wskazujący na dane uczące.
4. Wykonać wstępną eksplorację danych – przeanalizować
rozkłady zmiennych, w celu wykrycia wartości odstających
(outliers), zmiennych z dużą liczbą brakujących obserwacji itp.
Przykładowe narzędzia: Explore-MultiPlot i StatExplore.
5. Wykonaj transformacje danych wynikające z obserwacji w
punkcie poprzednim, takie jak:
$ wypełnienie wartości brakujących (missing value imputation) –
narzędzie Modify-Impute
$ usunięcie wartości niepoprawnych / odstających (Modify-
Replacement, Modify-Transform Variables, Sample-Filter)
$ ew. transformacje zmiennych (np. w celu unormalnienia) –
11
Modify-Transform Variables
6. Podzielić dane na część uczącą, walidacyjną i testową (Sample-
Data Partition)
7. Wykonać uczenie modelu predykcyjnego (np. Model-Decision
Tree)
2 Jak uzyskać
nauczony
klasyfikator w postaci
programu?
Połącz węzeł Score do węzła realizującego model predykcyjy (np.
Tree)
Po wykonaniu procedury Score (Run), w oknie Results dostępne
są procedury klasyfikatora w języku SAS 4GL (View-Scoring-
SAS Code). Tam również klasyfikatory w C i Javie.
Klasyfikatory można zapisać w pliku – np. .sas: (File-Save As)
3 Jak wykonać
klasyfikację nowych
danych?
Poza środowiskiem SAS Enterprise Minera
Kod klasyfikatora zapisany w poprzednim punkcie jest ciałem
data step-u, który może zostać wykonany na danych zgodnych
formatem z danymi uczącymi (podanymi w Data Source projektu
EM). Stąd kod ten należy umieścić wewnątrz data stepu i
wykonać w systemie SAS:
DATA wynik_klasyfikacji;
SET plik_do_klasyfikacji;
Tu kod klasyfikatora (SAS code)
RUN;
Spowoduje to dopisanie do data setu wejściowego
(plik_do_klasyfikacji) kolumn z wynikiem klasyfikacji – całość
zostanie zapisana do data setu wynik_klasyfikacji. Nazwy tych
zmiennych – patrz okno Results węzła Score – View-Scoring-
Output Variables.
W środowisku SAS Enterprise Minera
Podłączyć do węzła Score węzeł Input Data, wskazujący na data
set z danymi do klasyfikacji. Ustawić atrybut Role dla tych
danych na Score (Properity-Role). Wówczas wykonanie węzła
score spowoduje klasyfikację danych.
Można również wykonać scoring danych w partycji Test danych
uczących – poprzez wybranie Property węzła Score Test=YES
(nie trzeba wtedy podłączać węzła z danymi do klasyfikacji do
węzła Score).
12
4 Jak wyznaczyć
czułość i
specyficzność
klasyfikatora ? (stopy
błędów 10 i 01)
W węźle SAS Code (Utility-SAS Code) lub bezpośrednio w
środowisku SAS wykonać kod podobny do poniższego:
proc freq data=dataset_wynik_klasyfikacji;
tables target*i_target;
run;
gdzie i_target oznacza zmienną w zbiorze
dataset_wynik_klasyfikacji, w której klasyfikator umieścił wynik
klasyfikacji próbki (obserwacji), zaś target oznacza zmienną
określającą rzeczywistą klasę próbki.
W węźle SAS Code (Code Editor – otwiera okna Training Code –
Code Node) dostępne są zmienne EM_CLASSTARGET oraz
EM_CLASSIFICATION. Przy ich pomocy powyższe można
zapisać jako:
proc freq data=emws4.score_test;
tables EM_CLASSTARGET*EM_CLASSIFICATION;
run;
- co jest wygodne, gdyż działa zawsze, niezależnie od faktycznej
nazwy zmiennej target
5 Jak wprowadzić do
modelu
(niesymetryczne)
kary za błędne
decyzje ?
Realizuje się to za pomocą Target Profile, który trzeba związać ze
zmienna target (property Decisions w Data Source, który
reprezentuje dane uczące).
Ustawiamy Prior Probabilities (jeśli prawdopodobieństwa
poszczególnych klas są w rzeczywistości inne niż te obserwowane
w danych uczących – np. z powodu oversampling-u rzadkiej
klasy), oraz koszty decyzji i błędów w zakładkach Decisions i
Decision Weights.
Uwaga:
Wynik klasyfikacji uwzględniający koszty umieszczany jest w
zmiennej d_target, stąd macierz błędów wyznaczamy
wówczas:
proc freq data=dataset_wynik_klasyfikacji;
tables target*d_target;
run;
6 Jak zmienić czułość
klasyfikatora kosztem
specyficzności (czyli
np. poprawić stopę
błędów 10
pogarszając stopę
błędów 01 lub
W zbiorze dataset_wynik_klasyfikacji (patrz wskazówki 2 i 3)
zlokalizuj zmienną, która ma sens „cutoff probability” (oznaczmy
ją jako p_targetyes)
Następnie wykonać program podobny do poniższego:
DATA dataset_wynik_klasyfikacji_nowy;
13
odwrotnie) SET dataset_wynik_klasyfikacji;
IF p_targetyes > thr THEN prediction = „yes”;
ELSE prediction = “no”;
RUN;
Gdzie wartość thr (threshold) ma wpływ na czułość i
specyficzność (spróbuj podać różne wartości thr, obserwuj czułość
– patrz wskazówka 4)
7 Wybór cech,
zmiejszenie
wymiarowości
danych uczących
1. Z wykorzystaniem węzła Variable Selection [Grupa Explore]
-- włączany przed węzłem modelującym.
2. Z wykorzystaniem węzła Principal Components [Grupa
Modify]. W tym przypadku dostrajamy liczbę komponentów
głównych (tj. stopień redukcji wymiarowości vs stopień utraty
informacji).
8 Metauczenie Węzeł modelujący (najczęściej drzewo decyzyjne) umieszczamy
pomiędzy węzłami Start Groups i End Groups [Utility], gdzie w
Start Groups wybieramy Mode Bagging albo Boosting.
Należy dostroić liczbę modeli tworzonych w trybie Baggingu lub
Boostingu – patrz parametr Index Count węzła Start Groups.
Inna metoda polega na wykorzystaniu węzła Ensemble [Model],
który pozwala na łączenie różnych modeli – tu różne metody
„uśredniania” wyników indywidualnych modeli – warto
sprawdzić.
Narzędzia
SAS Enterprise Miner (12.x)
SAS Base – język SAS 4 GL
Wybrane procedury analityczne SAS i SAS/STAT
14
Spam – klasyfikator z wykorzystaniem scikit-learn w Pythonie
Narzędzia biblioteki scikit-learn
http://scikit-learn.org/stable/index.html http://scikit-learn.org/stable/user_guide.html
Algorytmy klasyfikacji (przykładowe)
from sklearn.tree import DecisionTreeClassifier
from sklearn.naive_bayes import MultinomialNB
from sklearn import svm
from sklearn.neural_network import MLPClassifier
Redukcja wymiaru / PCA
from sklearn.decomposition import PCA
sklearn.feature_selection
Ocena jakości klasyfikatora
from sklearn.metrics import confusion_matrix
Sugerowane środowisko wykonania badań:
jupyter notebook (instalacja: http://jupyter.org/install)