From 71fdd283f4fb8a2ac5f810f4210a966544acb20c Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 7 Oct 2024 12:59:27 +0100 Subject: [PATCH] [CT4101]: Assignment 1 Halfway Point --- .../assignment1/latex/CT4101-Assignment-1.pdf | Bin 19000 -> 58744 bytes .../assignment1/latex/CT4101-Assignment-1.tex | 159 ++++++++++++++---- .../assignment1/latex/references.bib | 66 +++++++- 3 files changed, 187 insertions(+), 38 deletions(-) diff --git a/year4/semester1/CT4101: Machine Learning/assignments/assignment1/latex/CT4101-Assignment-1.pdf b/year4/semester1/CT4101: Machine Learning/assignments/assignment1/latex/CT4101-Assignment-1.pdf index dfae03eb3de1eef9718e975086188a8eb103184e..57f73d38a228f993632ea691c457dccdd49bf424 100644 GIT binary patch literal 58744 zcma&MQ;;uA@FjS=`?hV{)~{{bwr$(CZQHhO+ugTqd%u6|#>~Uc!{kFDsv=K5RaTyp zr1HX|w2X8tP^8l<1Ir`p^TVT1Ow0rf1a^j&P~6-E^r9Bl&L)ok&DI9aCc-90cE%dNu!3qv;jMM17xx%h2^ zrfJ8|ZPKPe9_Ze`#jckXS6Ffh?wz|N3)_)4;Rz*HG5?l1AT>ge@!cYAxkp5$$trnTsXU!M1n z<;~I=O+P&IO3fb$Bj&1{xqUTYX1xg$fB`cig?hukRo+>5ls8OM zX`!n`z{K3`r%Fr)&kaLsYabd#Oi^MF{65V)BKM6K>zE_@N*?rz zMTySPXtwlgIF9&#&HxXuFwH7>NPh%){cAVRz8S%#^p|}f>=sLv4?5Zn>P)Zlm-013 z{vuGJt*sjbk5R6z!BJ_iw2|kbVD~vjWR;NOMY2V#jlFaAsAR`Ve}j=DreDic_IK)! zAZlu)kjc;kUd+&ei&N`(Yt+D^Zsfl)=Taw-rJqB z3&1@@B=^l~sHDpru(fNF7HCPepSTNNa$59s_i?v%UI!;4H1eC(Rn9PKZ-` zYwM*zP=)M@c5mSj7yo23EIi}rvp_6uz_S8D5+ffbXt2v zO6d$mx+R@2Kns8pf|_|n8`)K&h%LkaL+AjSFb6Befc$v=qRrH0AWNBHO%I_z8fwA- z>PMT3dV$>--30jj`!pJAFn_nBqD~OIyNTsa9 zaF8aw9tm+rnO_oee*8v4r=Ir{Uv$_@ltgR|D^u&1Z=y?NN5HuWFSNHrP2>(k&O#va zrQ_-ohqETrFRYuHjO`m)d-T%WS4~;0kI@z?B6r!^Ji#K8gJuKldsXhNvkuIxEw`L2 zpD)aDMsw}uV_2Jr{{C3a`l_MAd@7xaW(ljEnL`3ISY96AN|{Lrwpt57s3s zc~DaAzN^VlQgzX+nrg5hOM&%5fv_UD#%x@EOB(A*P8sR+6U7|{fVaW2v z|4MUh7(a?`ly0`B_-E(a_%jfYbB|{z(feyqWZN#RRO4ZmskUvV3Nhfd=2Z40iEm8Z zgkJ*?m>F8ohrIzUX6}s|Uo;Axm>JeeTGMzlCk(%XK`ggD8p0^4TBG&UyAt;#iap%B zvTY0-oXAsX3)2R{4IIFc=GZBjA7vN=>H!)%?jt=i&Fzuwr!^Ce)0VKrL;CAtwV7&O z%iXu+{lf4ejB1wt2xm#hf;^hgT=18?kchR4#+k~hkJuODHZwB0qwQY@kw#pnD()$- z4I0H8l-%xCW^hbgqhJQ2&vH*~RTQ67^5VdrC6A}sl83aL1=zAVk$0~9Q6+gZ-!aP7 zx%+WA^!OVrT(khRe24j^aP*H5xD6E3?ci=-ic-|Bi_caeE}i zsw${tr|6l+s^4COsS^IY<_3Oja~?|POB1^_jz!={yCCDmSJ{$?%a<2Up&Dz62a?b#z*M#6PgpokWS zW3{1Gl8@5(She$PRAWyv$}GZJ(#DFIAl`&l8TmMlApzvn$vn{QW{IXz)x;qwnru4# zGQ7+Py&ACbU7J^U5;gIf$+FU={%xAq&BIPK*`r)TYq}wsaxpG~26UpiX;|f>V$I>< zzbhMMmnSS=&AKSF-I!qSPBcgfinf^mlzKaBW^=}%AZ1{TkZM<*2})bi0XFj~Q;iQK zhv=_bF~S*&5#sU$Q&Gn;Ia~5x&8P1oo>Vnj9zep9rh^+QlTpGdFRn4QWAUW?P$nP(9;g0!?i#6Kb;?2x! zFq%ERL6uaNl~}Qn62i(Qk_H)1ygI$8TktZmRcaiTAKwMwneGBWJhaV#oLwh*zH4

EYKUg0INOX-SZ7yUXF`wOeZa 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

tEZcU6-gvjArYr%ppWm`1bho5%#h!0l^*C1B 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 diff --git a/year4/semester1/CT4101: Machine Learning/assignments/assignment1/latex/CT4101-Assignment-1.tex b/year4/semester1/CT4101: Machine Learning/assignments/assignment1/latex/CT4101-Assignment-1.tex index 85d70853..fcb750ec 100644 --- a/year4/semester1/CT4101: Machine Learning/assignments/assignment1/latex/CT4101-Assignment-1.tex +++ b/year4/semester1/CT4101: Machine Learning/assignments/assignment1/latex/CT4101-Assignment-1.tex @@ -4,8 +4,13 @@ % packages \usepackage{microtype} % Slightly tweak font spacing for aesthetics \usepackage[english]{babel} % Language hyphenation and typographical rules -\usepackage[final, colorlinks = true, urlcolor = black, linkcolor = black]{hyperref} +\usepackage[final, colorlinks = true, urlcolor = black, linkcolor = black, citecolor = black]{hyperref} \usepackage{changepage} % adjust margins on the fly +\usepackage{multicol} + +\usepackage[backend=biber, style=numeric, date=iso, urldate=iso]{biblatex} +\addbibresource{references.bib} +\DeclareFieldFormat{urldate}{Accessed on: #1} \usepackage{fontspec} \setmainfont{EB Garamond} @@ -27,6 +32,9 @@ \usepackage[yyyymmdd]{datetime} \renewcommand{\dateseparator}{--} +\usepackage{tikz} +\usetikzlibrary{trees} + \usepackage{titlesec} % \titleformat{\section}{\LARGE\bfseries}{}{}{}[\titlerule] % \titleformat{\subsection}{\Large\bfseries}{}{0em}{} @@ -47,65 +55,158 @@ \begin{document} \hrule \medskip \begin{minipage}{0.295\textwidth} + \vfill \raggedright \footnotesize Name: Andrew Hayes \\ % E-mail: \href{mailto://a.hayes18@universityofgalway.ie}{\texttt{a.hayes18@universityofgalway.ie}} \hfill\\ Student ID: 21321503 \hfill \\ Programme: 4BCT \hfill + \vfill \end{minipage} \begin{minipage}{0.4\textwidth} \centering - \vspace{0.4em} \Large - \textbf{CT4101} \\ + \vfill + \textbf{CT4101} + \vfill \end{minipage} \begin{minipage}{0.295\textwidth} \raggedleft + \vfill \today + \vfill \end{minipage} -\medskip\hrule +\smallskip +\hrule \begin{center} \normalsize Assignment 01: Classification Using Scikit-Learn \end{center} \hrule -\section{Algorithm 1: } +\section{Description of Algorithms} +\subsection{Algorithm 1: Random Forest} +% Detailed description of algorithm 1. +% Clearly describe each of your chosen scikit-learn algorithm implementations in turn, paying special attention to discussing the two hyperparameters that you have chosen to tune for each algorithm. +% You should write a maximum of 1 page per algorithm. -\subsection{Detailed Description of Algorithm 1} -\subsection{Why I Chose this Algorithm} +\textbf{Random decision forest} is a supervised machine learning algorithm that can be used for both classification \& regression that builds upon the \textbf{decision tree} algorithm by combining several decision trees to generate labels for a dataset. +An implementation of this algorithm for classification is provided in scikit-learn as \mintinline{python}{sklearn.ensemble.RandomForestClassifier} \supercite{scikit_randomforestclassifier}. +While it can be used for regression as well as classification, I will only be referring to its use as a classification algorithm in this assignment, as regression is not relevant to the wildfire classification task at hand. +\\\\ +Since the random decision forest algorithm builds upon the decision tree algorithm, it is first necessary to explain briefly what decision trees are and how they work. +A decision tree can be thought of a series of internal nodes (i.e., nodes which are not leaf nodes) that contain a question which separates the input data. +The decision tree is traversed from root to leaf for each instance being classified, where the leaf node to which we arrive is the label for that instance. +For example, a decision tree might be used to determine whether or not a living thing is a mammal, where each internal node is a question that helps to separate non-mammalian data instances from mammalian, and each leaf node is a label stating whether or not the living thing is a mammal. +Each internal node should narrow down the final label as much as possible i.e., each question should give us the maximum information about the instance and should be arranged in the order that narrows it down as quickly as possible. -Graphic illustration of how the algorithm works +\begin{figure}[H] + \centering + \begin{tikzpicture}[ + every node/.style={rectangle, draw=black!50, thick, minimum size=1cm}, + level 1/.style={sibling distance=5cm}, + level 2/.style={sibling distance=3cm} + ] -\subsection{Hyperparameter Details for Tuning} + % Internal Nodes + \node[fill=white] {Animal?} + child { node[fill=gray!20] {Not a mammal} edge from parent node[above, draw=none] {No} } + child { node[fill=white] {Has hair?} + child { node[fill=gray!20] {Not a mammal} edge from parent node[left, draw=none] {No} } + child { node[fill=gray!20] {Mammal} edge from parent node[right, draw=none] {Yes} } + edge from parent node[above, draw=none] {Yes} + }; -\subsection{Model Training \& Evaluation} -\subsubsection{Data Preprocessing \& Visualisation} -\subsubsection{Training \& Evaluation Details} -\subsubsection{Discussion of Results} + \end{tikzpicture} + \caption{Simplified Decision Tree to Determine Whether a Creature is a Mammal} +\end{figure} -\section{Algorithm 2: } +Decision trees have many advantages: they are visualisable by humans and aren't ``black-box'', they can model non-linear relationships easily, and they are robust to outliers. +However, they have their disadvantages, including instability (small changes in the training data can significantly alter the tree structure) and in particular \textbf{overfitting}: when the algorithm fits too exactly to the training data, making it incapable of generalising to unseen data. +An extreme example of overfitting would be if the example decision tree above started to ask far too specific questions, e.g. ``Is it a dolphin'', ``Is it a human''. +While this would have excellent performance \& accuracy on the test data, it would not work at all for an animal it hadn't encountered before. +\\\\ +Random forests work by combining many decision trees into a forest, thus improving accuracy \& reducing overfitting by averaging multiple trees, reducing variance and leading to better generation. +These decision trees are each generated using random, potentially overlapping subsets of the data training data. +While the original random forest algorithm worked by taking the most popular label decided on by the set of trees \supercite{breiman}, the scikit-learn \mintinline{python}{RandomForestClassifier} works by taking a probability estimate for each label from each tree and averaging these to find the best label\supercite{scikit_ensembles}. -\subsection{Detailed Description of Algorithm 2} -Graphic illustration of how the algorithm works +\begin{figure}[H] + \centering +\begin{tikzpicture}[every node/.style={circle, draw, minimum size=0.5cm}] -\subsection{Why I Chose this Algorithm} + % Binary Trees + \node (tree1) at (0,0); + \node (tree1l) at (-0.5,-1); + \node (tree1r) at (0.5,-1); + \draw (tree1) -- (tree1l); + \draw (tree1) -- (tree1r); + + \node (tree2) at (2,0); + \node (tree2l) at (1.5,-1); + \node (tree2r) at (2.5,-1); + \draw (tree2) -- (tree2l); + \draw (tree2) -- (tree2r); -\subsection{Hyperparameter Details for Tuning} + \node (tree3) at (4,0); + \node (tree3l) at (3.5,-1); + \node (tree3r) at (4.5,-1); + \draw (tree3) -- (tree3l); + \draw (tree3) -- (tree3r); + + \node (tree4) at (6,0); + \node (tree4l) at (5.5,-1); + \node (tree4r) at (6.5,-1); + \draw (tree4) -- (tree4l); + \draw (tree4) -- (tree4r); -\subsection{Model Training \& Evaluation} -\subsubsection{Data Preprocessing \& Visualisation} -\subsubsection{Training \& Evaluation Details} -\subsubsection{Discussion of Results} + % Averaging Bracket + \draw[decorate,decoration={brace,amplitude=10pt,mirror}] (-1,-2) -- (7,-2) node[below, midway, draw=none] {Averaging}; -\section{Conclusions} -\subsection{Key Findings} -\subsection{Comparative Analysis of Algorithm Performances} -\subsection{Recommended Hyperparameter Values Based on Results} -\subsection{Concluding Remarks} + % Final Label + % \node at (4,-3) {final label}; + % \draw[->] (4,-2) -- (4,-2.5); + \draw[-latex] (3,-3) -- (3,-4); % Adjust the coordinates as needed + \node[draw=none] at (3,-4.3) {Final Label}; +\end{tikzpicture} +\caption{Random Forest Algorithm Example Diagram (with scikit-learn Averaging)} +\end{figure} -\bibliographystyle{plain} -\bibliography{references} +I chose the random forest classifier because it is resistant to overfitting, works well with complex \& non-linear data like the wildfire data in question, and offers a wide variety of hyperparameters for tuning. +\\\\ +\colorbox{yellow}{TODO:} add hyperparameter details for tuning +% https://scikit-learn.org/stable/modules/ensemble.html#forest +% \subsubsection{Why I Chose This Algorithm} +% +% \subsubsection{Hyperparameter Details for Tuning} +% \subsubsection{Hyperparameter 1: Name} +% \subsubsection{Hyperparameter 2: Name} + + +\subsection{Algorithm 2: C-Support Vector Classification} + +% \subsection{Algorithm 2: Gaussian Na\"ive Bayes} +% I chose this algorithm as I thought it could give an interesting contrast to my other chosen algorithm as Na\"ive Bayes is, generally speaking, not a very good choice for this kind of classification problem with environmental data. +% This is because Na\"ive Bayes assumes \textit{feature independence}, which is certainly not true with the wildfire data provided for this assignment: for example, the features \verb|temp| \& \verb|humidity| are naturally going to be correlated, as are the features \verb|rainfall| \& \verb|drought_code|. + +% Detailed description of algorithm 1. +% Clearly describe each of your chosen scikit-learn algorithm implementations in turn, paying special attention to discussing the two hyperparameters that you have chosen to tune for each algorithm. +% You should write a maximum of 1 page per algorithm. +% +% \subsubsection{Why I Chose This Algorithm} +% +% \subsubsection{Hyperparameter Details for Tuning} +% \subsubsection{Hyperparameter 1: Name} +% \subsubsection{Hyperparameter 2: Name} +% +% \section{Model Training \& Evaluation} +% +% \section{Conclusion} +% +% \bibliographystyle{plain} +% \bibliography{references} + +\nocite{*} +\printbibliography \end{document} diff --git a/year4/semester1/CT4101: Machine Learning/assignments/assignment1/latex/references.bib b/year4/semester1/CT4101: Machine Learning/assignments/assignment1/latex/references.bib index ef0c196e..6a900c86 100644 --- a/year4/semester1/CT4101: Machine Learning/assignments/assignment1/latex/references.bib +++ b/year4/semester1/CT4101: Machine Learning/assignments/assignment1/latex/references.bib @@ -1,10 +1,58 @@ -Copy code -@article{author2020title, - author = {Author, A.}, - title = {Title of the article}, - journal = {Journal Name}, - year = {2020}, - volume = {12}, - number = {3}, - pages = {45--67} +% @manual{scikit_classifier_comparison, +% author = "scikit-learn", +% title = "Classifier Comparison", +% url = "https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html", +% urldate = "2024-10-05" +% } + +@manual{scikit_randomforestclassifier, + author = "scikit-learn Documentation", + title = "\texttt{RandomForestClassifier} API Reference", + url = "https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html", + urldate = "2024-10-06" +} + +@manual{scikit_svc, + author = "scikit-learn Documentation", + title = "\texttt{SVC} API Reference", + url = "https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC", + urldate = "2024-10-06" +} +@manual{scikit_svm, + author = "scikit-learn Documentation", + title = "Support Vector Machines", + url = "https://scikit-learn.org/stable/modules/svm.html", + urldate = "2024-10-06" +} + + +@online{ibm_randomforest, + author = "IBM", + title = "What is random forest?", + url = "https://www.ibm.com/topics/random-forest", + urldate = "2024-10-06" +} + +@book{understandingML, + title = "Understanding Machine Learning: From Theory to Algorithms", + author = "Shalev-Shwartz, Shai and Ben-David, Shai", + year = "2014", + publisher = "Cambridge University Press", + % url = "https://www.cs.huji.ac.il/~shais/UnderstandingMachineLearning/copy.html" +} + +@online{scikit_ensembles, + author = "scikit-learn Documentation", + title = "Ensembles: Gradient boosting, random forests, bagging, voting, stacking", + url = "https://scikit-learn.org/stable/modules/ensemble.html", + urldate = "2024-10-06" +} + +@article{breiman, + author = "Breiman, Leo", + title = "Random Forests", + journal = "Machine Learning", + year = "2001", + volume = "45", + page = "5-32", }