code: def gather_approximate_features(feature_set):
      """
      Find features which can be approximated. Returned as a trie where the values
      are sets of feature names.
  
      Args:
          feature_set (FeatureSet): Features to search the dependencies of for
              features to approximate.
  
      Returns:
          Trie[RelationshipPath, set[str]]
      """
      approximate_feature_trie = Trie(
          default=set, path_constructor=RelationshipPath
      )
  
      for feature in feature_set.target_features:
          if feature_set.uses_full_dataframe(
              feature, check_dependents=True
          ):
              continue
  
          if isinstance(feature, DirectFeature):
              path = feature.relationship_path
              base_feature = feature.base_features[0]
  
              while isinstance(base_feature, DirectFeature):
                  path = path + base_feature.relationship_path
                  base_feature = base_feature.base_features[0]
  
              if isinstance(base_feature, AggregationFeature):
                  node_feature_set = approximate_feature_trie.get_node(
                      path
                  ).value
                  node_feature_set.add(base_feature.unique_name())
  
      return approximate_feature_trie
  
imports: import logging
  import os
  import typing
  import warnings
  from datetime import datetime
  from functools import wraps
  import numpy
  import pandas
  import psutil
  from woodwork.logical_types import Datetime, Double
  from featuretools.entityset.relationship import RelationshipPath
  from featuretools.feature_base import AggregationFeature, DirectFeature
  from featuretools.utils import Trie
  from featuretools.utils.gen_utils import Library, import_or_none, is_instance
  from featuretools.utils.wrangle import _check_time_type, _check_timedelta
label_desc: Use image node_id 4 for calling a global function with example usage: gather_approximate_features(feature_set) and returns: approximate_feature_trie