Wdrażanie efektywnej prostej średniej kroczącej

W ciągu ostatnich kilku dziesięcioleci zapotrzebowanie na moc obliczeniową stale rosło, wraz ze wzrostem ilości danych i bardziej złożonymi modelami. Oczywiste jest, że zminimalizowanie czasu potrzebnego na te obliczenia stało się ważnym zadaniem i że istnieją oczywiste problemy z wydajnością, które należy rozwiązać. Te problemy z wydajnością wynikają z niedopasowania ilości danych do istniejących metod analitycznych. Ostatecznie konieczna będzie fundamentalna zmiana w technikach analizy danych, ale na razie musimy zadowolić się poprawą wydajności naszych wdrożeń. R został zaprojektowany jako język interpretowany o wysokim poziomie ekspresji i to jest jeden z powodów, dla których brakuje mu dużej części precyzyjnej kontroli i podstawowych konstrukcji do obsługi kodu o wysokiej wydajności. Jak Arora wbija to w książkę, zredagowała Conquering Big Data with High Performance Computing, Springer, 2016: „Chociaż R jest wyraźnie językiem o wysokiej produktywności, niekoniecznie był to język o wysokiej wydajności”. Nierzadko zdarza się, że czas wykonania programu R jest mierzony w godzinach lub nawet w dniach. Wraz ze wzrostem ilości analizowanych danych czas wykonywania może stać się zbyt długi i często zdarza się, że naukowcy zajmujący się danymi i statystycy utknęli w tych wąskich gardłach. Kiedy tak się stanie i jeśli nie wiedzą zbyt wiele na temat optymalizacji wydajności, prawdopodobnie po prostu zadowolą się zmniejszoną ilością danych, co może utrudnić ich analizę. Jednak nie bój się; Programy w języku R mogą być powolne, ale dobrze napisane programy w języku R są zwykle wystarczająco szybkie, dlatego przyjrzymy się różnym technikom, których możesz użyć do zwiększenia wydajności kodu R. Ten rozdział nie ma na celu uczynienia z Ciebie eksperta w zakresie optymalizacji wydajności, ale raczej zawierają omówienie, które wprowadza Cię w ogromną liczbę technik, których można użyć podczas próby zwiększenia wydajności kodu. Przyjrzymy się wielu różnym technikom, z których każda może mieć rozdziały, a nawet książki poświęcone im, więc będziemy musieli spojrzeć na nie z bardzo wysokiego poziomu, ale jeśli będziesz ciągle ograniczany przez zasoby obliczeniowe, są one czymś będziesz chciał zajrzeć dalej. Niektóre z ważnych tematów omawianych w tym rozdziale są następujące:

* Decydowanie, jak szybka musi być implementacja

* Znaczenie korzystania z dobrych algorytmów

* Powody, dla których R może czasami działać wolno lub nieefektywnie

* Duży wpływ na wydajność, jakie mogą mieć małe zmiany

* Pomiar wydajności kodu w celu znalezienia wąskich gardeł

* Porównanie różnych implementacji między sobą

* Maksymalne wykorzystanie możliwości komputera dzięki pracy równoległej

* Poprawa wydajności dzięki współpracy z innymi językami

Wymagane pakiety

Pracowaliśmy już z niektórymi pakietami wymaganymi w tym rozdziale, takimi jak ggplot2 i lubridate. Pozostałe trzy pakiety zostały wprowadzone do testów porównawczych funkcji i porównania ich wydajności między sobą, a także do zaawansowanych technik optymalizacji, takich jak delegowanie i zrównoleglanie, które zostaną wyjaśnione w odpowiednich sekcjach. Aby móc odtworzyć wszystkie przykłady w tym rozdziale, potrzebujesz również działających kompilatorów dla kodu Fortran i C ++. Zobacz Wymagane pakiety, aby uzyskać instrukcje dotyczące ich instalacji w systemie operacyjnym. Spójrzmy na poniższą tabelę przedstawiającą zastosowania wymaganych pakietów:

Pakiety : Powód

ggplo2 : Wysokiej jakości wykresy

lubridate : Łatwo przenosi daty

microbenchmark : Wydajność funkcji wzorcowych

Dodaj komentarz

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