Tworzenie systemu rekomendacji kursów przy użyciu Pythona

Węzeł źródłowy: 1055841

Ten artykuł został opublikowany jako część Blogathon Data Science

Wprowadzenie

zgodnie z ich preferencjami. Techniki te mogą zapewniać użytkownikowi możliwość podejmowania decyzji. Pozycje odnoszą się do dowolnego produktu, który system rekomendujący sugeruje użytkownikowi, takiego jak filmy, muzyka, wiadomości, pakiety podróżne, produkty e-commerce itp.

System Recommender jest zbudowany dla określonego rodzaju aplikacji w zależności od polecanych elementów, a zatem jego graficzny interfejs użytkownika i projekt są dostosowywane. Rozwój systemu rekomendacji zrodził się z ogólnej idei, że jednostki polegają na innych przy podejmowaniu regularnych decyzji w swoim życiu. Gwałtowny wzrost ilości i różnorodności informacji dostępnych w sieci przyczynił się do rozwoju systemów rekomendacji, co z kolei doprowadziło do ich użytkowników.

Rodzaje systemów rekomendujących

Istnieją trzy szerokie kategorie systemów rekomendujących:

Rodzaje systemu rekomendującego

Źródło pliku: Obrazy Google

1.Współpracujące systemy oparte na filtrowaniu:

Systemy te zalecają użytkownikom elementy na podstawie obliczenia podobieństwa tych użytkowników do podobnych użytkowników w systemie lub na podstawie elementów podobnych do elementów lubianych przez użytkownika w przeszłości. Tak więc wspólne filtrowanie można dalej podzielić na dwie kategorie:

  • i) oparte na użytkownikach wspólne filtrowanie– System rekomendujący próbuje znaleźć użytkowników podobnych do użytkownika docelowego, obliczając pewne miary podobieństwa, a następnie sugeruje elementy użytkownikowi docelowemu w oparciu o podobne preferencje użytkownika. Obliczenie podobieństwa jest tutaj ważnym zadaniem.
  • ii.) wspólne filtrowanie oparte na elementach– System rekomendacji próbuje znaleźć przedmioty na podstawie
    na temat wcześniejszych preferencji użytkownika, a następnie polecić mu podobne pozycje
    użytkownik. Te elementy mogą być interesujące dla użytkownika.

2. Systemy rekomendacji oparte na treści:

System koncentruje się na właściwościach elementów, które mają być sugerowane użytkownikom. Na przykład, jeśli użytkownik YouTube oglądał filmy komediowe, system zarekomenduje mu filmy z gatunku komediowego. Podobnie, jeśli użytkownik Netflix oglądał filmy konkretnego reżysera, system zarekomenduje mu te filmy.

3. Systemy hybrydowe:  Systemy te są połączeniem systemów współpracy i systemów opartych na treści.

 

Budowa systemu rekomendacji kursów

Krok 1: Odczyt zestawu danych.

#importowanie niezbędnych bibliotek. importuj pandy jako dane pd = pd.read_csv(r"C:UsersDellDesktopDatasetdataset.csv") data.head()
zbiór danych | System rekomendacji

Informacje o zbiorze danych:

Zawiera dane uczniów zapisanych do liceum wraz z ich identyfikatorami, strumieniami, ulubionym przedmiotem i ocenami uzyskanymi w klasie 12. Zawiera również kolumny wyników kursu i specjalizacji, które zdawali na maturze.

Chcielibyśmy polecić kursy uczniom z podobnymi ocenami, nurtami i ulubionymi przedmiotami.

Teraz zbudujemy system rekomendacji oparty na treści, który mógłby polecać kursy studentom na podstawie ich podstawowych informacji.

Krok 2: Tworzenie połączonego opisu każdego ucznia w zbiorze danych.

opisy =dane['płeć'] +' '+ dane['temat'] + ' ' + dane['strumień'] +' '+ dane['znaki'].apply(str) #Drukowanie pierwszego opisu opisów[ 0]

Krok 3: Tworzenie macierzy podobieństw między uczniami.

# importuj TfidfVector ze sklearn. from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import linear_kernel def create_similarity_matrix(new_description, overall_descriptions): #Dołącz nowy opis do całego zestawu. general_descriptions.append(new_description) # Zdefiniuj wektoryzator tfidf i usuń wszystkie stopwords. tfidf = TfidfVectorizer(stop_words="english") #Konwertuj macierz tfidf dopasowując i przekształcając dane. tfidf_matrix = tfidf.fit_transform(overall_descriptions) # wypisuje kształt macierzy. tfidf_matrix.shape # obliczanie macierzy podobieństwa cosinusów. cosinus_sim = linear_kernel(tfidf_matrix,tfidf_matrix) return cosinus_sim

Funkcja create_similarity_matrix() służy do generowania cosinusowej macierzy podobieństwa opisów uczniów.

Najpierw dołącza nowy opis ucznia, któremu kierowane są zalecenia, do ogólnych opisów.

Następnie opisy uczniów musiały zostać przekształcone w wektory słowne (wektoryzowana reprezentacja słów). Dlatego do ich konwersji użyjemy TFIDF (Term Frequency Inverse Document Frequency). wynik TF-IDF to częstotliwość występowania słowa w dokumencie, pomniejszona o liczbę dokumentów, w których występuje. Ma to na celu zmniejszenie znaczenia słów, które często występują w opisach, a tym samym ich znaczenia przy obliczaniu ostatecznego wyniku podobieństwa.

Powyższa funkcja ostatecznie wyprowadza macierz podobieństwa cosinusów.

Krok 4: Zdefiniuj funkcję get_recommendations().

def get_recommendations(new_description,overall_descriptions): # utwórz macierz podobieństw cosine_sim = create_similarity_matrix(new_description,overall_descriptions) # Uzyskaj wyniki podobieństwa parami wszystkich uczniów z nowym uczniem. sim_scores = list(enumerate(cosine_sim[-1])) # Sortuj opisy na podstawie wyniku podobieństwa. sim_scores = sorted(sim_scores,key =lambda x:x[1],reverse= True ) # Uzyskaj wyniki 10 najlepszych opisów. sim_scores = sim_scores[1:10] # Pobierz indeksy uczniów. indeksy = [i[0]for i in sim_scores] zwraca dane.iloc[indeksy]

Krok 5: Poleć kurs nowemu uczniowi.

new_description = pd.Series('mężczyzna fizyka 78') get_recommendations(new_description,descriptions)
przykładowe dane

Wyświetlam dwie najlepsze rekomendacje.

 

Problemy w systemach rekomendujących:

1. Problem z zimnym startem:

Za każdym razem, gdy nowy użytkownik wchodzi do systemu rekomendacyjnego, pojawia się pytanie, co mu zarekomendować i na jakiej podstawie, ponieważ wcześniejsze dane nie są dostępne i nie można było przeprowadzić obliczenia podobieństwa. Jednym z rozwiązań tego problemu jest wprowadzenie przez nowego użytkownika krótkiego formularza wprowadzającego zawierającego podstawowe informacje o zainteresowaniach, hobby, zawodzie oraz stworzenie podstawowego profilu użytkownika, a następnie zarekomendowanie nowego użytkownika. W dużym stopniu rozwiązałoby to problem zimnego rozruchu.

2. Problem z rzadkimi danymi: 

Głównym problemem w systemie rekomendacyjnym jest niedostępność odpowiednich danych, co jest głównym wymogiem procesu rekomendacyjnego. Wielu użytkowników nie zawraca sobie głowy przeglądaniem zakupionych przedmiotów. W rezultacie macierz oceny pozycji użytkownika zawiera wiele rzadkich wpisów, które obniżają wydajność algorytmu obliczania podobieństwa. Tak więc jednym rozwiązaniem jest przewidywanie rzadkich wpisów, a wielu badaczy podało algorytmy do przewidywania tych ocen, takie jak algorytm o jednym nachyleniu z ujemną wagą. 

3. Zmiana zestawu danych:

Wraz ze wzrostem ilości danych każdego dnia zwiększa się włączenie danych do poprzedniego zbioru danych systemu rekomendującego, co może zmienić ogólną strukturę i skład zbioru danych. Zarówno nowi użytkownicy, jak i nowe elementy musiały zostać uwzględnione w zbiorze danych. Tak więc ta zmiana musiała zostać uwzględniona w zbiorze danych.

4. Problem skalowalności:

W praktycznym scenariuszu nie zawsze jest możliwe znalezienie podobnych użytkowników i podobnych elementów za każdym razem i uniknięcie awarii systemu. Dlatego zbudowanie skalowalnego systemu rekomendacji jest poważnym problemem.

5. Atak szylingowy:

Atak szylingowy definiuje się jako proces włączania fałszywych profili oraz stronniczych recenzji i ocen w celu zniekształcenia całego procesu rekomendacji. Złośliwy atakujący może wstrzyknąć te profile, aby zwiększyć/zmniejszyć częstotliwość polecania docelowych elementów.

 

Korzyści z systemu rekomendacyjnego:

1. Zwiększenie zysku poprzez zwiększenie liczby sprzedanych przedmiotów: Jednym z głównych celów budowania komercyjnych systemów rekomendacji jest usprawnienie działalności i zwiększenie zysków. Można to zrobić, sugerując użytkownikom nowe przedmioty, które mogą przyciągnąć użytkowników i mogą oni kupić więcej przedmiotów w porównaniu do tych bez Systemów Rekomendacji.

2. Zwiększona satysfakcja użytkownika: Głównym motywem każdej aplikacji biznesowej powinna być satysfakcja użytkownika, ponieważ zwiększa ona ogólny rozwój firmy i zdrowe przetrwanie firmy. Dobrze zaprojektowany system rekomendacji poprawia ogólne wrażenia użytkownika z korzystania z tej aplikacji. Mogą uznać rekomendacje za przydatne i odpowiednie do potrzeb użytkowników. Tak więc głównym celem RS jest zadowolenie użytkowników i uszczęśliwienie ich.

3. Ekstrakcja przydatnych wzorców: Polecający System zapewnia sposób wydobywania użytecznych wzorców potrzeb i preferencji użytkowników, które mogą służyć jako strategiczne informacje dla biznesu. Na przykład, jeśli firma biznesowa mogłaby uzyskać wgląd w to, który produkt jest bardzo lubiany przez jej klientów, a który nie, mogłaby zmienić swoją listę produktów.

4. Zapewnij użytkownikom bardziej zróżnicowane produkty: czasami
niemożliwe jest osobiste znalezienie przedmiotów, które może znaleźć system rekomendujący
zapewniać. Zwiększa to różnorodność przedmiotów, z których otrzymują użytkownicy
zalecenia.

Uwagi końcowe

W dzisiejszych czasach systemy Recommender stały się niezwykle popularne. Wiele popularnych witryn handlu elektronicznego, takich jak Amazon, stosuje spersonalizowane systemy rekomendacji dla swoich użytkowników, aby sugerować im przedmioty, które mogliby kupić, wyciągając wnioski z ich wcześniejszych zachowań. RS zwiększyło swoje zyski. Serwisy takie jak YouTube czy Netflix podpowiadają użytkownikom filmy i muzykę na podstawie gatunków, aktorów, wykonawców filmów, które wcześniej oglądali klienci. Witryny podróżnicze, takie jak MakeMyTrip, zapewniają klientom spersonalizowane pakiety podróżne w oparciu o ich preferencje i współpracują z różnymi użytkownikami za pośrednictwem systemów rekomendacji.

I wreszcie, nie jest to oczywiste.

Dziękuje za przeczytanie!

Media pokazane w tym artykule nie są własnością Analytics Vidhya i są używane według uznania Autora.

Źródło: https://www.analyticsvidhya.com/blog/2021/08/developing-a-course-recommender-system-using-python/

Znak czasu:

Więcej z Analityka Widhja