Another option is to draw arcs around the desired nodes with the help of the calc
library. To achieve this, I moved your nodes slightly, to make those of each group lie on the same circumference and on known angles.
This is what I get:
\documentclass {article}
\usepackage {tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[scale=3.5]
\tikzstyle{every node}=[circle, fill=black, inner sep=0pt, minimum width=4pt]
% dimensions
\def\tr{1.1} % top radius
\def\br{0.7} % bottom radius
\def\gr{0.2} % group radius
% nodes
\node (n_1) at (-1.1,0) [label=left: {\tiny $x^{(3)}_1$}] {};
\node (n_2) at (1.1,0) [label=right: {\tiny $x^{(3)}_3$}] {};
\node (n_3) at (135:\br)[label=above: {\tiny $x^{(2)}_1$}] {};
\node (n_4) at (105:\br)[label=above left: {\tiny $x^{(2)}_3$}] {};
\node (n_5) at (75:\br)[label=above right:{\tiny $x^{(2)}_5$}] {};
\node (n_6) at (45:\br)[label=above right:{\tiny $x^{(2)}_7$}] {};
\node (n_7) at (0,1.4)[label=right: {\tiny $x^{(4)}_1$}] {};
\begin{scope}[shift={(n_7)}]
\node (n_8) at ( 97:\tr) [label=above: {\tiny $x^{(7)}_1$}] {};
\node (n_9) at (111:\tr) [label=above: {\tiny $x^{(5)}_1$}] {};
\node (n_{10}) at (125:\tr) [label=above: {\tiny $x^{(3)}_1$}] {};
\node (n_{11}) at (139:\tr) [label=above: {\tiny $x^{(1)}_1$}] {};
\node (n_{12}) at ( 83:\tr) [label=above: {\tiny $x^{(9)}_1$}] {};
\node (n_{13}) at ( 69:\tr) [label=above: {\tiny $x^{(11)}_1$}]{};
\node (n_{14}) at ( 55:\tr) [label=above: {\tiny $x^{(13)}_1$}]{};
\node (n_{15}) at ( 41:\tr) [label=above: {\tiny $x^{(15)}_1$}]{};
\end{scope}
% edges
\foreach \from/\to in {n_1/n_2,n_1/n_3,n_1/n_4,n_1/n_5,n_1/n_6,n_1/n_7,n_2/n_3,%
n_2/n_4,n_2/n_5,n_2/n_6,n_2/n_7,n_3/n_7,n_4/n_7,n_5/n_7,%
n_6/n_7,n_7/n_8,n_7/n_9,n_7/n_{10},n_7/n_{11},n_7/n_{12},%
n_7/n_{13},n_7/n_{14},n_7/n_{15}}
\draw[thick] (\from) -- (\to);
% groups
\draw[red,dashed,thick] ($(n_{11})+(139:\gr)$) arc (139:319:\gr) arc
(139:41:\tr-\gr) arc (221:401:\gr) arc (41:139:\tr+\gr);
\draw[red,dashed,thick] (n_7) circle (\gr);
\draw[red,dashed,thick] ($(n_3)+(135:\gr)$) arc (135:315:\gr) arc (135:45:\br-\gr)
arc (225:405:\gr) arc (45:135:\br+\gr);
\draw[red,dashed,thick] ($(n_1)+(0,\gr)$) arc (90:270:\gr) -- ($(n_2)+(0,-\gr)$)
arc (-90:90:\gr) -- cycle;
% group labels
\node[red,fill=none] at ($(n_{15})+(0.3,0)$) [right] {$V_1$};
\node[red,fill=none] at ($(n_6)+(0.3,0)$) [right] {$V_2$};
\node[red,fill=none] at ($(n_2)+(0.3,0)$) [right] {$V_3$};
\node[red,fill=none] at ($(n_7)+(0.3,0)$) [right] {$V_4$};
\end{tikzpicture}
\end{document}
Edit 1: I changed some distances (the radii, parametrized now) and the scale to avoid some labels overlapping the edges.
Edit 2: Another approach for placing the nodes, labels and lines. Also a little bit more customizable.
\documentclass[border=2mm]{standalone}
\usepackage {tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[scale=1.5]
% dimensions
\def\tr{3} % top group radius
\def\br{2} % bottom group radius
\def\gr{0.6} % grouping radius
\def\ch{4.5} % v4 height
\def\sd{3} % v3 nodes semidistance
\def\nd{0.05} % nodes radius
\def\ld{0.3} % label distance
% styles
\tikzset%
{%
myline/.style={shorten <= 2*\nd cm, shorten >= 2*\nd cm},
mygroup/.style={red,dashed,thick,fill=red,fill opacity=0.025}
}
% coordinates, labels and lines
\coordinate (v3x1) at (-\sd,0);
\coordinate (v3x3) at (\sd,0);
\coordinate (v4x1) at (0,\ch);
\fill (v3x1) circle (\nd);
\fill (v3x3) circle (\nd);
\fill (v4x1) circle (\nd);
\node at ($(v3x1)-(\ld,0)$) {$x_1^{(3)}$};
\node at ($(v3x3)+(\ld,0)$) {$x_3^{(3)}$};
\node at ($(v4x1)+(\ld,0)$) {$x_1^{(4)}$};
\draw[myline] (v3x1) -- (v3x3);
\foreach\i in {1,3,...,15}
{% v1
\pgfmathsetmacro\j{146-7*\i} % angle
\coordinate (v1x\i) at ($(v4x1)+(\j:\tr)$);
\node at ($(v4x1)+(\j:\tr+\ld)$) {$x_1^{(\i)}$};
\fill (v1x\i) circle (\nd);
\draw[myline] (v1x\i) -- (v4x1);
}
\foreach\i in {1,3,5,7}
{% v2
\pgfmathsetmacro\j{150-15*\i} % angle
\coordinate (v2x\i) at (\j:\br);
\ifnum\i < 5
\node at ($(v2x\i)-(\ld,0)$) {$x_\i^{(2)}$};
\else
\node at ($(v2x\i)+(\ld,0)$) {$x_\i^{(2)}$};
\fi
\fill (v2x\i) circle (\nd);
\draw[myline] (v2x\i) -- (v4x1);
\foreach\l in {1,3}
{%
\draw[myline] (v2x\i) -- (v3x\l);
}
}
% groups
\draw[mygroup] ($(v1x1)+(139:\gr)$) arc (139:319:\gr) arc (139:41:\tr-\gr)
arc (221:401:\gr) arc (41:139:\tr+\gr);
\draw[mygroup] ($(v2x1)+(135:\gr)$) arc (135:315:\gr) arc (135:45:\br-\gr)
arc (225:405:\gr) arc (45:135:\br+\gr);
\draw[mygroup] ($(v3x1)+(0,\gr)$) arc (90:270:\gr) -- ($(v3x3)+(0,-\gr)$)
arc (-90:90:\gr) -- cycle;
\draw[mygroup] (v4x1) circle (\gr);
% groups labels
\node[red] at ($(v1x15)+(-30:\gr)$) [right] {$V_1$};
\node[red] at ($(v2x7) +(45:\gr)$) [right] {$V_2$};
\node[red] at ($(v3x3) +(0,\gr)$) [above] {$V_3$};
\node[red] at ($(v4x1) -(\gr,0)$) [left] {$V_4$};
\end{tikzpicture}
\end{document}
fit
library to vreate a node around them. Same with the(2)
level.