<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/s120810196</article-id>
<article-id pub-id-type="publisher-id">sensors-12-10196</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>Behavior-Based Cleaning for Unreliable RFID Data Sets</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Fan</surname><given-names>Hua</given-names></name><xref ref-type="aff" rid="af1-sensors-12-10196"><sup>1</sup></xref><xref ref-type="corresp" rid="c1-sensors-12-10196"><sup>*</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Wu</surname><given-names>Quanyuan</given-names></name><xref ref-type="aff" rid="af1-sensors-12-10196"><sup>1</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Lin</surname><given-names>Yisong</given-names></name><xref ref-type="aff" rid="af2-sensors-12-10196"><sup>2</sup></xref></contrib></contrib-group>
<aff id="af1-sensors-12-10196">
<label>1</label> School of Computer Science, National University of Defense Technology, Changsha 410073, China; E-Mail: <email>quanyuan.wu@gmail.com</email></aff>
<aff id="af2-sensors-12-10196">
<label>2</label> Logistics Science Research Institute of GLD, Beijing 100071, China; E-Mail: <email>linyisong@live.cn</email></aff>
<author-notes>
<corresp id="c1-sensors-12-10196">
<label>*</label>Author to whom correspondence should be addressed; E-Mail: <email>huafan@nudt.edu.cn</email>; Tel.: +86-139-7480-2264; Fax: +86-731-8457-4607.</corresp></author-notes>
<pub-date pub-type="collection">
<year>2012</year></pub-date>
<pub-date pub-type="epub">
<day>30</day>
<month>07</month>
<year>2012</year></pub-date>
<volume>12</volume>
<issue>8</issue>
<fpage>10196</fpage>
<lpage>10207</lpage>
<history>
<date date-type="received">
<day>11</day>
<month>06</month>
<year>2012</year></date>
<date date-type="rev-recd">
<day>11</day>
<month>07</month>
<year>2012</year></date>
<date date-type="accepted">
<day>21</day>
<month>07</month>
<year>2012</year></date></history>
<permissions>
<copyright-statement>© 2012 by the authors; licensee MDPI, Basel, Switzerland.</copyright-statement>
<copyright-year>2012</copyright-year>
<license>
<p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>Radio Frequency IDentification (RFID) technology promises to revolutionize the way we track items and assets, but in RFID systems, missreading is a common phenomenon and it poses an enormous challenge to RFID data management, so accurate data cleaning becomes an essential task for the successful deployment of systems. In this paper, we present the design and development of a RFID data cleaning system, the first declarative, behavior-based unreliable RFID data smoothing system. We take advantage of kinematic characteristics of tags to assist in RFID data cleaning. In order to establish the conversion relationship between RFID data and kinematic parameters of the tags, we propose a movement behavior detection model. Moreover, a Reverse Order Filling Mechanism is proposed to ensure a more complete access to get the movement behavior characteristics of tag. Finally, we validate our solution with a common RFID application and demonstrate the advantages of our approach through extensive simulations.</p></abstract>
<kwd-group>
<kwd>RFID technology</kwd>
<kwd>miss reading</kwd>
<kwd>data cleaning</kwd>
<kwd>movement behavior</kwd>
<kwd>kinematic characteristics</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>Radio Frequency Identification (RFID) is an electronic tagging technology that allows objects, places, or persons to be automatically identified at a distance without a direct line-of-sight, using an electromagnetic challenge/response exchange [<xref ref-type="bibr" rid="b1-sensors-12-10196">1</xref>,<xref ref-type="bibr" rid="b2-sensors-12-10196">2</xref>]. RFID offers a possible alternative to barcodes, and has emerged as a key technology for a wide-range of applications, including supply chain, retail stores, and asset management [<xref ref-type="bibr" rid="b3-sensors-12-10196">3</xref>]. However, the widespread adoption of RFID technology is limited for the unreliability of the data streams produced by RFID readers [<xref ref-type="bibr" rid="b4-sensors-12-10196">4</xref>,<xref ref-type="bibr" rid="b5-sensors-12-10196">5</xref>]. RFID data cleaning is therefore widely considered as a principal challenge and has been an important research topic in the last few years [<xref ref-type="bibr" rid="b6-sensors-12-10196">6</xref>–<xref ref-type="bibr" rid="b8-sensors-12-10196">8</xref>].</p>
<p>Despite the improvement of the accuracy of RFID readers, there are still erroneous readings such as missed readings and ghost readings, due to interference, inappropriate placement of tags, temporary or permanent malfunction of some components.</p>
<p>The goal of RFID data cleaning is to eliminate the erroneous readings, especially to reduce or eliminate dropped readings. In this paper, we propose an innovative approach of cleaning RFID raw data Behavior-Based Smoothing for unreliable RFID data (BBS). Unlike conventional techniques, BBS relays primarily on the movement behavior of tags to fill the RFID data. Our biggest obstacle is how to obtain movement behavior characteristics of tags. To address this problem, a movement behavior detection model is proposed so that we can get the results by analyzing existing uncertain data of the corresponding tags. The contributions of this study are as follows:
<list list-type="bullet">
<list-item>
<p>A movement behavior detection model. By counting the frequency of tags read in each cycle, we can get the read rate of tags and analyze kinematic characteristics of the tags according to changes of the read rate sequences, and ultimately to assist in RFID data cleaning.</p></list-item>
<list-item>
<p>Reverse Order Filling Mechanism (ROFM). Based on the detection model, we design and implement a reversible RFID data filter. When we detect the data has not been filled completely, ROFM will be started to fill the data again in reverse order. The mechanism can ensure a more complete access to get the movement behavior characteristics of tags, and thus significantly improve the accuracy of data cleaning without scanning all the data twice.</p></list-item>
<list-item>
<p>Improve the positioning accuracy of the RFID reader. Traditional RFID positioning system can only provide the Boolean result such as the condition whether the tag is in the read range of the reader at the time. But BBS can also get the distance between the tag and the reader, and even the velocity of tags.</p></list-item>
<list-item>
<p>Evaluate the effect of BBS. We design several groups of contrast experiments on the data sets include measured data and simulation data. The results show that under all conditions with different missing rates, obviously, the precision of BBS is better than that of sliding-window cleaning.</p></list-item></list></p>
<p>The rest of this paper is organized as follows: we discuss the related work in Section 2. Section 3 defines the Object Movement Detection model and introduces our RFID data cleansing mechanism and arithmetic. An empirical evaluation of our solution is reported in Section 4. Finally, Section 5 concludes the paper.</p></sec>
<sec>
<label>2.</label>
<title>Related Work</title>
<p>RFID technology has posed many challenges to database management systems, such as the requirements of supporting big volume data [<xref ref-type="bibr" rid="b9-sensors-12-10196">9</xref>–<xref ref-type="bibr" rid="b11-sensors-12-10196">11</xref>], handing new types of queries [<xref ref-type="bibr" rid="b11-sensors-12-10196">11</xref>], event processing and data cleaning [<xref ref-type="bibr" rid="b5-sensors-12-10196">5</xref>,<xref ref-type="bibr" rid="b12-sensors-12-10196">12</xref>–<xref ref-type="bibr" rid="b16-sensors-12-10196">16</xref>].</p>
<p>Many systems have been developed to manage uncertainty data. RFID data management, is one of the most important applications that drives the recent surge of interest in managing incomplete and uncertain data, which has been studied extensively. Valentine <italic>et al.</italic> [<xref ref-type="bibr" rid="b8-sensors-12-10196">8</xref>] presented an adaptive sliding-window based approach WSTD for reducing false negative reads in RFID data streams. Rao <italic>et al.</italic> [<xref ref-type="bibr" rid="b13-sensors-12-10196">13</xref>] presented a deferred approach for detecting and correcting RFID data anomalies by utilizing declarative sequenced-based rules. Chen <italic>et al.</italic> [<xref ref-type="bibr" rid="b14-sensors-12-10196">14</xref>] proposed a Bayesian inference based approach, which takes full advantage of data redundancy, for cleaning RFID raw data. Gonzalez <italic>et al.</italic> [<xref ref-type="bibr" rid="b15-sensors-12-10196">15</xref>] proposed a cleaning framework that takes an RFID data set and a collection of cleaning methods, with associated costs, and induces a cleaning plan that optimizes the overall accuracy adjusted cleaning costs by determining the conditions under which inexpensive methods are appropriates, and those when more expensive methods are absolutely necessary.</p>
<p>The work in [<xref ref-type="bibr" rid="b5-sensors-12-10196">5</xref>,<xref ref-type="bibr" rid="b12-sensors-12-10196">12</xref>] is the most relevant research to this paper. Jeffery <italic>et al.</italic> [<xref ref-type="bibr" rid="b5-sensors-12-10196">5</xref>,<xref ref-type="bibr" rid="b12-sensors-12-10196">12</xref>] proposed an adaptive smoothing filter SMURF for RFID data cleaning. SMURF focuses on a sliding-window aggregate that interpolates for lost readings. SMURF models the unreliability of RFID readings by taking RFID streams as a statistical sample of physical tags, and exploits techniques in sampling theory to drive its cleaning processes. But it is mainly applied to the circumstances that the movement of tags is infrequent, and is not effective in the case that tags move frequently.</p></sec>
<sec sec-type="methods">
<label>3.</label>
<title>Unreliable RFID Data Cleaning</title>
<sec>
<label>3.1.</label>
<title>A Movement Behavior Detection Model</title>
<p>The key for a movement behavior-based smoothing filter lies in how to establish the conversion relationship between read rate sequences and kinematic parameters of tags to assist in RFID data cleaning. To do so, we proposed a movement behavior detection model.</p>
<p>The process of tag passing through the reader's read range follows the laws of kinematics. The change of kinematic parameters such as displacement and velocity which possess an important feature is continuous, not transitional, so if the location (which mainly refers to the distance between tag and reader) and the relative velocity of tag at the time can be obtained through the original data, we can speculate the parameters of the tag at the missed reading time by these parameters and their trends, and further assist in data cleaning and improve its accuracy. BBS uses this approach, for example, using existing tag data to analyze and get the location <italic>p</italic><sub>1</sub> and the velocity <italic>v</italic><sub>1</sub> of the tag at the time <italic>t</italic><sub>1</sub>, which can help approximately inferring to the relative location of the tag at the time <italic>t</italic><sub>1</sub> + <italic>T</italic> (<italic>T</italic> refers to a short period of time). Finally, by mapping the location information back to the RFID data, we can fill the missed RFID data. Therefore, through these kinematic parameters BBS can obtain whether the tag is in the detection range at the time, and further give its specific location.</p>
<p>Adopting the statistical methods similar to SMURF, each epoch is viewed as an independent Bernoulli trial with success probability <italic>p<sub>i</sub></italic> [<xref ref-type="bibr" rid="b12-sensors-12-10196">12</xref>]. An epoch may be specified as a number of interrogation cycles or a unit of time. A typical epoch range is 0.2–0.25 seconds [<xref ref-type="bibr" rid="b5-sensors-12-10196">5</xref>]. For each epoch, the reader keeps track of all the tags that have been identified, and additional information such as the number of interrogation responses for each tag and the last time the tag was read. Assuming, there are <italic>n</italic> interrogation cycles in an epoch, the number that <italic>tag<sub>i</sub></italic> is monitored is <italic>m<sub>i</sub></italic>. We can get the read rate of <italic>tag<sub>i</sub></italic> at the moment by <italic>p<sub>i</sub></italic> = <italic>m<sub>i</sub>/n</italic>. In the process of passing through the reader's read range, tags will be continuously scanned. Also in the whole process, the read rate of tag is not constant but constantly changing with the distance between the tag and reader. Besides, some researchers have proved by experiments that in the reader's detection region there is a linear relationship between read rate <italic>p</italic> and distance <italic>s</italic> [<xref ref-type="bibr" rid="b12-sensors-12-10196">12</xref>]. For specific readers, the detection range <italic>S</italic> is a constant. To confirm this conclusion, we have carried out similar experiments and the conclusion is shown in <xref ref-type="fig" rid="f1-sensors-12-10196">Figure 1</xref>. The quiet condition means an ideal working environment of RFID devices with only a few interferences, while the noisy condition means a work environment with more interferences.</p>
<p>By further abstraction of the conclusions above we get the relationship between read rate <italic>p</italic> and distance <italic>s</italic> in <xref ref-type="fig" rid="f2-sensors-12-10196">Figure 2</xref>. Obviously, the distance <italic>s</italic> between tag and reader and the read rate <italic>p</italic> follow the relation as:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math id="mm1" display="block">
<mml:semantics id="sm1">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mi>s</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>b</mml:mi>
<mml:mo>&lt;</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mi>s</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>b</mml:mi></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>≤</mml:mo>
<mml:mi>k</mml:mi>
<mml:mi>s</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>b</mml:mi>
<mml:mo>≤</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mn>1</mml:mn></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mi>s</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>b</mml:mi>
<mml:mo>&gt;</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula>where, <italic>b</italic> = −<italic>kS</italic>, and <italic>k</italic> is the slope of the line, so above equation can be further written as:
<disp-formula id="FD2">
<label>(2)</label>
<mml:math id="mm2" display="block">
<mml:semantics id="sm2">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>&gt;</mml:mo>
<mml:mi>S</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi>S</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>≤</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi>S</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>≤</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mn>1</mml:mn></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi>S</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>&gt;</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula></p></sec>
<sec>
<label>3.2.</label>
<title>Behavior-Based Smoothing for Unreliable RFID Data</title>
<p>In this section, how to use the model to fill the missed RFID data will be discussed. In our model, epoch is the basic unit of RFID data streams. Our mission is to fill in the missed epoch information. The information of RFID data stream that we get includes tag ID, the number of interrogation responses for each tag in an epoch and the time of the epoch, in the form of (<italic>tag ID, Response number, time</italic>). Let us analyze <xref rid="FD2" ref-type="disp-formula">Equation (2)</xref>. The read rate <italic>p</italic> can be calculated through <italic>Response number</italic>, and the detection range <italic>S</italic> is a constant, but the distance <italic>s</italic> can't be calculated directly. In practice, the detection region of each reader is generally not very large, ranging from a few meters to tens of meters. Therefore, the movement through the detection region for persons, vehicles and goods on the conveyor belt and other tagged items can be approximately considered as uniform linear motion or a combination of several successive uniform linear motions. In addition, even if the velocity and direction of the objects has obviously changed in this process, we can also break down their movement, and approximately consider each short process as uniform linear motion. Well known, the speed <italic>v</italic> of uniform linear motion satisfies the equation Δ<italic>s</italic> = <italic>v</italic>Δ<italic>t</italic>. And if we consider <italic>s<sub>0</sub></italic> is the original distance of the tag, and <xref rid="FD2" ref-type="disp-formula">Equation (2)</xref> can be further written as:
<disp-formula id="FD3">
<label>(3)</label>
<mml:math id="mm3" display="block">
<mml:semantics id="sm3">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>B</mml:mi>
<mml:mo>&lt;</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>B</mml:mi></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>≤</mml:mo>
<mml:mi>K</mml:mi>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>B</mml:mi>
<mml:mo>≤</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mn>1</mml:mn></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>B</mml:mi>
<mml:mo>&gt;</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula>where <italic>K</italic> = ± <italic>kv</italic> (It take the negative sign when the value of <italic>p</italic> increases, otherwise take the positive sign), and <italic>B</italic> = <italic>k(s<sub>0</sub>−S)</italic>.</p>
<p>In practice, readers are usually interfered by the surroundings including the signal reflection and obstruction or sudden current gain, <italic>etc.</italic>, so the read rate that is calculated by <italic>Response number</italic> will be unstable. The results from directly treating the raw data may differ from the actual movement characteristics, so we use <italic>a</italic> weighted moving average of order <italic>n</italic> to smooth the initial read rate sequences. The process of replacing the read rate sequences by its moving average eliminates unwanted fluctuations. Furthermore, the influence of extreme values can be reduced by employing a weighted moving average with appropriate weights to get more realistic movement features of items to be monitored. The calculation is as follows:
<disp-formula id="FD4">
<label>(4)</label>
<mml:math id="mm4" display="block">
<mml:semantics id="sm4">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>−</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac></mml:mrow>
<mml:mo>′</mml:mo></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>−</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mo>′</mml:mo></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:mo>⋯</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mo>′</mml:mo></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:mo>⋯</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac></mml:mrow>
<mml:mo>′</mml:mo></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:munderover>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>−</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac></mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac></mml:mrow></mml:munderover>
<mml:mrow>
<mml:mrow>
<mml:mo>⌈</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>′</mml:mo></mml:msubsup></mml:mrow>
<mml:mo>⌉</mml:mo></mml:mrow></mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:semantics></mml:math></disp-formula>where <italic>w</italic><sub>1</sub> and <italic>w</italic><sub>0</sub> are the weights of read rate of current epoch and other epochs respectively.</p>
<p>In the above treatment, we only discuss such epoch whose read rate 
<inline-formula>
<mml:math id="mm5" display="inline">
<mml:semantics id="sm5">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mo>′</mml:mo></mml:msubsup>
<mml:mo>≠</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:semantics></mml:math></inline-formula>. When the read rate of the epoch is 
<inline-formula>
<mml:math id="mm6" display="inline">
<mml:semantics id="sm6">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mo>′</mml:mo></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:semantics></mml:math></inline-formula>, there are two possibilities: the tag is indeed outside the detection range or miss reading occurs to the tag, <italic>i.e.</italic>, the tag is in the detection range but not captured for interference factors. It is necessary for accurate data cleaning to distinguish these two cases clearly. We should analyze its movement feature in the adjacent time. The movement of tags is approximately uniform linear motion and satisfies <xref rid="FD3" ref-type="disp-formula">Equation (3)</xref>, so we can calculate the read rate <italic>p<sub>i</sub></italic> of the tag by the value of <italic>K</italic> and the read rate <italic>p<sub>ia</sub></italic> in the adjacent time, to further determine it is a true value or a missed reading. In order to solve the coefficient <italic>K</italic>, we denote <italic>epoch<sub>j</sub></italic> = {<italic>t<sub>j</sub>, p<sub>j</sub></italic>}, where <italic>t<sub>j</sub></italic> and <italic>p<sub>j</sub></italic> are the time and read rate of <italic>epoch<sub>j</sub></italic> respectively, and a training set <italic>TS</italic> = {<italic>epoch<sub>i</sub></italic><sub>+</sub><italic><sub>l</sub></italic> | <italic>p<sub>i-l</sub></italic> ≠ 0, −<italic>m</italic> ≤ <italic>l</italic> ≤ <italic>m</italic>}, where the upper limit of |<italic>TS</italic>| is 2<italic>m</italic> + 1. So the coefficient <italic>K</italic> can be solved by the method of <italic>least squares</italic> on the trainings set of <italic>TS</italic>, which estimates the best-fitting straight line as the one that minimizes the error between the actual data and the estimate of the line:
<disp-formula id="FD5">
<label>(5)</label>
<mml:math id="mm7" display="block">
<mml:semantics id="sm7">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:munder>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:msub>
<mml:mtext mathvariant="italic">epoch</mml:mtext>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo>∈</mml:mo>
<mml:mi>T</mml:mi>
<mml:mi>S</mml:mi></mml:mrow></mml:munder>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mover accent="true">
<mml:mi>p</mml:mi>
<mml:mo>¯</mml:mo></mml:mover>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mover accent="true">
<mml:mi>t</mml:mi>
<mml:mo>¯</mml:mo></mml:mover>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mrow>
<mml:munder>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:msub>
<mml:mtext mathvariant="italic">epoch</mml:mtext>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo>∈</mml:mo>
<mml:mi>T</mml:mi>
<mml:mi>S</mml:mi></mml:mrow></mml:munder>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mover accent="true">
<mml:mi>p</mml:mi>
<mml:mo>¯</mml:mo></mml:mover>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mrow></mml:mfrac></mml:mrow></mml:semantics></mml:math></disp-formula>
<disp-formula id="FD6">
<label>(6)</label>
<mml:math id="mm8" display="block">
<mml:semantics id="sm8">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mover accent="true">
<mml:mi>t</mml:mi>
<mml:mo>¯</mml:mo></mml:mover>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mover accent="true">
<mml:mi>p</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow></mml:semantics></mml:math></disp-formula>where, 
<inline-formula>
<mml:math id="mm9" display="inline">
<mml:semantics id="sm9">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>p</mml:mi>
<mml:mo>¯</mml:mo></mml:mover>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:munder>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:msub>
<mml:mtext mathvariant="italic">epoch</mml:mtext>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo>∈</mml:mo>
<mml:mi>T</mml:mi>
<mml:mi>S</mml:mi></mml:mrow></mml:munder>
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>S</mml:mi></mml:mrow>
<mml:mo>|</mml:mo></mml:mrow></mml:mrow></mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mspace width="0.2em"/>
<mml:mover accent="true">
<mml:mi>t</mml:mi>
<mml:mo>¯</mml:mo></mml:mover>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:munder>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:msub>
<mml:mtext mathvariant="italic">epoch</mml:mtext>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo>∈</mml:mo>
<mml:mi>T</mml:mi>
<mml:mi>S</mml:mi></mml:mrow></mml:munder>
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>S</mml:mi></mml:mrow>
<mml:mo>|</mml:mo></mml:mrow></mml:mrow></mml:mfrac></mml:mrow></mml:semantics></mml:math></inline-formula>.</p></sec>
<sec>
<label>3.3.</label>
<title>Reverse Order Filling Mechanism (ROFM)</title>
<p>In the data stream processing, data are normally processed in order. However, if the RFID data stream corresponding to a tag is filled in chronological order by the above-mentioned method, it is easy to bring the problem of miss filling, as shown in <xref ref-type="fig" rid="f3-sensors-12-10196">Figure 3(a)</xref>. We analyze the read rate of a tag in one time period in detail in <xref ref-type="fig" rid="f3-sensors-12-10196">Figure 3</xref>. <xref ref-type="fig" rid="f3-sensors-12-10196">Figure 3(c)</xref> indicates the read rate of the tag without miss readings and <xref ref-type="fig" rid="f3-sensors-12-10196">Figure 3(b)</xref> shows the raw read rate that the reader actually read. For an <italic>epoch<sub>p</sub></italic> in <xref ref-type="fig" rid="f3-sensors-12-10196">Figure 3(a)</xref>, if the corresponding coefficient <italic>K<sub>p</sub></italic> &gt; 0 and the data before the time <italic>t<sub>p</sub></italic> has been miss read for a long period of time, the data before a period of <italic>t<sub>p</sub></italic> will not be filled because the RFID data stream are processed in order. A simple solution is to process the RFID data stream twice, forward and backward. However, this will add a lot of computational overhead. To solve this problem, we introduce a Reverse Order Filling Mechanism. As soon as we detect the situation mentioned above occurs, the read rate of the corresponding data stream is to be refilled in the reverse direction from <italic>epoch<sub>p</sub></italic><sub>+</sub><italic><sub>T</sub></italic>. Until the original read rate <italic>p<sub>i</sub></italic> ≠ 0 or the filling value of read rate <italic>p<sub>f</sub></italic> = 0 the reverse filling mechanism will not be terminated. And the rest of data will be processed after that. So we only need a twice process to the corresponding data rather than all data, which ensures the completeness of RFID data cleaning, but also does not add too much computational overhead. Algorithm 1 shows a pseudo-code description of BBS cleaning algorithm.</p>
<array>
<tbody>
<tr>
<td align="center" valign="top" colspan="2"><bold>Algorithm 1.</bold> A pseudo-code description of BBS cleaning algorithm.</td></tr>
<tr>
<td align="left" valign="bottom" colspan="2">
<hr/></td></tr>
<tr>
<td align="left" valign="top" colspan="2"><bold>Algorithm BBS</bold></td></tr>
<tr>
<td align="left" valign="bottom" colspan="2">
<hr/></td></tr>
<tr>
<td align="left" valign="top" colspan="2"><bold>Require:</bold> <italic>Tags</italic> = <italic>set of all observed tag Ids</italic></td></tr>
<tr>
<td align="left" valign="top" colspan="2">    <italic>TS</italic> = <italic>the trainings set, the upper limit of</italic> |<italic>TS</italic>| <italic>is 2m</italic>+<italic>1</italic></td></tr>
<tr>
<td align="left" valign="top" colspan="2"><bold>for</bold> (<italic>tag</italic> in <italic>Tags</italic>) <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top" colspan="2"> <bold>while</bold> (<italic>GetNextEpoch</italic>()) <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top" colspan="2">  <italic>p<sub>i</sub></italic>=0</td></tr>
<tr>
<td align="left" valign="top" colspan="2">  <bold>if</bold> (
<mml:math id="mm10" display="inline">
<mml:semantics id="sm10">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mo>′</mml:mo></mml:msubsup>
<mml:mo>!</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:semantics></mml:math>) <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">   <italic>p<sub>i</sub></italic>←<italic>Smoothing</italic>(<italic>w</italic><sub>0</sub>, <italic>w</italic><sub>1</sub>, <italic>n</italic>)</td>
<td align="left" valign="top">// <xref rid="FD4" ref-type="disp-formula">Equation 4</xref></td></tr>
<tr>
<td align="left" valign="top">   <italic>K</italic>←<italic>CurrentSlope</italic> (<italic>TS</italic>)</td>
<td align="left" valign="top">// <xref rid="FD5" ref-type="disp-formula">Equation 5</xref></td></tr>
<tr>
<td align="left" valign="top" colspan="2">   <bold>if</bold> (<italic>p<sub>i</sub></italic>&gt;<italic>p<sub>c</sub></italic> &amp;&amp; <italic>K</italic>&gt;0 &amp;&amp; <italic>p</italic><sub><italic>i</italic>-1</sub>==0) <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top" colspan="2">   // check whether it is necessary to switch on ROFM or not</td></tr>
<tr>
<td align="left" valign="top" colspan="2">    <italic>t</italic><sub>0</sub>=<italic>t<sub>i</sub></italic></td></tr>
<tr>
<td align="left" valign="top" colspan="2">    <italic>GetEpoch</italic>(<italic>t<sub>i</sub></italic>+<italic>T</italic>)</td></tr>
<tr>
<td align="left" valign="top" colspan="2">    <bold>while</bold> (<italic>t<sub>i</sub></italic>≥<italic>t</italic><sub>0</sub> ‖ (<italic>t<sub>i</sub></italic>&lt;<italic>t</italic><sub>0</sub> &amp;&amp; <italic>p<sub>i</sub></italic>==0 &amp;&amp; <italic>Readrate</italic>(<italic>K, B, p<sub>ia</sub>, t<sub>ia</sub>, t<sub>i</sub></italic>)&gt;0)) <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top" colspan="2">     <bold>if</bold> (<italic>p<sub>i</sub></italic>==0) <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">      <italic>p<sub>i</sub></italic>←<italic>Readrate</italic>(<italic>K, B, p<sub>ia</sub>, t<sub>ia</sub>, t<sub>i</sub></italic>)</td>
<td align="left" valign="top"> // <xref rid="FD3" ref-type="disp-formula">Equation 3</xref></td></tr>
<tr>
<td align="left" valign="top" colspan="2">     <bold>end if</bold></td></tr>
<tr>
<td align="left" valign="top" colspan="2">    <bold>end while</bold></td></tr>
<tr>
<td align="left" valign="top" colspan="2">    <italic>GetEpoch</italic>(<italic>t</italic><sub>0</sub>+<italic>T</italic>)</td></tr>
<tr>
<td align="left" valign="top" colspan="2">   <bold>end if</bold></td></tr>
<tr>
<td align="left" valign="top" colspan="2">  <bold>else if</bold> (<italic>p</italic><sub><italic>i</italic>-1</sub>!=0) <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">   <italic>K</italic>←<italic>CurrentSlope</italic> (<italic>TS</italic>)</td>
<td align="left" valign="top">// <xref rid="FD5" ref-type="disp-formula">Equation 5</xref></td></tr>
<tr>
<td align="left" valign="top">   <italic>p<sub>i</sub></italic>←<italic>Readrate</italic>(<italic>K, B, p<sub>ia</sub>, t<sub>ia</sub>, t<sub>i</sub></italic>)</td>
<td align="left" valign="top"> // <xref rid="FD3" ref-type="disp-formula">Equation 3</xref></td></tr>
<tr>
<td align="left" valign="top" colspan="2">  <bold>else if</bold> (<italic>p</italic><sub><italic>i</italic>-1</sub>==0) <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">   <italic>p<sub>i</sub></italic>←<italic>Readrate</italic>(<italic>K, B, p<sub>ia</sub>, t<sub>ia</sub>, t<sub>i</sub></italic>)</td>
<td align="left" valign="top"> // <xref rid="FD3" ref-type="disp-formula">Equation 3</xref></td></tr>
<tr>
<td align="left" valign="top" colspan="2">  <bold>end if</bold></td></tr>
<tr>
<td align="left" valign="top" colspan="2"> <bold>end while</bold></td></tr>
<tr>
<td align="left" valign="top" colspan="2"><bold>end for</bold></td></tr>
<tr>
<td align="left" valign="bottom" colspan="2">
<hr/></td></tr></tbody></array></sec></sec>
<sec>
<label>4.</label>
<title>Experimental Evaluation</title>
<p>In this section, we present an analysis of the performance of BBS on several data sets and compare its accuracy with other cleaning methods. All the experiments were conducted on an Intel (R) Core (TM) 2 Duo CPU T9550 @ 2.66 GHz 2.67 GHz System with 2 GB of RAM. Our data include both the real collected data and simulation data. The laboratory equipments used for collecting data include Invengo XCRF-860 RFID UHF reader with 902–928 MHz frequency range, Invengo XCAF-12L antenna and XCTF-8101A tag. The simulation data for our experiments were generated by a synthetic RFID data generator that simulates the operation of RFID readers under a wide variety of conditions. We simulate various movements of tags with different missing rates. The missing rate means the probability that missed reading happens.</p>
<sec>
<label>4.1.</label>
<title>Accuracy Comparison</title>
<p>In the experiment, we compare the accuracy of data filled by BBS (with <italic>n</italic> = 3, <italic>n</italic> = 7 and <italic>n</italic> = 11, respectively), SMURF, and sliding-windows methods (with different window size: 5 epoch, 20 epoch and 35 epoch) under different missing rate (from 10% to 80%). The other experimental parameters of BBS are set as follows: <italic>m</italic> = 7, <italic>w</italic><sub>0</sub> = 1 and <italic>w</italic><sub>1</sub> = 2. We clean the same raw data with different methods. Comparing the corresponding cleaning result with real data, we can get the error rate of each method. As shown in <xref ref-type="fig" rid="f4-sensors-12-10196">Figure 4</xref>, the error rate of BBS is lower than that of sliding windows methods in all cases. We found that the choice of the parameter <italic>n</italic> will have some impact on the experimental results when the missing rate is greater than 70%. Therefore, in practical applications, for optimal cleaning results we should set parameters <italic>n, m, w</italic><sub>0</sub> and <italic>w</italic><sub>1</sub> with appropriate values in accordance with the actual needs. Usually, the more unstable the read rate sequence, the larger the value of <italic>n</italic> should be set; the higher the missing rate, the larger the value of <italic>m</italic> should be set.</p>
<p>We compare the accuracy of data filled by different methods under different tag speeds. The error rates obtained are used to compare the accuracy of methods where lower error rate means higher accuracy. As shown in <xref ref-type="fig" rid="f5-sensors-12-10196">Figure 5</xref>, the results of BBS are obviously superior to all other methods, especially when the speeds of tags are higher than 1.0 m/s.</p>
<p>Furthermore, we analyze the case in one time period in detail (missing rate = 50%, and the length of time is 1,000 epochs). As shown in <xref ref-type="fig" rid="f6-sensors-12-10196">Figure 6</xref>, Reality refers to readings that would have been produced by a perfect reader without missreadings. Raw means the raw data that the reader actually read and while the others refer to the data filled with four kinds of data cleaning methods (BBS, SMURF, 5 epoch sliding-window, and 35 epoch sliding-window). The bold horizontal lines indicate the tag is present/read, and vice versa. The line at the bottom of <xref ref-type="fig" rid="f6-sensors-12-10196">Figure 6</xref> is the real data of read rate without miss reading, and another line above it is the estimate of read rate by BBS (<italic>n</italic> = 7, <italic>w</italic><sub>0</sub> = 1 and <italic>w</italic><sub>1</sub> = 2). Obviously, compared with sliding window methods, BBS greatly improved the accuracy of RFID data cleaning. In particular, our BBS method not only accurately draws whether the tag is in the read range of the reader, but also can give the read rate of each epoch. So BBS make it possible to get a more exact position of the tag.</p></sec>
<sec>
<label>4.2.</label>
<title>Performance Comparison</title>
<p>To verify the validity and necessity of Reverse Order Filling Mechanism, we design the following experiment. We focus on readings produced from a single tag with different missing rates from 10% to 80% in 10,000 epochs. We process 8 sets of data by two different methods, the Reverse Order Filling Mechanism method and the Twice Scanning Method, and determine their performance by comparing the response times. As show in <xref ref-type="fig" rid="f7-sensors-12-10196">Figure 7</xref>, the Reverse Order Filling Mechanism only needs a twice cleaning process to the corresponding data while the Twice Scanning Method needs the process to all data. Therefore, the former is obviously superior to the latter in the efficiency of processing data.</p></sec></sec>
<sec sec-type="conclusions">
<label>5.</label>
<title>Conclusions</title>
<p>Accurate data cleaning is an essential task for the successful deployment of RFID systems. In this paper, we have proposed a behavior-based unreliable RFID data smoothing system BBS, which can take advantage of kinematic characteristics of tags to assist in RFID data cleaning. A movement behavior detection model is proposed to establish the conversion relationship between RFID data and kinematic parameters of the tags. Then we reduce the influence of extreme values and other unwanted fluctuations by employing a weighted moving average of order <italic>n</italic>. Moreover, Reverse Order Filling Mechanism (ROFM) is proposed for BBS to ensure a more complete access to get the movement behavior characteristics of tag. Finally, we validate our solution with a common RFID application and demonstrate the advantages of our approach through extensive simulations.</p></sec></body>
<back>
<ack>
<p>This research is supported by the National High Technology Research and Development Program of China (No. 2010AA012505, No. 2011AA010702, No. 2012AA01A401 and No. 2012AA01A402), the National Natural Science Foundation of China (No. 60933005), the Support Science and Technology Project of China (No. 2012BAH38B04) and the Information Safety Plan of China 242 (No. 2011A010).</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-12-10196"><label>1.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Evan</surname><given-names>W.</given-names></name><name><surname>Leilani</surname><given-names>B.</given-names></name><name><surname>Garret</surname><given-names>C.</given-names></name><name><surname>Kayla</surname><given-names>G.</given-names></name><name><surname>Kyle</surname><given-names>R.</given-names></name><name><surname>Samuel</surname><given-names>R.</given-names></name><name><surname>Magdalena</surname><given-names>B.</given-names></name><name><surname>Gaetano</surname><given-names>B.</given-names></name></person-group><article-title>Building the Internet of things using RFID: The RFID ecosystem experience</article-title><source>IEEE Internet Comp.</source><year>2009</year><volume>13</volume><fpage>48</fpage><lpage>55</lpage></citation></ref>
<ref id="b2-sensors-12-10196"><label>2.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Roy</surname><given-names>W.</given-names></name></person-group><article-title>The Magic of RFID</article-title><source>ACM Queue</source><year>2004</year><volume>2</volume><fpage>40</fpage><lpage>48</lpage></citation></ref>
<ref id="b3-sensors-12-10196"><label>3.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Fusheng</surname><given-names>W.</given-names></name><name><surname>Peiya</surname><given-names>L.</given-names></name></person-group><article-title>Temporal Management of RFID Data</article-title><conf-name>Proceedings of the 31st International Conference on Very Large Data Bases</conf-name><conf-loc>Trondheim, Norway</conf-loc><conf-date>30 August–3 September 2005</conf-date><fpage>1128</fpage><lpage>1139</lpage></citation></ref>
<ref id="b4-sensors-12-10196"><label>4.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Sudarshan</surname><given-names>S.C.</given-names></name><name><surname>Venkat</surname><given-names>K.</given-names></name><name><surname>Sridhar</surname><given-names>R.</given-names></name><name><surname>Sanjay</surname><given-names>S.</given-names></name></person-group><article-title>Managing RFID Data</article-title><conf-name>Proceedings of the Thirtieth International Conference on Very Large Data Bases</conf-name><conf-loc>Toronto, ON, Canada</conf-loc><conf-date>29 August–3 September 2004</conf-date><fpage>1189</fpage><lpage>1195</lpage></citation></ref>
<ref id="b5-sensors-12-10196"><label>5.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Shawn</surname><given-names>R.J.</given-names></name><name><surname>Minos</surname><given-names>G.</given-names></name><name><surname>Michael</surname><given-names>J.F.</given-names></name></person-group><article-title>Adaptive Cleaning for RFID Data Streams</article-title><conf-name>Proceedings of the 32nd International Conference on Very Large Data Bases</conf-name><conf-loc>Seoul, Korea</conf-loc><conf-date>12–15 September 2006</conf-date><fpage>163</fpage><lpage>174</lpage></citation></ref>
<ref id="b6-sensors-12-10196"><label>6.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sheng</surname><given-names>Q.</given-names></name><name><surname>Zeadally</surname><given-names>S.</given-names></name><name><surname>Luo</surname><given-names>Z.</given-names></name><name><surname>Chung</surname><given-names>J.Y.</given-names></name><name><surname>Maamar</surname><given-names>Z.</given-names></name></person-group><article-title>Ubiquitous RFID: Where are we?</article-title><source>Inf. Sys. Front.</source><year>2010</year><volume>12</volume><fpage>485</fpage><lpage>490</lpage><pub-id pub-id-type="doi">10.1007/s10796-009-9212-x</pub-id></citation></ref>
<ref id="b7-sensors-12-10196"><label>7.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Mahdin</surname><given-names>H.</given-names></name><name><surname>Abawajy</surname><given-names>J.</given-names></name></person-group><article-title>An approach for removing redundant data from RFID data streams</article-title><source>Sensors</source><year>2011</year><volume>11</volume><fpage>9863</fpage><lpage>9877</lpage><pub-id pub-id-type="doi">10.3390/s111009863</pub-id><pub-id pub-id-type="pmid">22163730</pub-id></citation></ref>
<ref id="b8-sensors-12-10196"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Massawe</surname><given-names>L.V.</given-names></name><name><surname>Kinyua</surname><given-names>J.D.M.</given-names></name><name><surname>Vermaak</surname><given-names>H.</given-names></name></person-group><article-title>Reducing false negative reads in RFID data streams using an adaptive sliding-window approach</article-title><source>Sensors</source><year>2012</year><volume>12</volume><fpage>4187</fpage><lpage>4212</lpage><pub-id pub-id-type="doi">10.3390/s120404187</pub-id><pub-id pub-id-type="pmid">22666027</pub-id></citation></ref>
<ref id="b9-sensors-12-10196"><label>9.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Bornhovd</surname><given-names>C.</given-names></name><name><surname>Haller</surname><given-names>S.</given-names></name><name><surname>Schaper</surname><given-names>J.</given-names></name></person-group><article-title>Integrating Automatic Data Acquisition with Business Processes Experiences with SAP's Auto-ID Infrastructure</article-title><conf-name>Proceedings of the Thirtieth International Conference on Very Large Data Bases</conf-name><conf-loc>Toronto, ON, Canada</conf-loc><conf-date>29 August–3 September 2004</conf-date><fpage>1182</fpage><lpage>1188</lpage></citation></ref>
<ref id="b10-sensors-12-10196"><label>10.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Lin</surname><given-names>D.</given-names></name><name><surname>Elmongui</surname><given-names>H.</given-names></name><name><surname>Bertino</surname><given-names>E.</given-names></name><name><surname>Ooi</surname><given-names>B.</given-names></name></person-group><article-title>Data Management in RFID Applications</article-title><source>Database and Expert Systems Applications</source><person-group person-group-type="editor"><name><surname>Wagner</surname><given-names>R.</given-names></name><name><surname>Revell</surname><given-names>N.</given-names></name><name><surname>Pernul</surname><given-names>G.</given-names></name></person-group><publisher-name>Springer</publisher-name><publisher-loc>Berlin, Heidelberg, Germany</publisher-loc><year>2007</year><volume>4653</volume><fpage>434</fpage><lpage>444</lpage></citation></ref>
<ref id="b11-sensors-12-10196"><label>11.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lee</surname><given-names>C.H.</given-names></name></person-group><article-title>RFID data processing in supply chain management using a path encoding scheme</article-title><source>IEEE Trans. Knowl. Data Eng.</source><year>2011</year><volume>23</volume><fpage>742</fpage><lpage>758</lpage><pub-id pub-id-type="doi">10.1109/TKDE.2010.136</pub-id></citation></ref>
<ref id="b12-sensors-12-10196"><label>12.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Shawn</surname><given-names>R.J.</given-names></name><name><surname>Michael</surname><given-names>J.F.</given-names></name><name><surname>Minos</surname><given-names>G.</given-names></name></person-group><article-title>An adaptive RFID middleware for supporting metaphysical data independence</article-title><source>VLDB J.</source><year>2008</year><volume>17</volume><fpage>265</fpage><lpage>289</lpage><pub-id pub-id-type="doi">10.1007/s00778-007-0084-8</pub-id></citation></ref>
<ref id="b13-sensors-12-10196"><label>13.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Jun</surname><given-names>R.</given-names></name><name><surname>Sangeeta</surname><given-names>D.</given-names></name><name><surname>Hetal</surname><given-names>T.</given-names></name><name><surname>Latha</surname><given-names>S.C.</given-names></name></person-group><article-title>A Deferred Cleansing Method for RFID Data Analytics</article-title><conf-name>Proceedings of the 32nd International Conference on Very Large Data Bases</conf-name><conf-loc>Seoul, Korea</conf-loc><conf-date>12–15 September 2006</conf-date><fpage>175</fpage><lpage>186</lpage></citation></ref>
<ref id="b14-sensors-12-10196"><label>14.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Chen</surname><given-names>H.</given-names></name><name><surname>Ku</surname><given-names>W.S.</given-names></name><name><surname>Wang</surname><given-names>H.</given-names></name><name><surname>Sun</surname><given-names>M.T.</given-names></name></person-group><article-title>Leveraging Spatio-Temporal Redundancy for RFID Data Cleansing</article-title><conf-name>Proceedings of the 2010 International Conference on Management of Data</conf-name><conf-loc>Indianapolis, IN, USA</conf-loc><year>2010</year><fpage>51</fpage><lpage>62</lpage></citation></ref>
<ref id="b15-sensors-12-10196"><label>15.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Gonzalez</surname><given-names>H.</given-names></name><name><surname>Han</surname><given-names>J.</given-names></name><name><surname>Shen</surname><given-names>X.</given-names></name></person-group><article-title>Cost-Conscious Cleaning of Massive RFID Data Sets</article-title><conf-name>Proceedings of the 23rd International Conference on Data Engineering</conf-name><conf-loc>Istanbul, Turkey</conf-loc><conf-date>17–20 April 2007</conf-date><fpage>1268</fpage><lpage>1272</lpage></citation></ref>
<ref id="b16-sensors-12-10196"><label>16.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Darcy</surname><given-names>P.</given-names></name><name><surname>Stantic</surname><given-names>B.</given-names></name><name><surname>Sattar</surname><given-names>A.</given-names></name></person-group><article-title>A Fusion of Data Analysis and Non-Monotonic Reasoning to Restore Missed RFID Readings</article-title><conf-name>Proceedings of the 5th International Conference on Intelligent Sensors, Sensor Networks and Information Processing</conf-name><conf-loc>Melbourne, Australia</conf-loc><conf-date>7–10 December 2009</conf-date><fpage>313</fpage><lpage>318</lpage></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures</title>
<fig id="f1-sensors-12-10196" position="float">
<label>Figure 1.</label>
<caption>
<p>Read rate of tags in different conditions. (<bold>a</bold>) Quiet condition; (<bold>b</bold>) Noisy condition.</p></caption>
<graphic xlink:href="sensors-12-10196f1.gif"/></fig>
<fig id="f2-sensors-12-10196" position="float">
<label>Figure 2.</label>
<caption>
<p>Relationship between read rate and distance.</p></caption>
<graphic xlink:href="sensors-12-10196f2.gif"/></fig>
<fig id="f3-sensors-12-10196" position="float">
<label>Figure 3.</label>
<caption>
<p>The cleaning result of one-way BBS. (<bold>a</bold>) one-way BBS; (<bold>b</bold>) raw; (<bold>c</bold>) reality.</p></caption>
<graphic xlink:href="sensors-12-10196f3a.gif"/>
<graphic xlink:href="sensors-12-10196f3b.gif"/></fig>
<fig id="f4-sensors-12-10196" position="float">
<label>Figure 4.</label>
<caption>
<p>Accuracy comparison under different missing rates. (<bold>a</bold>) missing rate = 10%; (<bold>b</bold>) missing rate = 20%; (<bold>c</bold>) missing rate = 30%; (<bold>d</bold>) missing rate = 40%; (<bold>e</bold>) missing rate = 50%; (<bold>f</bold>) missing rate = 60%; (<bold>g</bold>) missing rate = 70%; (<bold>h</bold>) missing rate = 80%.</p></caption>
<graphic xlink:href="sensors-12-10196f4a.gif"/>
<graphic xlink:href="sensors-12-10196f4b.gif"/></fig>
<fig id="f5-sensors-12-10196" position="float">
<label>Figure 5.</label>
<caption>
<p>Accuracy comparison under different tag speeds.</p></caption>
<graphic xlink:href="sensors-12-10196f5.gif"/></fig>
<fig id="f6-sensors-12-10196" position="float">
<label>Figure 6.</label>
<caption>
<p>Analysis in detail.</p></caption>
<graphic xlink:href="sensors-12-10196f6.gif"/></fig>
<fig id="f7-sensors-12-10196" position="float">
<label>Figure 7.</label>
<caption>
<p>Performance comparison.</p></caption>
<graphic xlink:href="sensors-12-10196f7.gif"/></fig></sec></back></article>
