PPM (ang. Prediction by Partial Matching – przewidywanie przez częściowe dopasowanie) – adaptacyjny algorytm kompresji danych oparty na kontekstowym modelowaniu statystycznym oraz predykcji. Algorytm PPM wykorzystuje układ symboli w strumieniu danych do przewidywania kolejnego symbolu. Zwykle predykcja opiera się na tworzeniu statystycznego rankingu występowania symboli. Pewna liczba poprzednich symboli wykorzystywanych w danym kroku do predykcji (n) jest określana jako rząd modelu PPM, który oznacza się jako PPM(n). Istnieją warianty algorytmu, w których rząd modelu nie jest z góry narzucany, oznaczane jako PPM*. Jeżeli przewidywanie nie może zostać dokonane na podstawie modelu o rzędzie n-tym, to jego rząd jest zmniejszany o jeden. Proces jest powtarzany aż do uzyskania poprawnej predykcji lub gdy strumień danych został wyczerpany. W tym momencie wykonywana jest ustalona predykcja.

Implementacje algorytmu PPM często różnią się znacznie wieloma szczegółami. Symbole mogą być kodowane poprzez kodowanie arytmetyczne, Huffmana bądź też pewne typy kodowania słownikowego. Podstawowy algorytm może zostać rozszerzony, aby przewidywać kilka symboli naraz.