Zanim będziemy mogli wdrożyć system ważenia, musimy krótko przejść do dygresji, aby omówić wagi. Zastanów się przez chwilę nad własną działalnością e-mail. Czy regularnie kontaktujesz się z mniej więcej tymi samymi ludźmi? Czy wiesz o tym, ile e-maili otrzymujesz w ciągu jednego dnia? Ile e-maili otrzymujesz od nieznajomych w ciągu tygodnia? Jeśli jesteś podobny do nas i podejrzewamy, podobnie jak większość innych osób, twoja aktywność e-mailowa jest z grubsza zgodna z stereotypem 80/20. Oznacza to, że około 80% Twojej aktywności e-mailowej jest prowadzone z około 20% całkowitej liczby osób w Twojej książce adresowej. Dlaczego to takie ważne? Musimy być w stanie opracować schemat ważenia obserwacji niektórych cech w naszych danych, ale ze względu na potencjalne różnice w skali między tymi obserwacjami nie możemy ich bezpośrednio porównać. Dokładniej, nie możemy bezpośrednio porównać ich wartości bezwzględnych. Weźmy dane treningowe, które właśnie zakończyliśmy analizować. Wiemy, że jedną z funkcji, które dodajemy do naszego rankingu, jest przybliżenie interakcji społecznościowych na podstawie liczby wiadomości e-mail otrzymanych z każdego adresu w naszych danych szkoleniowych.
from.weight <–ddply (Prior.train,. (From.EMail), podsumowanie, Freq = długość (Temat))
Aby rozpocząć badanie, w jaki sposób to skalowanie wpływa na naszą pierwszą funkcję, będziemy musieli policzyć, ile razy każdy adres e-mail pojawia się w naszych danych. Aby to zrobić, użyjemy pakietu plyr, który już załadowaliśmy jako zależność dla ggplot2. Jeśli pracowałeś z przykładem z początkowych wpisów, widziałeś już plyra w akcji. W skrócie, rodzina funkcji w plyr służy do rąbania danych na mniejsze kwadraty i kostki, abyśmy mogli operować tymi kawałkami jednocześnie. (Jest to bardzo podobne do popularnego paradygmatu Map-Reduce stosowanego w wielu środowiskach analizy danych na dużą skalę.) Tutaj wykonamy bardzo proste zadanie: znajdź wszystkie kolumny z pasującymi adresami w kolumnach From.E-mail i policz je. Aby to zrobić, używamy funkcji ddply, która działa na ramkach danych, z naszymi danymi szkoleniowymi. Składnia każe nam zdefiniować grupowanie danych, które chcemy najpierw – którym w tym przypadku jest tylko wymiar From.EMail – a następnie operację, którą przejdziemy nad tym grupowaniem. Tutaj użyjemy opcji podsumowania, aby utworzyć nową kolumnę o nazwie Freq z informacjami o liczbie. Możesz użyć polecenia head (from.weight), aby sprawdzić wyniki.
W takim przypadku operacja prosi o długość wektora w kolumnie Temat w pociętej ramce danych, ale tak naprawdę moglibyśmy użyć dowolnej nazwy kolumny z danych szkoleniowych, aby uzyskać ten sam wynik, ponieważ wszystkie kolumny spełniające nasze kryteria będą miały ta sama długość. Zapoznanie się z używaniem plyr do manipulowania danymi będzie dla Ciebie niezwykle cenne i bardzo polecamy dokumentację autora pakietu.