# Computational Characterization of Activities and Learners in a Learning System
## 3 Proposal
### Variables Definition
#### 3.3.3 Learners' Vector Update  
When the learner completes an activity, a value is computed, in a way that can vary according to the type of the activity; to be able to measure how the learner has achieved the activity, we need a numerical value. This obtained result is used to update the learner's feature vector based on the vector if the activity that has just been done. It is, as we said before, a cycle of updating the feature vectors of the learners as they complete the learning activities. In that way, a learner will be characterized by the activities which he/she has done. In this process, the learner's feature vector will be updated variable by variable in a different way, since each variable needs to be computed according to different factors. But there will be a common factor that affects all the variables, i.e., the time. While the learner goes forward in the learning process, their skills develop, their experience increases and so their features also change. Therefore, a recently done activity is more relevant than one that was done some time ago. This is mainly important in the case of variables whose values represent a percentage of completion, such as _learningStyle_, _cognitiveLevel_ and _knowledgeType_. These variables are represented by the percentage that each of their own subtypes is developed, so each time a new activity of that concrete subtype is completed, the corresponding value is updated using the resulting evaluation of the new activity, hereafter called \(e\). To take the time aspect into account, we firstly introduce a time-dependent variable which may be understood as the instant an activity has been completed, following a chronological order, called \(t\). An activity at instant \(t\) was performed before one at instant \(t\)+1. Also, we use a reduction factor \(\lambda\) with a value between 0 and 1, which represents how the weight of older activities decreases. The computation of the new value for each corresponding subtype is named \(v_{x}\), where \(v\) corresponds to the value of the subtype and \(x\) to the subtype affected. This value depends on the instant \(t\) in which the current activity was performed, representing \(v_{x}{}^{(t)}\) as the value for the subtype \(x\) obtained in an instant \(t\), and on all the previous values computed for each activity belonging to the same subtype. It is performed in a recursive way, given \(e(a_{i})^{(t)}\) as the value obtained for an activity \(a_{i}\) made in the instant \(t\). In the case of the first instant ( \(t\)= 1), the new value \(v_{x}\) is the same as the recently obtained one, so:  
\[v_{x}{}^{(1)}=e(a_{i}){}^{(1)} \tag{1}\]  
Then, any \(v_{x}\) computed in the instant \(t\) is obtained as follows:  
\[v_{x}{}^{(t)}=\frac{v_{x}{}^{(t-1)}\cdot(t-1)\cdot\lambda+e(a_{i}){}^{(t)}}{( t-1)\cdot\lambda+1} \tag{2}\]  
Therefore, when the learner completes an activity, his/her feature vector variables, i.e., learning style, cognitive level and knowledge type, will use this formula to update their values, considering only the subtypes corresponding to the activity's feature vector. But in order to avoid only one subtype of any of those variables being updated, we use the same formula for the rest of them, but with a value \(e(a_{j}){}^{(t)}=0\). In this way, the value of the corresponding subtype will decrease when it is not being developed. As such, besides reducing the weights of all the previously performed activities of a concrete subtype, the value of the other subtypes will be also affected, aiming to take the time factor into account for them. For example, given an activity \(a_{1}\) vector \(A\) = _[difficulty = 5.6, learningStyle = \"Creating\", cognitiveLevel = \"Remember\", knowledgeType = \"Conceptual\"]_, that has been completed with a result \(e(a_{1})\) = 76, the following variables of the learner vector \(L\) will be modified:  
* _learningStyle_.