Ze świata USOS
Część 5 - Oceanarium, czyli o nurkowaniu w otchłani danych
Co wspólnego ma ocean i system USOS? Okazuje się, że znacznie więcej niż tylko literę „o” występującą w obydwu słowach.
Eksploracja oceanu to bardzo wciągający temat. Co znajduje się w otchłani? Źródła minerałów, piękne widoki, dziwaczne stwory? Każdy może bawić się na brzegu w szukanie muszelek, ale aby zejść głębiej i zobaczyć coś, czego nikt inny jeszcze nie widział, potrzebny jest i trening, i specjalistyczny sprzęt.
A co z systemem USOS? Bazy danych tego systemu zawierają wiele informacji. Począwszy od danych, takich jak oceny wystawione studentom, poprzez wyniki ankiet wystawione przez studentów, do wyników z rekrutacji, preferencji w zapisach na przedmioty itp. Początki systemu USOS sięgają roku 1999, przez te kilkanaście lat na niektórych wydziałach zebrał się prawdziwy ocean danych.
Analizując te dane, możemy dowiedzieć się czegoś ciekawego o życiu na uczelni. Oczywiście, co innego będzie ciekawe dla dziekana, co innego dla prowadzącego zajęcia, a jeszcze co innego dla studenta. Zdecydowana większość użytkowników systemu USOS to studenci, dlatego poniżej spojrzymy na ten ocean danych z perspektywy studenta.
Postawimy trzy pytania oraz pokażemy, jak wygląda proces znajdowania odpowiedzi na każde z nich. Każde kolejne pytanie wymagać będzie coraz sprawniejszego aparatu matematycznego i będzie bardziej wymagające obliczeniowo.

Zbieramy muszelki, czyli co znajdziemy na brzegu
Pierwsze pytanie, które często przychodzi na myśl studentom, to Na jakie inne zajęcia zapisana jest ta brunetka, która chodzi ze mną na mikroekonomię? Odpowiedź na takie pytanie jest stosunkowo prosta, o ile ma się bezpośredni dostęp do bazy systemu USOS. Dane są przechowywane w postaci tabel, które odpowiadają relacjom, np. takim jak student X jest zapisany na zajęcia Y.
Aby dowiedzieć się, na jakie inne zajęcia chodzi kolega/koleżanka z naszej
grupy, musimy znać strukturę tych tabel. Najpierw wśród osób
zapisanych z nami na mikroekonomię odnajdziemy interesującą studentkę
a następnie sprawdzimy, na jakie inne zajęcia
jest
zapisana. Wystarczy dostęp do bazy danych i znajomość języka zapytań
SQL.
Snorkeling, czyli pływanie z maską i rurką
Drugie pytanie, które zadamy, dotyczyć będzie mapy „popularności” i „trudności” przedmiotów. Na wielu wydziałach studenci mogą samodzielnie wybierać przedmioty z puli przedmiotów obieralnych. Czyż nie byłoby wspaniale mieć mapę raf i mielizn? Mapę z zaznaczoną zdawalnością dla każdego przedmiotu oraz informacją, jak oceniali go studenci w poprzednich semestrach.
W przeciwieństwie do pierwszego pytania informacja o„popularności”, czy „trudności” przedmiotu nie jest bezpośrednio przechowywana w bazie danych. Te charakterystyki trzeba wyznaczyć na podstawie danych z tabel (nazywanych surowymi, nieprzetworzonymi danymi), tworząc agregaty. Jednym z takich agregatów może być średnia arytmetyczna opinii studentów o przedmiocie. Na podstawie danych z wynikami ankiet możemy obliczyć
![]() |
gdzie
to średnia opinia o przedmiocie
to
opinia o przedmiocie
studenta
to zbiór wszystkich
studentów, a symbolem
oznaczamy liczność zbioru studentów.
W podobny sposób możemy obliczyć procent studentów, którzy zaliczyli
przedmiot

Obliczywszy dla każdego przedmiotu „popularność” (średnia ocena z ankiet) i „trudność” (zdawalność), możemy te dwie charakterystyki przedstawić na wykresie punktowym. Gdy wybieralnych przedmiotów jest dużo, z wykresu odczytać można więcej niż z tabeli liczb. Poniższy wykres przedstawia sytuacje z Wydziału MIMUW. Każdy przedmiot jest przedstawiony za pomocą pojedynczej kropki. Nazwy przedmiotów usunięto, zamazałyby one cały wykres. Jak widzimy, w ofercie są przedmioty o bardzo wysokiej zdawalności i o niższej zdawalności. Co ciekawe, wydaje się, że zdawalność nie ma większego związku z oceną przedmiotu w ankietach.
Płetwonurkowanie, czyli schodzimy głębiej
Pierwsze z zadanych pytań dotyczyło chwili obecnej. Na jakie przedmioty zapisana jest ta urocza brunetka w tym semestrze? Drugie pytanie dotyczyło danych historycznych, ale wynik rodzi pokusę, by ekstrapolować go na przyszłość. Gdy ja będę wybierał przedmiot na przyszły semestr, jaka jest szansa, że ten przedmiot będzie mnie się podobał i jaka jest szansa, że ja będę miał trudności z zaliczeniem tego przedmiotu?

Chciałbym więc mieć bardziej spersonalizowaną mapę, opartą na danych studentów takich jak ja. Ale, oczywiście, nie ma studentów dokładnie takich jak ja. Studenci są różni i żadnych dwóch nie jest takich samych (prowadzę zajęcia dla studentów od wielu lat i jeszcze nie zdarzyło mi się nie móc rozróżnić dwóch osób). Przewidując więc, jak bardzo dany przedmiot będzie mi się podobał, będę szukał opinii studentów podobnych do mnie. To już głębsze rejony oceanu. Musimy jakoś określić miarę podobieństwa studentów.
Interesuje nas określenie miary niepodobieństwa dwóch studentów,
oznaczmy ich przez
i
Ich niepodobieństwo będziemy
oznaczać
Niektóre algorytmy analizy danych wymagają od
funkcji
symetrii
rozróżnialności
i spełniania warunku trójkąta. Nie zawsze jednak
da się wszystkie te wymagania spełnić. Poniżej opiszemy metody wymagające
jedynie symetrii.
Funkcja
opisuje, jak bardzo studenci
i
są
niepodobni. Ale można być podobnym/niepodobnym na wiele sposobów. Na
przykład, są podobni, bo chodzili do tej samej szkoły. Podobni, bo mają zbliżone
wyniki z rekrutacji. Podobni, bo na pierwszym semestrze mieli podobne
oceny.
Z tego powodu wygodnie jest definiować podobieństwo przez składowe, np. tak
![]() |
gdzie
to składowa
niepodobieństwa, a
to
waga, z jaką ta składowa wpływa na końcową wartość niepodobieństwa.
Wagi są istotne, ponieważ jeżeli będziemy chcieli przewidzieć, czy jakiś
przedmiot nam się będzie podobał, to będziemy szukać studentów
o podobnych gustach, będziemy więc większą wagę przykładać do składowych
opisujących gusta (np. podobne wybory przedmiotów obieralnych). Jeżeli
interesować nas będzie trudność przedmiotu, to będziemy większą
wagę przykładać do składowych związanych z biegłością w danej
dziedzinie.
Mając miarę podobieństwa/niepodobieństwa, możemy chcieć wiedzieć, czy nie da się ze zbioru wszystkich studentów wydzielić podzbiorów studentów „podobnych”. Aby zilustrować to zagadnienie, rozważmy następującą funkcję niepodobieństwa
![]() |
gdzie
to zbiór przedmiotów, na które zapisany jest student
to zbiór przedmiotów, na które zapisany jest student

W naszym przykładzie dla Wydziału MIMUW mamy dane dla trzech tysięcy studentów. Macierz niepodobieństwa dla każdej pary studentów ma więc trzy tysiące wierszy i trzy tysiące kolumn. Jak coś zobaczyć w takiej macierzy?
Z pomocą przyjdzie nam technika skalowania wielowymiarowego
(Multidimensional scaling), która pozwala na znalezienie
-wymiarowej
reprezentacji obiektów dobrze odwzorowującej niepodobieństwo między
obiektami. Dla
otrzymamy dwuwymiarowy opis dla każdego
studenta, który możliwie dobrze zachowa opisaną funkcję niepodobieństwa.
Przypadek
jest interesujący, ponieważ dwa wymiary można
przedstawić na wykresie punktowym.
Zamieszczony obok wykres przedstawia wynik skalowania dla wspomnianych trzech tysięcy studentów. Każdy punkt odpowiada jednemu studentowi. Punkty bliskie sobie powinny odpowiadać studentom podobnym według zadanej miary niepodobieństwa, a punkty dalekie od siebie odpowiadać powinny studentom niepodobnym.
Jak widzimy, punkty nie tworzą jednej chaotycznej chmury, ale odnaleźć można podgrupy studentów wybierających podobne przedmioty! Niektóre z nich odpowiadają specjalnościom, widać jednak, że granice między grupami nie są ostre i wielu studentów jest „gdzieś pomiędzy”.
Co jeszcze możemy zrobić z macierzą niepodobieństwa? Wykorzystajmy
ją do oszacowania/odgadnięcia
czyli opinii studenta
o przedmiocie
Przyjmując, że opinia studenta
będzie podobna do opinii studentów
podobnych do
mogę np. uśrednić opinię 10 studentów najbardziej
podobnych do
lub studentów o niepodobieństwie mniejszym od
W wielu przypadkach dobre wyniki daje uśrednianie opinii wielu
studentów poprzez ważenie głosu studenta
w zależności od tego,
jak bardzo jest on podobny do studenta
Im bardziej podobny, tym
ważniejsza będzie jego opinia.
Tak otrzymujemy wzór na ocenę opinii studenta
o przedmiocie
jako ważoną średnią opinii innych studentów
![]() |
gdzie
to zbiór wszystkich studentów,
to funkcja
określająca, jak niepodobieństwo studentów
i
przekłada się
na wagę opinii studenta
w przewidywaniu gustów studenta
Jednym z częstych wyborów jest

Możemy teraz oszacować opinię studenta
o każdym z przedmiotów.
Podobnie możemy oszacować jego szanse zaliczenia przedmiotu i przedstawić
mu bardziej spersonalizowaną mapę „trudność–popularność”.
Przedstawiony wzór na „średnią” można dowolnie modyfikować. Na przykład, zamiast wyznaczania średniej zdawalności możemy wyznaczyć rozkład ocen wśród podobnych studentów ważony podobieństwem do wybranego studenta.
Zobaczmy, jak to wygląda na konkretnym przykładzie. Weźmy pod lupę
przedmiot Pakiety statystyczne: R i SAS, który prowadzę. Następnie wybierzmy
studenta o wdzięcznym identyfikatorze
który na ten
przedmiot jeszcze nie uczęszczał, i zobaczmy, czy wśród studentów, którzy
ten przedmiot realizowali, ci podobni do
otrzymywali lepsze czy
gorsze oceny.
Na poniższym wykresie przedstawiono procent studentów, którzy otrzymali
określoną ocenę z przedmiotu Pakiety statystyczne: R i SAS. Dolny pasek
opisuje sytuacje wszystkich studentów realizujących ten przedmiot. Pasek na
górze jest ważony podobieństwem do
Okazuje się, że
„podobni” studenci mają częściej lepsze oceny. Również szanse niezaliczenia
(oznaczone jako NK) są niższe niż w przypadku „losowego” studenta. Nic,
tylko się zapisywać!

Na podobnej zasadzie działają systemy rekomendacyjne sugerujące zakup książki w księgarni internetowej czy proponujące film do obejrzenia. I podobnie jak w przypadku książek czy filmów, nie ma gwarancji, że to, co podobało się osobom o podobnych profilach do naszego, spodoba się również nam. Gwarancji nie ma, ale czasem nawet informacja „niepewna” może być użyteczna.