A major challenge in pervasive computing is to learn activity patterns, such as bathing and cleaning from sensor data. Typical sensor deployments generate sparse datasets with thousands of sensor readings and a few instances of activities. The imbalance between the number of features (i.e. sensors) and the classification targets (i.e. activities) complicates the learning process. In this paper, we propose a novel framework for discovering relationships between sensor signals and observed human activities from sparse datasets. The framework builds on the use of Bayesian networks for modeling activities by representing statistical dependencies between sensors. We optimize learning Bayesian networks of activities in 3 ways. Firstly, we perform multicollinearity analysis to focus on orthogonal sensor data with minimal redundancy. Secondly, we propose Efron's bootstrapping to generate large training sets that capture important features of an activity. Finally, we find the best Bayesian network that explains our data using a heuristic search that is insensitive to the exact ordering between variables. We evaluate our proposed approach using a publicly available data set gathered from MIT's PlaceLab. The inferred networks correctly identify activities for 85% of the time.