Commonly caused by incorrect parameters supplied to the engine ECU by the MAF or water temperature sensor. The ECU then over -or under- supplies the injectors.
About once a year it is beneficial to use a bottle of injector cleaner to clean out the fuel system.
A nice trick is to unplug the MAF. The ECU then changes into a low-power failsafe state. If the cause is one of the sensors, the problem should then be gone. However be aware that if the problem disappears when you disconnect the MAF, the cause can still be any sensor.