Przygotowywanie, szkolenie i testowanie danych

Jak zawsze zaczniemy od konfiguracji naszych danych. W tym przypadku danymi są wiadomości otrzymane przez naszą fantastyczną firmę The Cake Factory. Znajdują się one w pliku client_messages.RDS, który utworzyliśmy wcześniej. Dane zawierają 300 obserwacji dla 8 zmiennych: SALE_ID, DATE, STARS, SUMMARY, MESSAGE, LAR, LNG i MULT_PURCHASE. W tej sekcji będziemy pracować ze zmiennymi MESSAGE i MULT_PURCHASE.

Skonfigurujemy nasze ziarno tak, aby dawało powtarzalne wyniki. Pamiętaj, że powinno to mieć miejsce przed każdym wywołaniem funkcji, które wiąże się z jakąś randomizacją. Pokażemy to tylko raz, aby zaoszczędzić miejsce i uniknąć powtarzania się, ale miej to na uwadze, próbując wygenerować odtwarzalne wyniki:

set.seed(12345)

Następnie musimy się upewnić, że w odpowiednich zmiennych nie brakuje żadnych danych. Aby to zrobić, używamy funkcji complete.cases() wraz z negacją (!) i funkcją sum(), aby uzyskać całkowitą liczbę wartości NA ‘w każdej zmiennej. Jak widać, nie mamy żadnych brakujących danych:

sum(!complete.cases(client_messages$MESSAGE))

#> 0

sum(!omplete.cases(client_messages$MULT_PURCHASES))

#> 0

Jeśli masz brakujące dane, zamiast korzystać z jakiegoś mechanizmu imputacji, który jest zwykle wykonywany w niektórych scenariuszach analizy danych, chcesz usunąć te obserwacje z tych danych, ponieważ łatwiej jest to błędne ze względu na nieciągłą charakterystykę danych tekstowych. Jak często można się przekonać podczas pracy nad interesującymi rzeczywistymi problemami w analizie predykcyjnej, nierzadko pracuje się z nieproporcjonalnymi danymi. W tym przypadku, jak widać na pokazanym kodzie, mamy około 63% zakupów wielokrotnych. Nie jest to zbyt nieproporcjonalne, ale nadal musimy grać po bezpiecznej stronie, utrzymując dane treningowe i testowe w podobnych proporcjach:

prop.table9tab;e(client_messages$MULT_PURCHASES))

#> FALSE TRUE

#> 0,3621262 0,6378738

W przypadku danych z problemem nieproporcjonalności utrzymanie tych samych proporcji w zestawach testowych i szkoleniowych jest ważne, aby uzyskać dokładne wyniki. Dlatego musimy upewnić się, że nasza metoda próbkowania zachowuje te proporcje. Aby to zrobić, użyjemy funkcji createDataPartitio() z pakietu caret, aby wyodrębnić indeksy dla każdego zestawu uczącego i testowego. Stworzy zbalansowane podziały danych iw tym przypadku wykorzysta 70% danych do uczenia z jedną partycją:

indexes <- createDataPartition(

client_messages$MULT_PURCHASES,

list = FALSE,

times= 1,

 p= 0.7

)

trai <- clinet_messages[ idexes, ]

test <- clinet-messages[-indexes, ]

Aby mieć pewność, że nasze proporcje są zachowane, możemy sprawdzić każdy z nich indywidualnie, tak jak robiliśmy to wcześniej z pełnymi danymi:

prop.table(table(train$MULT_PURCHASES))

#> FALSE TRUE

#> 0,3632075 0,6367925

prop.table(table(test$MULT_PURCHASES))

#> FALSE TRUE

#> 0,3595506 0,6404494

Teraz, gdy mamy już gotowe zestawy szkoleniowe i testowe, możemy rozpocząć czyszczenie i konfigurację naszych danych tekstowych, tak jak zrobimy to w następnej sekcji.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *