Take it into a shop when the light comes on and have them run a code test on it and then hopefully be able to tell you why the light is coming on and off, there are to many different things to try and let you know what it could be with out them running a check for codes
Your vehicle should be diagnosed properly by a professional repair facility; there are many DYI part stores that will pull the code, but that really is insufficient to conclude what all, if any, is causing the check engine light to come on. The part stores pull the codes for free, so that they can sell you their parts. However, the part that is associated with the code does NOT always mean that the part itself is faulty, nor will they be able to tell you what 'caused' the failure.
I hope the foregoing helped you.
M.K. Scottsdale Airport Autocare, Inc. 7333 E. Butherus Dr., #B-100 Scottsdale, AZ 85260 (480)443-0000 email: firstname.lastname@example.org