W ćwiczeniu przedstawiamy metody oceny przydatności poszczególnych atrybutów w procesach eksploracji danych. W trakcie laboratorium zapoznajemy się z podstawowymi metodami identyfikacji atrybutów, które są nieprzydatne w zadaniach eksploracji. Będziemy badać zmienność wewnątrz atrybutów, korelację między atrybutami, a także będziemy wybierać zbiory atrybutów charakteryzujące się najbardziej pożądanymi cechami. A na początku zapoznamy się z zasadą minimalizacji długości opisu (ang. minimum description length) oraz przeprowadzimy jeden z najbardziej niesamowitych eksperymentów naukowych w historii.
SELECT v.immigration, v.class, COUNT(*) FROM votes v WHERE v.immigration IS NOT NULL GROUP BY v.immigration, v.class;
BEGIN DBMS_DATA_MINING.DROP_MODEL('Attribute_Importance'); END;
BEGIN DBMS_DATA_MINING.CREATE_MODEL( model_name => 'Attribute_Importance', mining_function => DBMS_DATA_MINING.ATTRIBUTE_IMPORTANCE, data_table_name => 'votes', case_id_column_name => 'id', target_column_name => 'class'); END;
SELECT * FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_AI('Attribute_Importance')) ORDER BY RANK;
votes
nowy atrybut atrybut losowy a1
oraz atrybut liniowo skorelowany ze zmienną celu a2
ALTER TABLE votes ADD a1 NUMBER; ALTER TABLE votes ADD a2 NUMBER; UPDATE attribute_importance_test SET a1 = ROUND(DBMS_RANDOM.RANDOM()), a2 = (CASE class WHEN 'democrat' THEN 1 WHEN 'republican' THEN -1 END); COMMIT;
BEGIN DBMS_DATA_MINING.DROP_MODEL('Attribute_Importance'); END;
BEGIN DBMS_DATA_MINING.CREATE_MODEL( model_name => 'Attribute_Importance', mining_function => DBMS_DATA_MINING.ATTRIBUTE_IMPORTANCE, data_table_name => 'votes', case_id_column_name => 'id', target_column_name => 'class'); END;
SELECT * FROM TABLE(DBMS_DATA_MINING.GET_MODEL_DETAILS_AI('Attribute_Importance')) ORDER BY RANK;
Retrieve
operator Multiply
.Remove Correlated Attributes
i usuń wszystkie atrybuty które są skorelowane powyżej progu 0.75. Dodaj do przepływu operator Correlation Matrix
łącząc go z portem wyjściowym ori
operatora Remove Correlated Attributes
. Czy operator jest całkowicie deterministyczny?Remove Useless Attributes
i usuń te atrybuty, w których zmienność wartości jest poniżej 0.1. Uruchom przepływ, a następnie sprawdź czułość metody na zmianę progu zmienności.Weight by Relief
i ustaw liczbę sąsiadów na 10 (pozostaw normalizację wag). Następnie umieść na przepływie operator Select by Weights
i wybierz tylko te atrybuty, których waga jest większa niż 0.5. Uruchom przepływ i sprawdź, w jaki sposób zmiana liczby sąsiadów lub zmiana progu akceptacji wag wpłynie na liczbę wybranych atrybutów. Zamień operator Weight by Relief
na operator Weight by Rule
, uruchom zmodyfikowany przepływ i porównaj uzyskane wyniki.Weight by Chi Squared Statistic
i powiązany z nim operator Select by Weights
. Zmień liczbę przedziałów dyskretyzacji w operatorze Weight by Chi Squared Statistic
na 5 i na 20, porównaj wyniki. Twój ostateczny przepływ powinien wyglądać następująco: