\begin{tikzpicture} % draw first level \filldraw[thick, fill=cyan!20, draw=black] (0cm, 0cm) -- (7cm, 0cm) node[midway, anchor=south, align=center, text width=3cm, above=5pt] {training set} -- (7cm, 1cm) -- (0cm, 1cm) -- cycle; \filldraw[thick, fill=orange!20, draw=black] (7.1cm, 0cm) -- (10cm, 0cm) node[midway, anchor=south, align=center, text width=2cm, above=8pt] {test set} -- (10cm, 1cm) -- (7.1cm, 1cm) -- cycle; \draw[-latex] (3.5cm, 0cm) -- (1.75cm, -0.8cm); \draw[-latex] (3.5cm, 0cm) -- (5.25cm, -0.8cm); % draw second level \filldraw[thick, fill=cyan!20, draw=black] (0cm, -2cm) -- (3.45cm, -2cm) node[midway, anchor=south, align=center, text width=3cm, above=5pt] {training set 1} -- (3.45cm, -1cm) -- (0cm, -1cm) -- cycle; \filldraw[thick, fill=cyan!20, draw=black] (3.55cm, -2cm) -- (7cm, -2cm) node[midway, anchor=south, align=center, text width=3cm, above=5pt] {training set 2} -- (7cm, -1cm) -- (3.55cm, -1cm) -- cycle; \filldraw[thick, fill=orange!20, draw=black] (7.1cm, -2cm) -- (10cm, -2cm) node[midway, anchor=south, align=center, text width=2cm, above=8pt] {test set} -- (10cm, -1cm) -- (7.1cm, -1cm) -- cycle; \draw[-latex] (1.75cm, -2cm) -- (1.75cm, -2.65cm) node[anchor=south west] {training}; % 1st level trainers \filldraw[thick, fill=green!20, draw=black] (1.725cm, -3.5cm) ellipse [x radius=1.5cm,y radius=0.75cm] node[anchor=center, align=center, text width=3cm] {1st level learners}; \draw[-latex] (5.25cm, -2cm) -- (5.25cm, -4.85cm) node[anchor=south west] {predictions}; \draw[-latex] (8.5cm, -2cm) -- (8.5cm, -4.85cm) node[anchor=south west] {predictions}; \filldraw (3.25cm, -3.5cm) -- (8.5cm, -3.5cm) circle (2pt); \draw (1.75cm, -4.25cm) -- (1.75cm, -4.45cm) -- (5.25cm, -4.45cm); \filldraw (5.25cm, -4.45cm) circle (2pt); % 1st level labels \filldraw[thick, fill=red!20, draw=black] (3.55cm, -6cm) -- (7cm, -6cm) node[midway, anchor=south, align=center, scale=0.8] {\begin{tabular}{c} test set 2 \\ (1st level labels) \\ \end{tabular}} -- (7cm, -5cm) -- (3.55cm, -5cm) -- cycle; \filldraw[thick, fill=blue!20, draw=black] (7.1cm, -6cm) -- (10cm, -6cm) node[midway, anchor=south, align=center, scale=0.8] {\begin{tabular}{c} test set 1 \\ (1st level labels) \\ \end{tabular}} -- (10cm, -5cm) -- (7.1cm, -5cm) -- cycle; \draw[-latex] (5.25cm, -6cm) -- (5.25cm, -6.65cm); \draw[-latex] (8.5cm, -6cm) -- (8.5cm, -8.85cm) node[anchor=south west] {predictions}; \filldraw (6.75cm, -7.5cm) -- (8.5cm, -7.5cm) circle (2pt); % 2nd level trainers \filldraw[thick, fill=black!20, draw=black] (5.25cm, -7.5cm) ellipse [x radius=1.5cm,y radius=0.75cm] node[anchor=center, align=center, text width=3cm] {meta learner}; % final predictions \filldraw[thick, fill=yellow!20, draw=black] (7.1cm, -10cm) -- (10cm, -10cm) node[midway, anchor=south, align=center, scale=0.8] {\begin{tabular}{c} test set 1 \\ (1st level labels) \\ \end{tabular}} -- (10cm, -9cm) -- (7.1cm, -9cm) -- cycle; \end{tikzpicture} % vim: ft=tex