Preheat oven to 350°F.
In medium mixing bowl, whisk together flour, baking soda, baking powder, and salt. Set aside.
In a large bowl, using an electric hand mixer or a stand mixer with paddle attachment, mix butter, brown sugar, and granulated sugar on medium speed until fluffy (about 2 minutes). Use a rubber spatula to scrape down the sides of bowl.
Add oil and eggs, then mix on medium speed for 30 seconds - 1 minute, just until incorporated.
Add vanilla, sour cream, milk, and mashed bananas. Start mixing on low speed and gradually increase to medium speed. Mix until well combined, about 1 minute. Scrape down bowl.
Add half of the dry ingredients to wet ingredients. Mix on low speed until just combined. Scrape down bowl, then add remaining dry ingredients. Mix on low just until everything is incorporated. Do not overmix batter.
Spray a 13x9 baking dish with non-stick cooking spray. Spread batter evenly into dish and bake in preheated oven for 35-40 minutes, or just until a toothpick inserted in the middle comes out clean.
Remove from oven and allow cake to cool completely. Once cake is cool, spread with frosting and sprinkle chopped walnuts or pecans on top (if desired). Store cake covered in the refrigerator.
To make frosting: In a large bowl, using an electric hand mixer or a stand mixer with paddle attachment, mix cream cheese and butter on medium speed until well combined (3-4 minutes). Scrape down bowl with rubber spatula, then add powdered sugar and vanilla extract. Mix on low speed until ingredients are incorporated. Scrape down bowl, then continue mixing on medium speed until frosting is smooth (1-2 minutes).