  The Internet of Things (IoT) is expected to require more effective and
efficient wireless communications than ever before. For this reason, techniques
such as spectrum sharing, dynamic spectrum access, extraction of signal
intelligence and optimized routing will soon become essential components of the
IoT wireless communication paradigm. Given that the majority of the IoT will be
composed of tiny, mobile, and energy-constrained devices, traditional
techniques based on a priori network optimization may not be suitable, since
(i) an accurate model of the environment may not be readily available in
practical scenarios; (ii) the computational requirements of traditional
optimization techniques may prove unbearable for IoT devices. To address the
above challenges, much research has been devoted to exploring the use of
machine learning to address problems in the IoT wireless communications domain.
  This work provides a comprehensive survey of the state of the art in the
application of machine learning techniques to address key problems in IoT
wireless communications with an emphasis on its ad hoc networking aspect.
First, we present extensive background notions of machine learning techniques.
Then, by adopting a bottom-up approach, we examine existing work on machine
learning for the IoT at the physical, data-link and network layer of the
protocol stack. Thereafter, we discuss directions taken by the community
towards hardware implementation to ensure the feasibility of these techniques.
Additionally, before concluding, we also provide a brief discussion of the
application of machine learning in IoT beyond wireless communication. Finally,
each of these discussions is accompanied by a detailed analysis of the related
open problems and challenges.
