Accuracy cycling and walking

Hi @matt

Since version 3.15.0 the accuracy of my cycling or walking activities got way worse. The activity below for example is a combination of some blue cycling activities and a lot of “stationary” locations. In reality this was a single ride of 45 minutes with just four stops for a traffic light.

I’m using a iPhone 14 Pro with iOS 17.3. Any solution?


Hi @ruben!

This will be due to 3.15.0’s dropping of the use of server provided activity type models, and should be temporary (hopefully only a few days at most).

Arc works out what activity type to assign to recorded samples by making use of three levels of activity type models:

  • D0 model: A single global model
  • D1 models: City/state sized models
  • D2 models: Neighbourhood sized models

When a new sample is recorded every few seconds it gets passed to those three models (with the relevant city and neighbourhood models loaded, if available), and then the combined results of them are used.

For years now, Arc has built personalised D2 models on your phone, based on your confirmations and corrections, so that the results are personalised to you, your activities, movement patterns, locations, etc. For the D1 and D0 models however it relied on server provided models that were the result of everyone’s “correction sharing”, providing generalised results as a fallback for cases where your personal D2 model either didn’t exist yet or didn’t have enough data yet to be accurate.

Since 3.15.0 Arc no longer uses server provided D1 and D0 models - it builds its own on-device. So all of the activity type classification is based on your own personal data. This makes the results much more accurate, and also removes the one remaining server side component of the app. A big win. (Thanks @Astra for making this happen!)

The catch is that initially your Arc install won’t have your personalised D0 built yet - it’ll take a day or two to get built overnight, depending in iOS’s mood. It also won’t have your own D1 models for each city/state area that you have data for. Again, those will take a day or two to be built overnight.

What’s probably happening in your screenshot is the D1 model for that city region hasn’t been built yet (and maybe even the D0 hasn’t been built yet, from the looks of those oddly bad classifier results). So it’s probably a case of iOS being a bit of a dick and not allowing the nightly model updates task to run to completion.

Typically though iOS isn’t enough of a dick to stop any backlog in that task eventually catching up. So it will self correct (and typically it should be all done within a day). If you only updated to Arc 3.15 recently, that could explain.

But if you’ve been on 3.15 for a while now, it might be worth installing Arc Mini, if you haven’t already, and have at the System Debug Info in there, to see what’s going on. In that view there’s a row for “ActivityType models pending update”. That’ll show you a list of models that’ve been marked for update and waiting for the nightly update task to run.

If the list only has maybe less than 10 models in it, then all is well and it’ll probably get through them by tomorrow. But if the list has many tens of models, then it might take longer - a bit of a backlog.

Aside: The updates task always first picks out the models for the region you’re currently in, updating those first, to make sure that even if there’s a backlog, at least the models needed right now are up to date.

Oh, in Arc Mini you can also check the Classifier Debug Info view, for insight into what models the app is using right now. In there they’re named CD2, CD1, CD0.

The most useful detail for each is probably the “C0.00” value, which indicates how “complete” the model is, with C1.00 meaning 100% complete, ie it has enough data to do its job as best as possible.

If the completeness is lower than maybe 0.20, that’s a sign of weakness for that particular model. Typically the CD0 should be above 0.90, and the CD1 ideally above 0.20 or so - ditto the CD2.

Oh, also make sure you’re definitely on the latest Arc update (3.15.3 is current). There were some important fixes to the new system in the 3.15.1 and 3.15.2 updates.

1 Like