One thing is that you should try to be brutally honest to yourself. Being too cocky is usually an insecurity and overcompensation.
If you can manage to be honest to yourself, you will be able to see who you really are. From there it is important that you accept all these things. With all I mean the good ones and the bad ones. Once you have done that, you can start to change if you are not satisfied with something. I'm putting all these things in just a few sentences, but they would probably require you months to first figure who you are now before you can actually start changing. Of course, you can do it simultaneously. Figure out one thing and start working on it if you don't like it. Somewhere during that you should figure out the next thing. The key is being brutally honest to yourself.
Now, as I see things people either go from one extreme to another, they stay where they are or they slowly move towards some sort of balance either through slowly moving towards it or by missing it by overdoing it less and less with time.
The thing is that various, kind of contradicting character traits don't have to be mutually exclusive. I am a warm person, but I can be colder than a blizzard as well. You can be cocky and arrogant while at the same time being introverted and insecure. As a matter of fact, there's a certain type of arrogance that comes from insecurity and a certain type that comes from self-confidence. Basically you can be insecure and be arrogant at the same time.
All in all, the very first thing you have to do in order to change is to decide to change. People constantly keep changing. But by "deciding that you want to change", you are actually taking charge of how you change. I see you have that part done. All I can tell you is that, if you stick with it, you will see results quite soon and it will be worth it. Don't beat yourself up if it's not going as fast as you expected. All good things take time, really a lot of time.