I just wanted to post a solution which may seem obvious if you already know this but after getting a new Nest a couple of months ago it was weeks before we had sorted an apparent issue with heating coming on at unscheduled times. I searched this forum (and others) and had 2 or 3 calls to Nest before they eventually sent an engineer out. The engineer (from Boxed) had been told to swap our control unit, but instead he simply explained what we'd been doing wrong, which no-one had picked up on before. I had tried all the other recommended ideas - e.g. switching off learning mode, deleting and reinstalling the schedule and rebooting the thermostat).
My error: I had set the schedule so that during the times I wanted the heat on (to 21C) I added an orange blob to the hours in question. I then left other times blank (as you would one of those old-fashioned pin timers).
The solution: What I needed to do was set one blob at 21C at the start of a heating period, and then a second low temperature blob at the end of each period (in my case 15C). The engineer explained that the set temperature was the last temperature input, either a blob on the schedule or a manual input at the thermostat (which would be subsequently over-ridden by the next blob). So at the end of a period requiring heating, it needed a 15C blob to set the temperature back down again. Simple when you know.
I hope this is helpful. I found nothing explaining this anywhere, and it cost Nest to send out an engineer, as their on-the-phone help diagnosed a faulty system (in error) so I am surprised there is no "instruction manual" explaining this.
Thanks for posting this solution to your issue. This will help the community a lot.
It looks like we can consider this one complete, so I will lock the thread shortly unless I can help out with anything else.