Data-Driven SOH Estimation for Electric Vehicle Battery Packs

In my work with real-world electric vehicle battery pack data, I have seen that range anxiety is not only a matter of charging infrastructure. It is also a matter of confidence. As an electric vehicle battery pack ages, its usable capacity decreases, its internal resistance increases, and the remaining driving range becomes less predictable. This change is not always visible to the driver. The battery management system may report a state of health value that is smooth and familiar, yet the true state of the electric vehicle battery pack can be quite different. My objective in this study is therefore to build a practical, data-driven method that estimates the state of health of an electric vehicle battery pack from actual vehicle operation data, without requiring vehicle recalls, module disassembly, or large offline laboratory campaigns.

The state of health of an electric vehicle battery pack is commonly expressed as a capacity ratio:

$$SOH = \frac{Q_{\mathrm{current}}}{Q_{\mathrm{rated}}} \times 100\%$$

Here, \(Q_{\mathrm{current}}\) is the current usable capacity of the electric vehicle battery pack, and \(Q_{\mathrm{rated}}\) is its rated capacity when new. A value near \(100\%\) indicates a nearly fresh pack, while a lower value indicates aging. In practice, the state of health of an electric vehicle battery pack also affects power capability, thermal behavior, and safety margin. Therefore, an accurate state of health estimate is useful for drivers, fleet operators, warranty providers, second-life evaluators, and battery management engineers.

Data-driven state of health estimation has become a central technology for electric vehicle battery pack management. Instead of relying only on electrochemical models, data-driven methods learn aging patterns from voltage, current, temperature, state of charge, mileage, and other signals already collected by the vehicle. This is especially attractive for a large electric vehicle battery pack fleet because the data are already available in cloud platforms. However, raw operational data are noisy, inconsistent, and rarely labeled with true capacity. The absence of reliable labels is one of the most difficult obstacles. If I cannot obtain a trustworthy state of health ground truth for the electric vehicle battery pack, then I cannot train a supervised model with confidence.

I therefore combine three ideas in this study. First, I design a systematic data cleaning process for raw electric vehicle battery pack signals. Second, I construct state of health labels by screening special duty cycles and calibrating state of charge through open-circuit voltage. Third, I train a Gaussian process regression model to estimate the state of health of an electric vehicle battery pack under normal operating conditions. The method is deployed on a big data platform and tested on heterogeneous vehicles.

Estimation paradigm Main idea Strength Limitation for real-world electric vehicle battery pack
Mechanism-based model Electrochemical or equivalent-circuit equations Physical interpretability Parameter identification is difficult under variable real-world duty cycles
Traditional machine learning Feature-based regression or tree ensembles Simple and fast May lack uncertainty output and can overfit small electric vehicle battery pack samples
Deep learning Neural networks such as LSTM or transformers High capacity for large datasets Requires large samples and significant in-vehicle computation for an electric vehicle battery pack
Bayesian Gaussian process Probabilistic nonparametric regression Small-sample robustness and confidence intervals Scaling to extremely large datasets requires approximation

The electric vehicle battery pack studied here consists of multiple series-connected modules, and each module contains series-connected cells. The cells are lithium-ion cells with a nickel-cobalt-manganese oxide chemistry. The pack is used in a compact electric vehicle platform. I select signals that are strongly related to aging: charging state, vehicle speed, cumulative mileage, total voltage, total current, state of charge, individual cell voltages, maximum and minimum cell voltage, and maximum and minimum temperature. These signals form the initial dataset for state of health estimation of the electric vehicle battery pack.

Raw cloud data cannot be used directly for state of health estimation of an electric vehicle battery pack. The data are stored in a format that is efficient for transmission but not convenient for analysis. Values may be missing, duplicated, delayed, or encoded differently across software versions. Some frames contain impossible values, such as negative absolute voltage or state of charge outside the valid range. I therefore apply a data cleaning pipeline that includes range validation, consistency checks, invalid value handling, missing value treatment, and charge-cycle slicing.

For each signal, I define a valid numerical range and a required precision. For example, state of charge must lie between \(0\%\) and \(100\%\), cell voltage must lie within the manufacturer-specified window, and current must be consistent with charging or discharging mode. I use threshold rules and encoding rules to detect anomalies. A simple statistical check is also useful:

$$z = \frac{x – \mu}{\sigma}$$

If the absolute value of \(z\) exceeds a chosen threshold, the point is treated as a potential outlier. When an anomalous frame cannot be repaired, I remove the entire frame. When a short gap appears, I may interpolate if the gap is small and the signal is smooth. Otherwise, the frame is excluded. After cleaning, I slice the data into charging cycles based on the charging state signal. Each charging cycle is a candidate unit for feature extraction and state of health modeling of the electric vehicle battery pack.

Signal Role in state of health estimation Cleaning action
Charging state Identifies charge, discharge, and rest intervals Validate encoding and remove unknown states
Vehicle speed Separates driving from parking Remove negative values and impossible jumps
Cumulative mileage Captures long-term aging of electric vehicle battery pack Enforce monotonic increase and repair small resets
Total voltage Pack-level electrical state Range check against cell count
Total current Used for ampere-hour integration Check sign convention and remove spikes
State of charge Battery management system estimate Range check and consistency with voltage
Individual cell voltage Cell inconsistency and voltage range Remove missing cells and out-of-range values
Maximum and minimum cell voltage Used for open-circuit voltage calibration Enforce maximum greater than minimum
Maximum and minimum temperature Thermal aging and operating condition Remove impossible temperatures and sensor faults

The most important labeling problem is this: the true state of health of an electric vehicle battery pack is not directly measured during normal driving. The battery management system provides an estimate, but that estimate is often a transient value. A reliable estimate usually requires specific conditions, such as a long rest period or a large charging event. Because I cannot recall thousands of vehicles for laboratory testing, I construct labels from special real-world duty cycles. This is the core of my label generation strategy.

I define a duty cycle that is suitable for state of health label calculation. The cycle should begin at a relatively low state of charge, include a long rest period, include only a short drive, and end with a full charge. The rest period allows polarization to relax so that open-circuit voltage is close to terminal voltage. The short drive limits energy consumption between rest and charging. The full charge ensures a known upper state of charge boundary. This type of cycle is rare in everyday use, but it appears often enough in a large electric vehicle battery pack fleet to provide training labels.

Condition Symbol Threshold used in my study Purpose
Minimum rest duration \(T_{\mathrm{stand}}\) 1 h Allow polarization relaxation for open-circuit voltage calibration
Minimum state of charge before rest \(SOC_{\mathrm{min}}\) 50% Ensure a large state of charge swing during charging
Maximum discharge between rest and charge \(SOC_{\mathrm{disc}}\) 20% Keep the cycle close to the ideal rest-to-charge sequence
End state of charge \(SOC_{\mathrm{end}}\) 100% Provide a known upper boundary for capacity calculation

The rest interval starts when the vehicle is powered down after a trip and ends when the vehicle is powered up for the next trip. The charging interval starts when charging begins and ends when the electric vehicle battery pack reaches full charge. In an ideal case, the rest interval is immediately followed by charging. In real life, the driver may drive a short distance before charging. I therefore allow a limited discharge between rest and charge. If the discharge exceeds the threshold, I discard the cycle because the state of charge at the start of charging becomes less certain.

After rest, the battery is close to equilibrium. The open-circuit voltage can be approximated by the highest cell terminal voltage. I use a state of charge versus open-circuit voltage lookup table provided for the cell chemistry. The table is specific to the electric vehicle battery pack design. Because the table is discrete, I interpolate linearly between points:

$$SOC(V) = SOC_i + \frac{V – V_i}{V_{i+1} – V_i}(SOC_{i+1} – SOC_i)$$

The resulting mapping is nonlinear. I use the highest cell voltage after rest to obtain a calibrated starting state of charge, denoted \(SOC_{\mathrm{start}}\). In my selected cycles, the cell temperature is mainly between \(15^\circ\mathrm{C}\) and \(35^\circ\mathrm{C}\). Within this range, the open-circuit voltage to state of charge mapping deviation is small enough for label construction of the electric vehicle battery pack.

State of charge (%) Open-circuit voltage (V) State of charge (%) Open-circuit voltage (V)
0 3.380 55 3.716
5 3.417 60 3.757
10 3.464 65 3.801
15 3.508 70 3.849
20 3.546 75 3.899
25 3.573 80 3.950
30 3.591 85 4.005
35 3.606 90 4.064
40 3.621 95 4.129
45 3.640 100 4.222
50 3.668 — —

Once the starting state of charge is calibrated, I calculate the net charge transferred during the charging event using ampere-hour integration:

$$Q_{\mathrm{charge}} = \int_{t_{\mathrm{start}}}^{t_{\mathrm{end}}} I(t) dt$$

I then estimate the state of health label of the electric vehicle battery pack as:

$$\widehat{SOH} = \frac{Q_{\mathrm{charge}}}{Q_0 (100\% – SOC_{\mathrm{start}})} \times 100\%$$

Here, \(Q_0\) is the rated capacity of the electric vehicle battery pack when new. This label is not obtained from a laboratory test for every vehicle. Instead, it is inferred from a carefully selected real-world cycle. The method turns ordinary fleet data into a source of labels, which greatly reduces the cost of state of health modeling for a large electric vehicle battery pack population.

I also validate the label construction against laboratory measurements. I selected eight battery packs with different aging levels and mileage values. The packs were removed from vehicles and tested in a controlled chamber. The test protocol included a rest period, a constant-current discharge, a rest period, a full charge according to the battery management system strategy, another rest, and another constant-current discharge. The laboratory capacity was treated as the high-precision true value. The state of health estimates from my label method were compared with these values. The single-pack mean absolute percentage error ranged from \(0.30\%\) to \(3.17\%\), and the overall average mean absolute percentage error was \(1.67\%\). This is within the target of \(3\%\) for most samples. The higher errors occurred for deeply aged electric vehicle battery packs, where electrode degradation and polarization become more nonuniform.

Battery pack Chemistry Mileage (km) Mean absolute percentage error (%)
Pack 1 NCM 327565 3.17
Pack 2 NCM 299687 0.83
Pack 3 NCM 139100 1.64
Pack 4 NCM 211878 1.49
Pack 5 NCM 337777 2.20
Pack 6 NCM 200000 2.94
Pack 7 NCM 246467 0.80
Pack 8 NCM 242859 0.30
Overall NCM — 1.67

Feature extraction is the next step. A good feature should change in a consistent way as the electric vehicle battery pack ages. It should also be robust to noise and to random user behavior. I extract features from the charging process because charging is more controlled than discharging. During charging, current and voltage follow a more repeatable pattern, and the electric vehicle battery pack passes through a wide range of state of charge. I focus on the capacity increment behavior over a fixed voltage window.

Raw voltage data from the battery management system contain noise. To compute a stable capacity increment, I first smooth the highest cell voltage signal. I use cubic spline interpolation to create a smooth and monotonic voltage sequence. Then I select a fixed voltage window, for example from \(3.9\mathrm{V}\) to \(4.05\mathrm{V}\). For each voltage point in the original sequence, I compute the charge increment:

$$Q_i = \int_{t_{V_0}}^{t_{V_i}} I(t) dt, i \in [0,k]$$

I then fit a cubic spline to the voltage and charge increment pairs and interpolate onto a regular voltage grid. The grid starts at \(3.9\mathrm{V}\), advances in steps of \(1\mathrm{mV}\), and ends at \(4.05\mathrm{V}\). This produces a capacity increment sequence with a fixed length. From this sequence, I extract the mean, standard deviation, and range. These three features summarize the shape and spread of the capacity increment curve for the electric vehicle battery pack.

I also include charging temperature, cumulative mileage, and cell voltage range as features. Charging temperature reflects thermal aging. Cumulative mileage reflects cyclic aging. Cell voltage range reflects cell inconsistency within the electric vehicle battery pack. I calculated the Pearson correlation coefficient between each candidate feature and the state of health label. The six selected features all have correlation coefficients greater than \(0.6\), which indicates strong linear association. Other candidate indicators, such as skewness, kurtosis, and peak position of the incremental capacity curve, have correlations below \(0.3\) and are more sensitive to noise. I therefore exclude them from the final input set.

Feature Physical meaning Correlation with state of health Reason for inclusion
Mean of capacity increment sequence Average charge response in fixed voltage window High Reflects active lithium loss and capacity fade
Standard deviation of capacity increment sequence Variation of charge response High Reflects polarization and degradation heterogeneity
Range of capacity increment sequence Spread of charge increment High Captures nonlinear aging behavior
Charging temperature Thermal condition during charge High Represents thermal aging path
Cumulative mileage Total distance traveled High Represents cyclic aging of electric vehicle battery pack
Cell voltage range Maximum minus minimum cell voltage High Represents cell inconsistency

For the regression model, I use Gaussian process regression. This is a nonparametric Bayesian method. It is well suited to my problem because the available number of labeled cycles from an electric vehicle battery pack fleet is moderate, while the relationship between features and state of health is nonlinear. Gaussian process regression provides not only a prediction but also a variance, which is valuable for risk-aware battery management.

I model the observed state of health label as a noisy realization of a latent function:

$$y_i = f(x_i) + \varepsilon_i, \varepsilon_i \sim \mathcal{N}(0,\sigma_n^2)$$

The latent function is assumed to follow a Gaussian process:

$$f(x) \sim \mathcal{GP}(m(x), k(x,x’))$$

For a test input \(x_*\), the predictive mean and variance are:

$$\mu_* = K_*^T (K + \sigma_n^2 I)^{-1} y$$

$$\sigma_*^2 = k(x_*,x_*) – K_*^T (K + \sigma_n^2 I)^{-1} K_*$$

The kernel function controls the smoothness and generalization of the model. I use the Matérn \(5/2\) kernel:

$$k(r) = \sigma_f^2 \left(1 + \frac{\sqrt{5}r}{\ell} + \frac{5r^2}{3\ell^2}\right) \exp\left(-\frac{\sqrt{5}r}{\ell}\right)$$

where \(r = \|x – x’\|\). This kernel is less smooth than the squared exponential kernel and is often more robust for noisy capacity degradation data from an electric vehicle battery pack. It allows the model to capture local variations while maintaining reasonable smoothness.

Before training, I normalize each input feature:

$$x’_j = \frac{x_j – \mu_j}{\sigma_j}$$

Normalization is important because the features have very different scales. Cumulative mileage can be on the order of \(10^5\) km, while capacity increment values are small. Without normalization, the kernel length scales would be difficult to optimize. I use a learning rate of \(0.002\) and \(3500\) iterations. The training loss is the mean squared error:

$$\mathcal{L} = \frac{1}{N}\sum_{i=1}^{N}(y_i – \hat{y}_i)^2$$

The dataset contains \(4260\) valid charging cycles from \(15\) operating vehicles. I use a two-level stratified random split. First, I split by vehicle. Twenty percent of the vehicles form an independent heterogeneous test set. These vehicles never participate in training or hyperparameter tuning. From the remaining eighty percent of vehicles, I split by charge cycle: eighty percent for training and twenty percent for internal validation. This scheme prevents data leakage from the same electric vehicle battery pack into both training and test sets, and it better reflects cross-fleet generalization.

During training, the Gaussian process regression model converged effectively. The training process took about \(2066\) seconds for \(3700\) training samples. The training set mean absolute percentage error was \(2.61\%\). This indicates that the features carry strong information about the state of health of the electric vehicle battery pack and that the chosen kernel is appropriate. The loss decreased smoothly and then stabilized, which suggests that the optimization did not diverge.

I then evaluate the trained model on the independent test set. The test vehicles are urban operating vehicles with cumulative mileage between \(120000\) km and \(350000\) km. They cover the middle and later stages of electric vehicle battery pack aging. The daily driving distance is roughly \(260\) km to \(340\) km, and fast charging accounts for about \(72\%\) of charging events. The climate includes hot summers with extreme temperatures above \(40^\circ\mathrm{C}\), and the routes include congested urban roads, suburban expressways, and mountain slopes. This makes the test set a demanding check of robustness for state of health estimation of the electric vehicle battery pack.

Test vehicle Mean absolute error (Ah) Mean absolute percentage error (%) Root mean square error (%) Maximum error (%) Percentage of samples with error below 3%
1 2.35 3.21 3.50 7.16 62.96
2 1.85 2.23 2.22 4.67 80.00
3 1.75 2.14 2.47 7.03 70.59
4 2.79 3.29 3.88 9.56 66.67
5 1.26 1.35 1.67 3.35 83.33
6 3.47 4.24 3.93 6.08 66.67
7 3.33 3.79 4.04 5.62 50.00
8 2.78 3.35 3.55 8.94 61.11
9 1.56 1.78 2.20 1.09 75.00
10 4.47 5.32 5.28 8.69 33.33
11 2.32 2.62 3.09 6.81 70.00
12 3.17 3.64 3.75 7.29 66.67
13 3.96 4.73 4.72 8.96 42.10
14 3.02 3.57 4.22 11.43 66.67
15 1.82 2.02 2.26 3.82 66.67
Average 2.66 3.15 3.39 6.70 64.12

The results show that the Gaussian process regression model achieves an average mean absolute percentage error of \(3.15\%\), an average mean absolute error below \(2.66\) Ah, and more than \(64\%\) of samples with an error below \(3\%\). These values indicate that the method is accurate enough for practical monitoring of an electric vehicle battery pack. The larger errors are concentrated in vehicles with mileage above \(300000\) km and in charging segments with short duration or large temperature swings. In those cases, the electric vehicle battery pack experiences nonuniform cell degradation and unstable polarization, which makes state of health estimation more difficult.

The comparison with other algorithms further supports my choice. Linear regression has limited ability to capture the nonlinear degradation of an electric vehicle battery pack under real-world conditions. Long short-term memory networks require large training samples and significant in-vehicle computation. Support vector regression and gradient boosting can perform well, but they do not naturally provide predictive uncertainty. Gaussian process regression, in contrast, is a nonparametric Bayesian model that performs well with small and moderate samples, is robust to time-series noise, and outputs a confidence interval. This makes it a good fit for online state of health assessment of an electric vehicle battery pack.

Deployment is also part of my design. I use a two-level architecture: cloud training and edge inference. The cloud platform aggregates data from many vehicles, performs data cleaning, constructs labels, trains the Gaussian process regression model, prunes the model, and applies INT8 quantization. The lightweight model is then delivered to the vehicle edge computing unit through an encrypted channel. The edge unit performs inference using recent charging data from the electric vehicle battery pack. This architecture keeps sensitive raw data in the cloud during training while enabling fast local decisions in the vehicle.

Deployment metric Measured value Implication for electric vehicle battery pack management
Average inference latency 62 ms Fast enough for online state of health updates
Peak memory per inference 18.4 MB Compatible with embedded edge hardware
Average CPU usage Below 26% Does not compete heavily with battery management functions
Cloud CPU peak load for daily fleet evaluation Below 45% per node Existing cluster can support fleet-wide evaluation

In my view, the practical value of this method comes from three properties. First, it does not require vehicle recalls or module disassembly. The labels are built from real-world duty cycles and open-circuit voltage calibration. Second, it uses features that are already available from the battery management system, so no additional sensors are needed for the electric vehicle battery pack. Third, it provides uncertainty estimates through the Gaussian process posterior variance. This is useful for setting warning thresholds, planning maintenance, and avoiding unnecessary replacement of an electric vehicle battery pack.

The method can support several applications. It can monitor the state of health of an electric vehicle battery pack in real time. It can detect abnormal aging trends and issue early warnings. It can help predict remaining useful life. It can provide evidence for warranty decisions. It can also support second-life evaluation and cascade utilization, because a reliable state of health estimate is essential for valuing a retired electric vehicle battery pack. In addition, fleet operators can use aggregated state of health statistics to optimize charging schedules and reduce operating costs.

There are limitations. The label construction depends on the presence of suitable rest-and-charge cycles. In fleets with mostly fast charging and little resting, the number of labels may be smaller. The open-circuit voltage calibration assumes that the rest period is long enough to remove polarization. In very cold or very hot conditions, the mapping from open-circuit voltage to state of charge may shift. The Gaussian process model also scales poorly with millions of samples unless sparse approximations are used. These limitations do not invalidate the approach, but they define the conditions under which I expect the best performance for state of health estimation of an electric vehicle battery pack.

In conclusion, I have developed a data-driven method for state of health estimation of an electric vehicle battery pack using real-world operation data. I built a systematic cleaning pipeline for raw battery management system signals. I designed a duty-cycle screening and state of charge calibration strategy to construct reliable state of health labels without vehicle recalls. I extracted capacity increment features and other aging-related indicators. I trained a Gaussian process regression model and validated it on heterogeneous vehicles. The model achieved an average mean absolute percentage error of \(3.15\%\), an average mean absolute error below \(2.66\) Ah, and more than \(64\%\) of samples with an error below \(3\%\). The method has been deployed on a big data platform with cloud training and edge inference, and it provides a practical tool for battery lifecycle management.

Future work should focus on several directions. I plan to study large-scale battery lifetime prediction using the same data infrastructure and to deploy health estimation and lifetime prediction as online services. I also plan to develop strategies that guide users toward better charging and driving habits, because these habits can slow the aging of an electric vehicle battery pack. More intelligent algorithms for battery management should be explored, including methods that combine physical knowledge with data-driven learning. Finally, as the number of real-world samples grows, I intend to perform systematic comparisons among multiple algorithms on the same platform, so that the strengths and weaknesses of each method can be quantified for different operating conditions of the electric vehicle battery pack.

Scroll to Top