A method of operating a navigation system, wherein the navigation system comprises a server and a plurality of navigation client devices (402, 402'), the method comprising: each navigation client (402, 402') device using a respective location sensor, over time, to collect respective navigation history data representative of locations visited by the navigation client device (402, 402'), and storing the navigation history data in a memory of the navigation client device (402, 402'); each navigation client device (402, 402') using a respective training set of the navigation history data to train a respective local machine-learning model, stored in the memory of the navigation client device (402, 402'), to determine a respective set of updated parameters for the local machine-learning model; each navigation client device (402, 402') transmitting, to the server, model data comprising the respective set of updated parameters; each navigation client device (402, 402') transmitting, to the server, attribute data comprising a respective value of a common property of the respective training set used to determine the set of updated parameters; the server receiving, from the navigation client devices (402, 402'), the model data and the attribute data; the server determining an aggregated set of parameters from the sets of updated parameters by performing a weighted aggregation in which each of the sets of updated parameters is weighted in dependence on the value of the common property of the respective training set used to determine the set of updated parameters; the server transmitting data comprising the aggregated set of parameters to a first navigation client device (402, 402') of the plurality of navigation client devices; and the first navigation client device (402, 402') using the aggregated set of parameters to update the local machine-learning model stored in the memory of the first navigation client device (402, 402'); wherein the common property comprises the size of a geographical area covered by the respective training set. each navigation client (402, 402') device using a respective location sensor, over time, to collect respective navigation history data representative of locations visited by the navigation client device (402, 402'), and storing the navigation history data in a memory of the navigation client device (402, 402'); each navigation client device (402, 402') using a respective training set of the navigation history data to train a respective local machine-learning model, stored in the memory of the navigation client device (402, 402'), to determine a respective set of updated parameters for the local machine-learning model; each navigation client device (402, 402') transmitting, to the server, model data comprising the respective set of updated parameters; each navigation client device (402, 402') transmitting, to the server, attribute data comprising a respective value of a common property of the respective training set used to determine the set of updated parameters; the server receiving, from the navigation client devices (402, 402'), the model data and the attribute data; the server determining an aggregated set of parameters from the sets of updated parameters by performing a weighted aggregation in which each of the sets of updated parameters is weighted in dependence on the value of the common property of the respective training set used to determine the set of updated parameters; the server transmitting data comprising the aggregated set of parameters to a first navigation client device (402, 402') of the plurality of navigation client devices; and the first navigation client device (402, 402') using the aggregated set of parameters to update the local machine-learning model stored in the memory of the first navigation client device (402, 402');