{
  "fetched_at": "2026-10-18T13:51:26Z",
  "source_url": "https://www.kaggle.com/competitions/belkin-energy-disaggregation-competition/data",
  "pages": [
    {
      "name": "Description",
      "content": "<p>Imagine an energy feedback system that displays not only your total power consumption, but also continuously shows real-time usage, broken down by electrical appliance. Such a system could provide personalized and cost-effective energy saving recommendations. For example, it could report, \"Based on your usage patterns, you could save $215 per year by switching to a more efficient heating unit, which will pay for itself in 27 months.\" The challenge in this scenario is to sense end-uses of energy to provide feedback at the fine-grained, appliance level.</p>\r\n<p>There has been substantial prior research in this area [1,5,6,7,8], however most of this work has concentrated on the use of power consumption patterns and using changes in power draw as features to identify what appliance is being used and how much energy it is consuming. We recommend the reader refer to [2,3,9] for a detailed overview of machine learning features for energy disaggregation.</p>\r\n<p>A more recent approach to estimate appliance usage is to examine the Electromagnetic Interference (EMI) that most consumer electronic appliances produce as identifying signatures [4]. This EMI is measured using a special sensor built at the Ubicomp Lab at the University of Washington as part of <a href=\"http://www.sidhantgupta.com\" target=\"_blank\">Sidhant Gupta</a>'s thesis work. The figure below shows an example of EMI captured from a home. The plot is in frequency domain and shows the signatures of various appliances.</p>\r\n<p><img src=\"https://storage.googleapis.com/kaggle-media/competitions/kaggle/2969/media/emi.png\" width=\"440\" height=\"207\" alt=\"EMI Plot\" style=\"display: block; margin-left: auto; margin-right: auto;\" /></p>\r\n<p>The presence or absence of such EMI signatures would ideally tell us when a particular appliance is in use. However, due to the large numbers of appliances in a home, the solution is not straightforward. Machine learning is required not only to make an inference about the appliance class given a particular signature, but probabilistic models are needed that take into account, for example, human appliance usage patterns (think using coffee machine and toaster in morning vs. lights in evening), weather patterns (very unlikely that AC came on during winters), and appliance electrical model. The signature of an appliance can also drift or vary over time due to operating conditions and the mode in which they are used (for instance, a washing machine has many modes). We encourage participants to review [4] to better understand the use of EMI for electrical appliance use detection and classification.</p>\r\n<h2>Videos and Slides</h2>\r\n<p>Here are a few lab quality videos that may helo you grasp the big picture:</p>\r\n<p>Video of the signal: http://youtu.be/o-SqO8y8XUA<br />Video of the technology applied to energy monitoring: http://www.youtube.com/watch?v=dcPI1Cp0VZI</p>\r\n<p>Slides from conference talk for ElectriSense can be accessed here: http://homes.cs.washington.edu/~sidhant/slides/ElectriSense_PDF.pdf</p>\r\n<h2>References</h2>\r\n<p>1. Berges, M., Goldman, E., Matthews, H.S., and Soibelman, L. Training Load Monitoring Algorithms on Highly Sub-Metered Home Electricity Consumption Data. <i>Tsinghua Science &amp; Technology 13, Supple</i>, 0 (2008), 406–411.</p>\r\n<p>2. Carrie Armel, K., Gupta, A., Shrimali, G., and Albert, A. Is disaggregation the holy grail of energy efficiency? The case of electricity. <i>Energy Policy 52</i>, (2012), 213–234.</p>\r\n<p>3. Froehlich, J., Larson, E., Gupta, S., Cohn, G., Reynolds, M., and Patel, S. Disaggregated End-Use Energy Sensing for the Smart Grid. <i>IEEE Pervasive Computing 10</i>, 1 (2011), 28–39.</p>\r\n<p>4. Gupta, S., Reynolds, M., and Patel, S. ElectriSense: Single-Point Sensing Using EMI for Electrical Event Detection and Classification in the home. <i>Ubicomp 2010</i>, (2010).</p>\r\n<p>5. Hart, G. Nonintrusive appliance load monitoring. <i>Proceedings of the IEEE</i>, (1992).</p>\r\n<p>6. Laughman, C., Lee, K., and Cox, R. Power signature analysis. <i>IEEE Power and Energy</i>, april 2003 (2003).</p>\r\n<p>7. Leeb, S.B., Shaw, S.R., and Kirtley, J.L. Transient Event Detection in Spectral Envelope Estimates. <i>IEEE Transactions on Power Delivery 10</i>, 3 (1995), 1200–1210.</p>\r\n<p>8. Norford, L.K. and Leeb, S.B. Non-intrusive electrical load monitoring in commercial buildings based on steady-state and transient load-detection algorithms. <i>Energy and Buildings 24</i>, 1 (1996), 51–64.</p>\r\n<p>9. Zeifman, M., Ph, D., and Roth, K. Non-Intrusive Appliance Load Monitoring ( NIALM ): Review and Outlook * Fraunhofer : A Leading Force in Applied R &amp; D. <i>Consumer Electronics</i>, January (2011). </p>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "\r\n\t<!-- Begin Base Rules -->\r\n    <h3>One account per participant</h3>\r\n    <p>You cannot sign up to Kaggle from multiple accounts and therefore you cannot submit from multiple accounts.</p>\r\n    <h3>No private sharing outside teams</h3>\r\n    <p>\r\n        Privately sharing code or data outside of teams is not permitted.\r\n        It's okay to share code if made available to all participants on the forums.\r\n    </p>\r\n    <h3>Team Mergers</h3>\r\n    <p>\r\n        Team mergers are allowed and can be performed by the team leader. In order to merge, the combined team must have a total submission count less than or equal to the maximum allowed as of the merge date. The maximum allowed is the number of submissions per day multiplied by the number of days the competition has been running.<br/>\r\n    </p>\r\n\r\n    <h3>Team Limits</h3>\r\n    <p>There is no maximum team size.</p>\r\n    <h3>Submission Limits</h3>\r\n    <p>You may submit a maximum of 2 entries per day.</p>\r\n    <p>You may select up to 4 final submissions for judging.</p>\r\n    <h3>Competition Timeline</h3>\r\n    <p>Start Date: <strong>7/2/2013 2:02 AM UTC</strong></p>\r\n    <p>Merger Deadline: <strong>None</strong></p>\r\n    <p>Entry Deadline: <strong>None</strong></p>\r\n    <p>End Date: <strong>10/30/2013 11:59 PM UTC</strong></p>\r\n\t<!-- End Base Rules -->\r\n<p>Participants cannot use data other than that provided. Papers may be written summarizing the results from this challenge, but must cite the source of the data and technology.</p>\r\n<p><span>The <span>Competition Sponsor</span> reserves the right to make any changes to the structure of this competition. All decisions made by the <span>Competition Sponsor</span> are final.</span></p>\r\n<p>I agree to the <a href=\"https://www.kaggle.com/wiki/BelkinEnergyDisaggregationCompetitionRules\">competition rules</a>.</p>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "<p>Entries are evaluated on the mean <a href=\"https://www.kaggle.com/wiki/HammingLoss\">Hamming Loss</a>.  The Hamming Loss measures accuracy in a multi-label classification task. The formula is given by:</p>\r\n<div>$$ \\text{HammingLoss}(x_i, y_i) = \\frac{1}{|D|} \\sum_{i=1}^{|D|} \\frac{xor(x_i, y_i)}{|L|}, $$</div>\r\n<div>where</div>\r\n<div><span>\\\\(|D|\\\\) is the number of samples (timepoints)</span></div>\r\n<div><span>\\\\(|L|\\\\) is the number of labels (appliances)</span></div>\r\n<div><span>\\\\(y_i\\\\) is the ground truth</span></div>\r\n<div><span>\\\\(x_i\\\\)  is the prediction.</span></div>\r\n<div><span><br /> </span></div>\r\n<div><span>Since the number and type of appliance may vary across housholds, we take an average over all houses:</span></div>\r\n<div>\r\n<div>$$ score = \\frac{1}{4} \\sum_{j=1}^4 \\text{HammingLoss}_j .$$</div>\r\n</div>\r\n<h2>Submission File</h2>\r\n<p>Submission files should contain five columns (Id,House,Appliance,TimeStamp,Predicted) and include a header. See SampleSubmission.csv for an example of the format.</p>\r\n<pre>Id,House,Appliance,TimeStamp,Predicted<br />1,H1,30,1334300400,0<br />2,H1,29,1334300400,0<br />3,H1,15,1334300400,0<br />...\r\n</pre>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Prizes",
      "content": "<p>The prizes will be distributed to the top three places as follows:</p>\r\n<ul>\r\n<li><strong>1st Place</strong>: $14,000</li>\r\n<li><strong>2nd Place</strong>: $7,500</li>\r\n<li><strong>3rd Place</strong>: $2,500</li>\r\n<li><strong>Visualization</strong> <strong>1st Place</strong>: $1,000 </li>\r\n</ul>\r\n<p>The visualization winner will be chosen by the hosts.  You are not required to submit a prediction to the main competition to be eligible for the visualization prize.</p>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "data-description",
      "content": "<p><strong>You do not need to download both versions of the files.</strong></p>\r\n<p><strong>H1.zip - H4.zip = official competition data in .mat format</strong><br /><strong>H1_CSV.zip - H4_CSV.zip = unofficial competition data in .csv format  </strong></p>\r\n<p>You are provided with data from 4 homes (H1-H4) consisting of both training datasets and testing datasets. The goal is to use the training datasets to learn how each appliance in each home looks and behaves from a machine-learning perspective and build a model which can be applied to the test datasets to make predictions.  Refer to SampleSubmission.csv to understand which appliances to predict at which times. </p>\r\n<h2>MAT vs. CSV?</h2>\r\n<p>The official data for this competition is provided as MATLAB .mat files. This is the language and storage structure being being used by the prototype and its researchers.</p>\r\n<p>We recognize that many people do not have access to MATLAB. As a courtesy, we have provided .csv files in addition to the .mat files. Note that the conversion results in some loss of decimal precision, contains complex numbers, and has scientific notation. The uncompressed .csv files can also be quite large. These files are provided without any guarantees regarding their correctness or usability!</p>\r\n<p>Participants without MATLAB are encouraged to use the forums to discuss issues around loading/converting the data.  Note that in addition to the free language OCTAVE, there are packages in most other languages to read and write .mat files.  <span>Python/SciPy/NumPy works well for loading the Matlab files (see scipy.io.loadmat).</span></p>\r\n<h2>File Contents</h2>\r\n<p>Data for each home is placed in its respective directory. You will find 3 kinds of files for each home:</p>\r\n<p><b>AllTaggingInfo.mat<br /></b>This file contains Nx4 elements, where N is the number of labeled training examples provided for a particular home. Since training examples can span multiple days and hence multiple files (see item 2 below), we have included this file such that <i>all</i> of the training labels are in one place. Each row is of the following form:</p>\r\n<pre>ApplianceID, ApplianceName, ON_Time, OFF_Time</pre>\r\n<p><b></b><b>Tagged_Training_*.mat<br /></b>These MATLAB files are the actual data from Belkin’s proprietary hardware. A detailed description of the contents of these files is provided later, however files beginning with “Tagged_Training_” are those that are provided as part of the training data. The reason these are training sets are because they include information about which appliance was turned ON or OFF and at what timestamps. This information is embedded in the .mat file and named “TaggingInfo”. The TaggingInfo array is also Nx4 with same format as the AllTaggingInfo.mat. Essentially, if all TaggingInfo arrays for each home were concatenated, it would yield the global AllTaggingInfo.mat file.</p>\r\n<p><b></b><b>Testing_*.mat<br /></b>These files are similar to the Tagged_Training_*.mat files, <i>except </i>they do not include a TaggingInfo structure. Instead, participants are expected to figure out <i>when</i> and <i>which</i> appliance is being operated.</p>\r\n<p><i>Note: All timestamps in the entire dataset are in the UNIX time stamp format.</i></p>\r\n<h2>Contents of MAT Files</h2>\r\n<p>If you load any of the training or testing mat files, it will result in a structure called Buffer that has several member elements:</p>\r\n<div align=\"center\">\r\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td style=\"width: 200px;\">\r\n<p><b>Buffer.HF</b></p>\r\n</td>\r\n<td style=\"width: 300px;\">\r\n<p>4096xN spectrogram of high frequency noise captured in the home using Belkin hardware. Refer to [4] for background. N = number of FFT vectors, with each being computed every ~1.0667 seconds.</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td style=\"width: 200px;\">\r\n<p><b>Buffer.TimeTicksHF</b></p>\r\n</td>\r\n<td style=\"width: 300px;\">\r\n<p>NX1 vector of UNIX timestamps corresponding to the N FFTs of Buffer.HF</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td style=\"width: 200px;\">\r\n<p><b>Buffer.LF1V</b></p>\r\n</td>\r\n<td style=\"width: 300px;\">\r\n<p>NX6 array of fundamental and first 5 harmonics of 60Hz voltage measurement of Phase-1.</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td style=\"width: 200px;\">\r\n<p><b>Buffer.LF1I</b></p>\r\n</td>\r\n<td style=\"width: 300px;\">\r\n<p>NX6 array of fundamental and first 5 harmonics of 60Hz current measurement of Phase-1.</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td style=\"width: 200px;\">\r\n<p><b>Buffer.TimeTicks1</b></p>\r\n</td>\r\n<td style=\"width: 300px;\">\r\n<p>NX1 vector of UNIX timestamps corresponding to Phase-1 current and voltage measurements.</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td style=\"width: 200px;\">\r\n<p><b>Buffer.LF2V</b></p>\r\n</td>\r\n<td style=\"width: 300px;\">\r\n<p>NX6 array of fundamental and first 5 harmonics of 60Hz voltage measurement of Phase-2.</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td style=\"width: 200px;\">\r\n<p><b>Buffer.LF2I</b></p>\r\n</td>\r\n<td style=\"width: 300px;\">\r\n<p>NX6 array of fundamental and first 5 harmonics of 60Hz current measurement of Phase-2.</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td style=\"width: 200px;\">\r\n<p><b>Buffer.Timeticks2</b></p>\r\n</td>\r\n<td style=\"width: 300px;\">\r\n<p>NX1 vector of UNIX timestamps corresponding to Phase-2 current and voltage measurements.</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td style=\"width: 200px;\">\r\n<p><b>*Buffer.TaggingInfo</b></p>\r\n</td>\r\n<td style=\"width: 300px;\">\r\n<p>NX4 array of labels for training purposes that belong to the loaded file. Same format as AllTaggingInfo.mat file.</p>\r\n</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n</div>\r\n<p>                  *Only present in training data files.</p>\r\n<h2>Loading and Analyzing Mat files</h2>\r\n<p>For bootstrapping purposes, we have provided sample matlab scripts that can be used to both load and analyze the data files. These scripts can be found in the “LoaderScripts” folder. The main file to load is “<b>LoadData.m</b>”. By default, we load data for H3 and select the first training file. The script is commented and is expected to be self-explanatory such that it can be adapted as needed. It is provided only as an example to understand how the Buffer can be processed to yield certain features like real, reactive and apparent power in addition to the power factors for each phase. The following figure shows the resulting figure when the script is run. A particular section of the plot is zoomed into for clarity.</p>\r\n<p><img src=\"https://storage.googleapis.com/kaggle-media/competitions/kaggle/2969/media/buffer.png\" width=\"660\" height=\"410\" alt=\"Buffer plot\" /></p>\r\n<p>The default script assumes that the LoadData.m is run with the current directory set to \\LoaderScripts. The DATA_DIR_PATH variable in the script can be changed to point to the correct absolute path as necessary.</p>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Timeline",
      "content": "<ul>\r\n<li><strong>Monday, July 1, 2013</strong> - Competition begins</li>\r\n<li><strong>Wednesday, October 30, 2013</strong> - Final submission deadline</li>\r\n</ul>\r\n<div>All deadlines are at 11:59 PM UTC on the corresponding day, unless otherwise noted.</div>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Winners",
      "content": "<p><strong>First Place:</strong></p>\r\n<ul>\r\n<li>Wiktor Pronobis - Berlin, Germany</li>\r\n</ul>\r\n<p><strong>Second Place:</strong></p>\r\n<ul>\r\n<li>Luis Tandalla - Quito, Ecuador</li>\r\n</ul>\r\n<p><strong>Third Place:</strong></p>\r\n<ul>\r\n<li>Noam Tene - Afula, Israel</li>\r\n<li>Yair T. - Afula, Israel</li>\r\n<li>Yuval L. - Afula, Israel</li>\r\n</ul>\r\n<p><strong>Visualization First Place:</strong></p>\r\n<ul>\r\n<li>Pablo Romeu - Castellón, Spain ... who acknowledges the assistance of his colleague Dr. Francisco Zamora - Valencia, Spain, <em>University CEU Cardenal Herrera</em></li>\r\n</ul>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}