Skip to content
Snippets Groups Projects
Commit c26af402 authored by Radek Puš's avatar Radek Puš
Browse files

Corrected Latex + added DB analysis

parent 16a694d2
No related branches found
No related tags found
No related merge requests found
No preview for this file type
...@@ -32,31 +32,32 @@ ...@@ -32,31 +32,32 @@
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
   
\department{Katedra softwarového inženýrství} \department{Katedra softwarového inženýrství}
\title{Aplikace pro doporučování na základě finančních akcí} \title{Aplikace pro předpovídání transakcí na základě finančních akcí}
\authorGN{Radek} %(křestní) jméno (jména) autora \authorGN{Radek} %(křestní) jméno (jména) autora
\authorFN{Puš} %příjmení autora \authorFN{Puš} %příjmení autora
\authorWithDegrees{Radek Puš} %jméno autora včetně současných akademických titulů \authorWithDegrees{Radek Puš} %jméno autora včetně současných akademických titulů
\author{Radek Puš} %jméno autora bez akademických titulů \author{Radek Puš} %jméno autora bez akademických titulů
\supervisor{doc. Ing. Pavel Kordík, Ph.D.} \supervisor{Ing. Miroslav Balík, Ph.D.}
\acknowledgements{Děkuji společnosti Trask Solutions a.s., zejména pak Ing. Petru Hnízdilovi a Ing. Pavlu Svobodovi, za veškeré konzultace a datové podklady k práci. Dále děkuji své přítelkyni Mariyi Tsanko, za dodání doplňujících dat ze svých bankovních účtů.} \acknowledgements{Děkuji společnosti Trask Solutions a.s., zejména pak Ing. Petru Hnízdilovi a Ing. Pavlu Svobodovi, za veškeré konzultace a datové podklady k práci. Dále děkuji své přítelkyni Mariyi Tsanko, za dodání doplňujících dat ze svých bankovních účtů.}
\abstractCS \abstractCS
{V Bakalářské práci byl řešen problém doporučování bankovních produktů klientovi na základě jeho uplynulé historie finančních transakcí. Cílem práce je doporučování transakcí implementovat pomocí umělé inteligence spolu s vytvořením webového rozhraní. Toho bylo dosaženo pomocí Angularu JS, tvořící klienskou aplikaci, a frameworkem .NET Core, který tuto aplikaci obsluhuje. Umělá inteligence byla řešena jednou z metod kolaborativního filtrování a to konkrétně metodou ALS (Alternating Least Squares) {V Bakalářské práci byl řešen problém předpovídání budoucích transakcí klientovi, na základě jeho uplynulé finanční historie. Cílem práce je pokusit se implementovat toto předvídání pomocí umělé inteligence spolu s vytvořením webového rozhraní. Toho bylo dosaženo pomocí Angularu JS, tvořící klienskou aplikaci, frameworkem .NET Core, který tuto aplikaci obsluhuje ve spojení s databází Microsoft SQL. Zabezpečení využívá JWT tokenu a o šifrování uživatelských hesel se stará RFC~2898/SHA512. Umělá inteligence byla řešena jako lineární regrese.
%============= %=============
Tuto metodu jsem implementoval jako využití produktů uživatelů s podobným finančních chováním, k doporučení produktu dalšímu uživateli.
% <= mělo by obsahovat mojí vlastní implementaci problému % <= mělo by obsahovat mojí vlastní implementaci problému
\newline Vyhodnocení správnosti implementace algoritmu bylo následně provedeno pomocí další sady dat, která zobrazuje, jaké transakce reálně uživatelé provedli (jak se chovali) a případně i jaké produkty si objednali.} \newline Umělou inteligenci jsem implementoval jako několik po sobě jdoucích vrstev, jejichž počet neuronu se postupně snižuje na jeden jediný, který mi dává informaci, zdali se bude transakce opakovat, či nikoli. Abych posléze mohl vyhodnotit, zda se transakce opravdu opakovala, porovnával jsem velikosti transakcí po jednotlivých týdnech a ty částkou si nejvíce podobné jsem označil za opakující se.
\newline Tento způsob předvídání jsem dále doplnil o odfiltrování trvalých transakcí, jež se už ze své podstaty vždy opakují.
}
%=============
\abstractEN{ \abstractEN{
In the Bachelor Thesis, the problem of recommending banking products to a client based on his past history of financial transactions was solved. The aim of this work is to implement transactions using artificial intelligence together with creation of web interface. This has been achieved with Angular JS as client application, and the .NET Core Entity framework that serves this application. Artificial intelligence was solved by one of the methods of collaborative filtering, namely by the ALS (Alternating Least Squares) method. In the Bachelor thesis was solved the problem of forecasting future transactions to the client, based on his past financial history. The aim of this work is to try to implement this prediction by using artificial intelligence together with creating a web interface. This was achieved by using Angular JS, a client application, with the .NET Core framework, which runs the application in conjunction with the Microsoft SQL database. Security uses the JWT token and RFC~2898/SHA512 takes care of user password encryption. Artificial intelligence was solved as linear regression.
I have implemented this method as a use of users' products with similar financial behavior, to recommend the product to another user. \newline I have implemented artificial intelligence as several consecutive layers, the number of neurons gradually decreasing to one, which gives me information whether the transaction will repeat or not. In order to assess whether the transaction was actually recurring, I compared the size of the transactions on a week-by-week basis and described the amount most similar as recurring.
\newline \newline I have further supplemented this way of anticipation by filtering out permanent transactions, which by their very nature always repeat themselves.
The evaluation of the correctness of the implementation of the algorithm was then carried out using another set of data that shows what transactions the users actually performed (how they behaved) and possibly what products they ordered.
} }
%ing %ing
\placeForDeclarationOfAuthenticity{V~Praze} \placeForDeclarationOfAuthenticity{V~Praze}
\declarationOfAuthenticityOption{4} %volba Prohlášení (číslo 1-6) \declarationOfAuthenticityOption{4} %volba Prohlášení (číslo 1-6)
\keywordsCS{webový portál, rekomandace bankovní produktů, analýza finančních transakcí, umělá inteligence, .NET Core, Entity Framework, Angular JS} \keywordsCS{webový portál, předvídání finančních transakcí, analýza finančních transakcí, umělá inteligence, .NET Core, Entity Framework, Angular JS}
\keywordsEN{web portal, financial products recommendations, financial transaction analysis, artificial intelligence, .NET Core, Entity Framework, Angular JS} \keywordsEN{web portal, anticipating financial transactions, financial transaction analysis, artificial intelligence, .NET Core, Entity Framework, Angular JS}
% \website{http://site.example/thesis} %volitelná URL práce, objeví se v tiráži - úplně odstraňte, nemáte-li URL práce \website{https://gitlab.fit.cvut.cz/pusradek/bakalarka} %volitelná URL práce, objeví se v tiráži - úplně odstraňte, nemáte-li URL práce
   
\begin{document} \begin{document}
   
...@@ -64,39 +65,56 @@ The evaluation of the correctness of the implementation of the algorithm was the ...@@ -64,39 +65,56 @@ The evaluation of the correctness of the implementation of the algorithm was the
% \newacronym{FIT}{FIT}{Fakulta informa{\v c}n{\' i}ch technologi{\' i}} % \newacronym{FIT}{FIT}{Fakulta informa{\v c}n{\' i}ch technologi{\' i}}
   
\begin{introduction} \begin{introduction}
%sem napište úvod Vaší práce %sem napište úvod Vaší práce ( 1 - 1,5 strany)
Ve své práci řeším problém zpracování finančních transakcí. Při výběru jsem využil možného zájmu bankovní instituce o odkoupení výsledného produktu. Ta by mohla využít mou práci k lepšímu doporučování vlastních produktů svým klientům. Mě osobně vždy zajímal vývoj v oblasti umělé inteligence a chtěl jsem si proto své znalosti prohloubit. %TODO:
\newline Technologie, které jsem využil pro svou práci, jsem si vybral na základě svého současného zaměstnání. Skrze společnost Trask Solutions a.s. pracuji jako externista a software developer ve společnosti ČSOB Leasing. Zde pomáhám vyvíjet aplikaci právě v jazyce C\# a frameworku ASP .NET. Avšak framework jsem použil novější (Entity Framework pro .NET Core). Práci bych rád využil ke zvýšení své kvalifikace v oboru. Pro Frontend jsem zvolil Angular JS, protože jsem se chtěl také naučit něco nového. Navíc spolupracuji s týmem, který v tomto frameworku vyvíjí aplikace a v případě potřeby mi mohou obratem pomoci. % - možná přidat něco jako "aktuálnost tématu"
% - možná - čím se nezabývám
% - nepatří se podnadpisy!
Ve své práci řeším problém zpracování finančních transakcí. Při výběru jsem využil možného zájmu bankovní instituce o odkoupení výsledného produktu. Ta by mohla využít mou práci k zobrazování pravděpodobných transakcí vlastním uživatelům. Případně by mohla lépe porozumět chování a potřeby klientů samotných. Tím by mohla produkty lépe cílené na zakazníky. Mě osobně navíc vždy zajímal vývoj v oblasti umělé inteligence a chtěl jsem si proto své znalosti prohloubit.
\newline Technologie, které jsem využil pro svou práci, jsem si vybral na základě svého současného zaměstnání. Skrze společnost Trask Solutions a.s. pracuji jako externista a software developer ve společnosti ČSOB Leasing. Zde pomáhám vyvíjet aplikaci právě v jazyce C\# a frameworku ASP.NET. Avšak framework jsem použil novější (.NET Core ve spojení s Entity Frameworkem). Práci bych rád využil ke zvýšení své kvalifikace v oboru. Pro Frontend jsem zvolil Angular JS, protože jsem se chtěl také naučit něco nového. Navíc spolupracuji s týmem, který v tomto frameworku vyvíjí aplikace a v případě potřeby mi mohou obratem pomoci.
% TODO: Představení struktury celé práce –obsah jednotlivých kapitol
\end{introduction} \end{introduction}
   
\chapter{Cíl práce} \chapter{Cíl práce}
Cílem práce je vytvoření webové aplikace, která bude pro skupinu uživatelů poskytovat službu doporučování finančních produktů na základě jimi nahrané transakční historie. Cílem práce je vytvoření webové aplikace, která bude pro skupinu uživatelů poskytovat službu předvídání finančních transakcí na základě jimi nahraného výpisu z účtu.
\newline Cílem teoretické části práce je nastudování Angular frameworku, Typescriptu a Entity Frameworku Core / .NET Core. Dále je třeba zjistit možnosti využití umělé inteligence, která bude muset alespoň z části předpovědět chování uživatelů. Tato umělá inteligence bude předpovídat chování uživatelů na základě předem získaných (anonymizovaných) a obohacených dat jejich finanční historie uživatelů. \newline Cílem teoretické části práce je nastudování Angular frameworku, Typescriptu a Entity Frameworku Core / .NET Core. Dále je třeba zjistit možnosti využití umělé inteligence, která bude muset alespoň z části předpovědět chování uživatelů. Tato umělá inteligence bude předpovídat chování uživatelů na základě předem získaných (anonymizovaných) a obohacených dat jejich finanční historie.
\newline Cílem praktické části je implementovat tuto webovou aplikaci včetně umělé inteligence, která bude vytěžovat údaje z uživatelem nahraných dat. \newline Cílem praktické části je implementovat tuto webovou aplikaci, včetně zabezpečení, a pokusit se implementovat a integrovat umělou inteligenci, která bude vytěžovat údaje z uživatelem nahraných dat.
   
   
%\chapter{Analýza a návrh} %\chapter{Analýza a návrh}
\chapter{Analýza} \chapter{Analýza}
Projekt je webová aplikace. Musí se proto skládat ze dvou částí: Backendu a Frontendu. Frontend je webovým rozhraním a Backend zpracovává údaje uživatele a dodává webovému rozhraní data. Projekt je webová aplikace. Musí se proto skládat ze dvou částí: Backendu a Frontendu. Frontend je webovým rozhraním a Backend zpracovává údaje uživatele a dodává webovému rozhraní data.
\section{Webové rozhraní} \section{Webové rozhraní}
Pro webové rozhraní se nabízejí dvě možná řešení. Single Page Website a Multiple Page website. Každé má své pro a proti. Pro webové rozhraní se nabízejí dvě možná řešení. Single Page Website a Multiple Page website. Každé má své pro a proti.
\subsection{One Page website} \subsection{One Page website}
Jak už název napovídá, je to web, skládající se z jediné stránky. Stránka obvykle neobsahuje příliš mnoho informací a je založena zejména na dynamičnosti prvků. Velmi často jsou to doprovodné stránky nebo krátké informativní stránky, s jejichž pomocí se subjekty na webu prezentují. Jak už název napovídá, je to web, skládající se z jediné stránky. Stránka obvykle neobsahuje příliš mnoho informací a je založena zejména na dynamičnosti prvků. Velmi často jsou to doprovodné stránky nebo krátké informativní stránky, s jejichž pomocí se subjekty na webu prezentují.
\subsection{Multiple Page website} \subsection{Multiple Page website}
Tyto weby, vývojově starší, obsahují zpravidla hodně informací. Obsahují nějakou formu routování - ať už složitější, dynamickou, či jednodušší, statickou. Uživateli podávají poměrně velké množství informací. Jsou to zpravidla nejrůznější blogy, e-shopy, fóra. Jejich implementace je často snazší (zejména u statických webů), jsou schopny, často přehledněji, zprostředkovat uživateli více informací a jsou (i z historických důvodů) běžnější. Tyto weby, vývojově starší, obsahují zpravidla hodně informací. Obsahují nějakou formu routování - ať už složitější, dynamickou, či jednodušší, statickou. Uživateli podávají poměrně velké množství informací. Jsou to zpravidla nejrůznější blogy, e-shopy, fóra. Jejich implementace je často snazší (zejména u statických webů), jsou schopny, často přehledněji, zprostředkovat uživateli více informací a jsou (i z historických důvodů) běžnější.
\section{Zabezpečení}
\subsection{Session}
\subsection{JWT}
\section{Databáze}
Při výběru druhu databáze jsem se musel rozhodnout mezi strukturovaným a nestrukturovaným přístupem k datům. První ze zmíněných je reprezentován SQL, druhý pomocí NoSQL
\subsection{NoSQL}
% TODO screen z excelu
Tento přístup je vhodný pro nestrukturované informace a zvažoval jsem ho jako první. Veškeré záznamy, ve výpisu z účtu, jsou tedy vlastně jen jedna \mbox{"velká tabulka"/super-entita.} Záznamy mohou být nevyplněné (př. jednotlivé symboly) a na první pohled nijak nesouvislé. Pokud se ale na data zaměřím více, mohu si všimnout, že transakce lze rozdělit například na Trvalé a jednorázové příkazy, poplatky~atp. Použití NoSQL databáze pro transakční historii i tak ale nic nebrání. Nakonec zmíněná data dokonce vždy dostanu jako jednu jednu jedinou, nic neříkající, tabulku.
\subsection{SQL}
Druhým přístupem, který jsem nakonec zvolil, jsou standardní SQL databáze. Tento přístup vyžaduje strukturování dat a to, jak jsem již zmínil výše, je splněno. Lze zde nalézt různé závislosti. Pro vstupy pro mnou implementovanou umělou inteligenci je navíc mnohem lepší jasně definované vstupy, což SQL přístup nabízí. Navíc veškerou historii transakcí všech uživatelů nechci ukládat do databáze, ale raději v *.csv souborech na disk a zaregistrovat jen některé transakce. V opačném případě by se celá databáze stala zbytečně velkou a pomalou.
%\newpage
\section{Umělá inteligence} \section{Umělá inteligence}
Na českém trhu je, co se týče předpovídání transakcí, velmi pravděpodobně zatím jediné finanční bankovnictví České Spořitelny, zvané "\textit{George}." a její doplněk "\textit{Moje zdravé finance}."\cite{George} Aplikace je přístupná pouze klientům České spořitelny a zobrazuje pouze příjmy a výdaje. V části "Moje zdravé finance" lze pak vidět, jak dlouho mi vystačí současné úspory nebo například odhadnout výši mého budoucího důchodu. Tato aplikace neposkytuje žádné hlubší doporučování produktů, pouze je schopna vyhodnotit transakce a za drobný poplatek sjednat schůzku s fyzickou osobou (pracovníkem České spořitelny), která může poradit, na čem by mohl klient ušetřit. Na českém trhu je, co se týče předpovídání transakcí, velmi pravděpodobně zatím jediné finanční bankovnictví České Spořitelny, zvané "\textit{George}." a její doplněk "\textit{Moje zdravé finance}."\cite{George} Aplikace je přístupná pouze klientům České spořitelny a zobrazuje pouze příjmy a výdaje. V části "Moje zdravé finance" lze pak vidět, jak dlouho mi vystačí současné úspory nebo například odhadnout výši mého budoucího důchodu. Je ale schopna předpovědět některé mé budoucí transakce, tedy funkci, kterou mám za úkol implementovat. Aplikace byla spuštěna v průběhu května 2018\cite{vznikGeorge_Investujeme},\cite{vznikGeorge_Mesec} (ačkoli přesné datum jsem nebyl schopen dohledat), tedy chvíli po schválení zadání mé Bakalářské práce. To tedy dokazuje, že o témá je v praxi zájem, ale bohužel také to, že v mezičase mého vypracovávání, byl problém zpracován jinde.
\newline Na zahraničním trhu pak existují aplikace, které umožňují klientům sledovat např. jejich měsíční útratu a na základě výpočtu jim poskytnout informaci, jestli a jak moc, překročili průměrné výdaje v tom kterém měsíci. Některé jsou schopny za poplatek, stejně jako u České spořitelny, sjednat i schůzky. Jako příklad mohu uvést třeba \textit{Personal Capital}.\cite{PersonalCapitalCorporation} \newline Na zahraničním trhu pak existují aplikace, které umožňují klientům sledovat např. jejich měsíční útratu a na základě výpočtu jim poskytnout informaci, jestli a jak moc, překročili průměrné výdaje v tom kterém měsíci.\cite{zahranicni_aplikace}. Ve využití umělé inteligence je tedy asi Česká spořitelna, resp. Erste Group.
\newline Asi jedinou formou vypracovávání odhadů, která se blíží mému tématu, jsou tedy služby, působící v naprosto jiném odvětví. Jsou to služby jako YouTube\cite{YouTube}, Netflix\cite{Netflix}, Steam\cite{Steam}, Spotify\cite{Spotify}. Tzn. služby, zabývající se doporučováním filmů, videí, hudby nebo videoher na základě statistik ostatních uživatelů. Konkrétní algoritmy jsou tajné,\cite{YoutubeTechnet} ale základní principy jsou občas zveřejněny\cite{YoutubeRecommendations}. V zásadě bych ale jednotlivé algoritmy rozdělil následovně:
   
\subsection{Statický} \section{Obohacení}
Doporučování je implementováno pomocí nějaké formy rozhodovacího stromu (decision tree). Zadefinuje se tedy, co se má kdy zobrazit. Podrobně to rozebírá Steeve Huang ve svém článku \textit{Introduction to Recommender System. Part 1}\cite{StaticCF}
\subsection{Dynamický}
Tento způsob implementace využije transformaci problému do matice, na základě které se učí neuronové sítě rozpoznat vzorce. Přístup nemusí být ale nutně rychlejší, či s lepšími výsledky. Tyto souvislosti opět popisuje Steeve Huang ve své druhé části článku o kolaborativním filtrování.\cite{DynamicCF}. Pravě tento způsob využívá ale například YouTube,\cite{YoutubeRecommendations} o kterém jsem se, v této souvislosti, zmínil již dříve.
   
\chapter{Realizace} \chapter{Realizace}
\section{Webové rozhraní} \section{Webové rozhraní}
Pro webové rozhraní jsem zvolil One Page website. Nepotřebuji uživateli předávat velké množství informací. V zásadě jen zobrazuji grafy a doporučuji produkty. Nemusím tedy vytvářet rozsáhlý web a nejrůznější routování. V případě jedné stránky se navíc snadněji pracuje s responzivitou, protože ji stačí vyladit na jedinou stránku webu. U Multiple Page webu by mohl tuto responzivitu rozbít přechod na jinou stránku. To zde nemůže nastat. Pro webové rozhraní jsem zvolil, s vyjímkou stránek pro registraci a přihlášení, One Page website. Nepotřebuji uživateli předávat velké množství informací. V zásadě jen zobrazuji grafy a své předpoklady. Nemusím tedy vytvářet rozsáhlý web a jen jednoduché routování. V případě jedné stránky se navíc snadněji pracuje s responzivitou, protože ji stačí vyladit na jednu, resp. dvě stránky webu. U Multiple Page webu by mohl tuto responzivitu rozbít přechod na jinou stránku. To zde nemůže nastat.
\section{Backend} \section{Backend}
Při výběru formy zpracování umělé inteligence jsem se rozhodl pro využití neuronových sítí. Tato forma zpracování je novější, ale jinak nemá žádné výrazné výhody.\cite{DynamicCF}. Vybral jsem si ji tedy hlavně proto, že se mi zdá zajímavější. Pro zjištění, který model je přesnější, bych ale musel implementovat obě varianty, což je výrazně časově náročný problém a rozdíl by patrně nebyl markantní. Navíc lze jen těžko odhadnout, jak přesně by se jednotlivé modely chovaly v horizontu let. Při výběru formy zpracování umělé inteligence jsem se rozhodl pro využití neuronových sítí. Tato forma zpracování je novější, ale jinak nemá žádné výrazné výhody.\cite{DynamicCF}. Vybral jsem si ji tedy hlavně proto, že se mi zdá zajímavější. Pro zjištění, který model je přesnější, bych ale musel implementovat obě varianty, což je výrazně časově náročný problém a rozdíl by patrně nebyl markantní. Navíc lze jen těžko odhadnout, jak přesně by se jednotlivé modely chovaly v horizontu let.
%\section{Technologie} %\section{Technologie}
......
Latex/img/Moje_zdrave_finance.png

93.1 KiB

...@@ -5,40 +5,27 @@ ...@@ -5,40 +5,27 @@
note = "[cit. 2019-23-04]" note = "[cit. 2019-23-04]"
} }
   
@MANUAL{PersonalCapitalCorporation, @MANUAL{vznikGeorge_Investujeme,
title = "Personal Capital {[online]}", title = "investujeme.cz {[online]}",
organization = "PersonalCapitalCorporation", organization = "Fincentrum a. s.",
url = "https://www.personalcapital.com/wealth-management", url = "https://www.investujeme.cz/clanky/george-prichazi-ceska-sporitelna-kompletne-meni-sve-internetove-bankovnictvi/",
note = "[cit. 2019-23-04]" note = "[cit. 2019-11-10]"
} }
   
@MANUAL{YouTube, @MANUAL{vznikGeorge_Mesec,
title = "YouTube {[online]}", title = "Měšec.cz {[online]}",
organization = "YouTube, LLC", organization = "Internet Info, s.r.o.",
url = "https://www.youtube.com/", url = "https://www.mesec.cz/clanky/george-startuje-naostro-sporitelna-spousti-nove-bankovnictvi-pro-1-5-milionu-lidi/",
note = "[cit. 2019-23-04]" note = "[cit. 2019-11-10]"
} }
   
@MANUAL{Netflix, @MANUAL{zahranicni_aplikace,
title = "Netflix {[online]}", title = "Medium {[online]}",
organization = "Netflix, Inc.", organization = "A Medium Corporation",
url = "https://www.netflix.com/", url = "https://medium.com/product-soup/managing-money-and-technology-today-34be4d121c10",
note = "[cit. 2019-23-04]" note = "[cit. 2019-11-10]"
} }
   
@MANUAL{Steam,
title = "Steam {[online]}",
organization = "Steam",
url = "https://store.steampowered.com/",
note = "[cit. 2019-23-04]"
}
@MANUAL{Spotify,
title = "Spotify {[online]}",
organization = "Spotify Technology S.A.",
url = "https://www.spotify.com/",
note = "[cit. 2019-23-04]"
}
   
@ARTICLE {YoutubeTechnet, @ARTICLE {YoutubeTechnet,
title = "Jak vám Google vnucuje videa? Nahlédněte pod pokličku YouTube", title = "Jak vám Google vnucuje videa? Nahlédněte pod pokličku YouTube",
...@@ -60,27 +47,8 @@ ...@@ -60,27 +47,8 @@
url = "http://storage.googleapis.com/pub-tools-public-publication-data/pdf/45530.pdf" url = "http://storage.googleapis.com/pub-tools-public-publication-data/pdf/45530.pdf"
} }
   
@ARTICLE {StaticCF,
title = "Introduction to Recommender System. Part 1 (Collaborative Filtering, Singular Value Decomposition)",
author = "Steeve Huang",
journal = "Hacker Noon {[online]}",
howpublished = "[online]",
month = "28. " # "leden",
year = "2018",
note = "[cit. 2019-23-04]",
url = "https://hackernoon.com/introduction-to-recommender-system-part-1-collaborative-filtering-singular-value-decomposition-44c9659c5e75"
}
   
@ARTICLE {DynamicCF,
title = "Introduction to Recommender System. Part 2 (Neural Network Approach)",
author = "Steeve Huang",
journal = "Towards Data Science {[online]}",
howpublished = "[online]",
month = "16. " # "únor",
year = "2018",
note = "[cit. 2019-23-04]",
url = "https://towardsdatascience.com/introduction-to-recommender-system-part-2-adoption-of-neural-network-831972c4cbf7"
}
   
%==================== Examples ================= %==================== Examples =================
@MANUAL{svgspec, @MANUAL{svgspec,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment