Preheat the oven to 450 degrees F.
Toss the Brussels sprouts with 2 tablespoons of the oil and sprinkle with salt and pepper on a rimmed baking sheet. Spread the Brussels sprouts out on the baking sheet and roast, stirring once or twice during the cooking process, until tender and charred in spots, 35 to 40 minutes.
Meanwhile, add the bacon to a medium saute pan and render over medium heat, 1 to 2 minutes. Add the remaining 1 tablespoon oil, the walnuts, garlic, shallots and a pinch of salt. Cook until the bacon is crispy, being careful not to burn the walnuts. Stir in the vinegar, honey and mustard with a fork. Whisk into the bacon fat until emulsified. Taste and season with salt and pepper.
Transfer the Brussels sprouts to a large mixing bowl, add the bacon mixture and toss well. Serve.
The Brussels sprouts and bacon mixture can be made up to 4 hours ahead and kept at room temperature. Rewarm the Brussels sprouts before serving.