14
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).

Hurtownie i eksploracja danych - zsk.ict.pwr.wroc.plPołączyć się z serwerem Analysis Services (za pomocą SQL Server Management Studio) i otworzyć kostkę za pomocą Browsera

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

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:

8

7. Przykładowa postać modelu wielowymiarowego w narzędziu SSAS:

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

[email protected]

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)