用戶體驗數據的多維度處理:PC A法及碎石圖
無關乎算法原理,本文將從用戶體驗的角度,著重分析多維度數據處理的降維方法:主成分分析法(PC A)
主成分分析法(PC A):類似SUS,該方法能夠將諸多因子如(滿意度,可用性,簡易性等多指標轉化成低維度數據,以數字或圖表的形式直觀呈現),并介紹反映維度數量與誤差性關系的圖表–碎石圖及其算法(基于PC A)。
前文我們提到了用戶體驗數據化的廣泛例子–系統可用性量表SUS,但是在實際用戶體驗研究過程中,不光是可用性測量,還涉及易用性,滿意度等等其他維度的考量,甚至有些原始數據可能連有哪些維度都是不清晰的,需要研究人員來進行判斷。在這種情況下,基于個人經驗的判斷已經無法適應,我們需要借助計算機與統計學知識來讀懂數據以支持產品決策。
筆者并不是理學出身,但基于實際作業的需要,自學了相關課程,感觸頗深。如果有線性代數和統計學背景自然是最好的,但是如果不具備,也完全沒問題。對于這些方法,如果以產品經理的標準,我們最需要是使用好這些方法,創造價值,所以不用擔心。本文將避開算法原理,而重點分析設計邏輯和應用場景。
主成分分析法(PC A)設計邏輯
回顧一下之前的系統可用性量表SUS(詳情請看《淺析用戶體驗數據化》),它本質上是通過投影的方式,將原本兩個維度的數據(可用性與易用性)轉化在單個軸上。在多維度數據處理中,其核心也是如此也是將:多維度空間的數據通過投影的方式轉化在低緯度中。
線性代數告訴我們,如果是單純的降維,有無數種方式可以進行,難的是在降維過程中,保持原有數據的特征也就是相關性。若兩個因子如可用性,易用性是強相關且是線性相關,先假設可用性越高,易用性越高,那么降低維度后,數據集也應當存在這樣的特性,甚至能夠保持當可用性提高了X%時,易用性也會提高相應的程度。
這里需要注意:數據降維之后一定會損失一定的信息,這沒辦法避免。PC A做的就是盡量保留主要特征而減弱冗雜信息,所采用的方式是通過讓各個原始數據在轉化之后,相距盡量大,也就是差異性最明顯。
這里先舉一個簡單例子。比如我們分別給5個產品做了SUS測試得到了每個產品的可用性,易用性指標,我們將其表示在二維圖上。
之后我們在將這個兩維數據降成一維的。就是找一條軸,然后得到各個產品指標在這個軸上的投影,且滿足投影之后的差異性最大。
例如產品A(1,2)和產品B(1,0)的關系就保留在了這條軸上。但如果我們投影在了y軸,A和B就重疊了,就無法比較出A和B哪個更優,即喪失了易用性的比較。而PC A算法保留了這個特性,我們通過處理后的數據可以方便的比較各個產品的優劣。
理論上原本有幾個維度的數據,就有幾個特征向量。各個特征向量之間正交。也就是說明,通過特征向量轉換后的維度之間是相互獨立的。詳細的會在后面的實例中說明。
這里需要特別指出,PC A方法不適合用于高階相關性的數據,而適合用于線性相關。但對于一般的智能產品領域,或App,網頁等互聯網產品,社會學研究等,PC A已經能應對絕大部分情況了。
PC A實際案例分析
我將以一個實際的作業來分析PC A的使用方法和注意點。(筆者是用 Matlab 寫的程序)。當然,最重要的不是程序而是理解PC A是怎么回事。先附上代碼。
%data 為輸入的數據集,行表示項目,項目之間是并行的例如產品1,產品2或者用戶1,用戶2,
%各列表示描述項目的維度比如,易用性,可用性,滿意度等
data = shishen;% PCA Template to data
% n 為測量的項目數量,p則表示描述的維度數量
[n,p] = size(data);% PC A運算過程,這里就不再介紹,有興趣可以參考《Exploratory Data Analysis with MATLAB》 。我這里將原數據集其降成一維。
datac = data – repmat(sum(data)/n,n,1);
covm = cov(datac);
[eigvec,eigval] = eig(covm);
eigval = diag(eigval);
eigval = flipud(eigval);
eigvec = eigvec(:,p:-1:1);
pervar = 100*cumsum(eigval)/sum(eigval);
g =zeros(1,p);
for k = 1:p
for i = k:p
g(k) = g(k) + 1/i;
end
end
g = g/p;
propvar = eigval/sum(eigval);
avgeig = mean(eigval);
ind = find(eigval > avgeig);
l=length(ind);%P 控制轉換成幾個維度,若需要轉換成X維,則p= eigvec(:,1:x);
P = eigvec(:,1:1);
%dataP 即是最后我們得到的降維之后的數據集
dataP = datac*P;
原數據說明
這里我們收集了80位用戶在使用某款App時候,在各個任務環節上使用的時間和整體任務失敗率,以此得到用戶在這款產品上的易用性數值。在以同樣的方式進行對競品的分析,以處理后的數據進行比較,期望得到有哪些環節是關鍵并且需要改進,產品優勢等其他重要結論。
數據需要具有線性相關性
線性相關是保證我們可以找到投影基準的根本,詳細的可以參考線性代數等相關知識。我這里指出一個小技巧,在前期數據收集的時候,可以盡量將數據好和壞變化統一。例如上述的例子,我們認為在任務上的耗時越長,表示產品越差。因此使用項目失敗率做指標而不是項目成功率,因為失敗率越高表示產品越差,而成功率越高表示產品越好和前面的數據變化相反了。通過這樣的處理,PC A算法得到的差異性會更加明顯。
PC A處理結果及其意義
將以上數據集,用PC A方法降維后,我們得到以下數據集,將這5維的數據轉化成只有一個維度,經過與元數據的比較和轉換基的數值,我們發現這個分數是易用性維度上的比較。
通過分析這個單純的數據表格,我們至少可以得到以下結論
- 該App具有一定學習成本,新手導引需要改進,項目分布差值廣泛
- 該App在易用性上存在很大改進空間
在中間過程中,我們得到了以下附屬的結果
轉化矩陣P
轉換矩陣p=[0.0535;-0.9984;-0.015;0.0011;9.9375e-05]。(最大特征向量)。這就是降維轉換公式,我們之后再其他產品分析中,用相同的轉換矩陣降維就能夠像系統可用性量表(SUS)一樣進行直觀的比較分析了。
那么差值是否具有意義?答案是有意義,這里的差值是可以再次進行運算的。因為轉化方程是一致的,所投影的空間也是一致的,可行性單位也是固定的。但是需要注意,經過轉換后的數據集是無法再還原到原先的數據集的。因此我們雖然能夠比出可行性高低,但是在轉換到具體的項目上還需要原來數據的處理。
比如我們在這個項目過程中,通過對最高易用性數值與最低數值原數據集的比較,可以得到各個項目的差異大小。例如得到24號用戶達到的易用性數值最高,16號用戶易用性最小。然后再原數據中尋找,得到哥哥項目的差是【26,-384,9,-5,0.05】,結合轉換矩陣p,我們可以窺視到以下信息:
- 任務1與任務2在設計上存在沖突,若用戶項目A上耗時時間短則在項目B上花費的時間就長。理由是:兩者轉換值為負相關。
- 任務2,任務1是關鍵任務,需要在下一版本中著重設計。項目3,4影響不大,非關鍵任務,用戶犯錯率基本穩定。理由是:任務1的1s對應的數值是0.0535的數值變化而任務2中的1s對應的是-0.9984的數值變化。兩者對于最后的分數的貢獻是不一致的。
數據維度-碎石圖
但是以上的轉換后的數據有多少可信度呢?理論上,所降維度越低則損失的信息越多。那么如何判斷應該降低到幾維空間中呢?判斷方式就是通過轉換矩陣(特征向量)的長度。特征向量長就意味著,在這個維度(例如上述的可用性)上的變化明顯,相反,若特征值短就意味著,在這個維度上,數據基本沒有差異性因此沒有分析價值(大家都一樣)。先附上程序。
figure, plot(1:length(eigval),eigval,’ko-‘)
title(‘Scree Plot’)
xlabel(‘Eigenvalue Index – k’)
ylabel(‘Eigenvalue’)
由此看到,這個數據集中只存在一個維度上的變化,這就是主要成分。因此降維之后的信息是具有可信度的,保留了原數據70%~95%的信息。(記住就好)
通過碎石圖,我們可以快速的明白數據中有哪些維度需要進行分析。這個k就是碎石圖中的拐點,代表了數據需要降低到k維空間中,以保留主要信息。
后記
對于產品經理或者非數據挖掘從業者,了解PC A算法將會使你的分析更加精準有效,使結論更具有說服力,作為初期的用戶研究綽綽有余。但本文也只是從用戶體驗這個側面展示了這個算法的運用。
通過PC A算法我們可以分析出(不止于此)
- 項目之間的相關性(沖突還是互利)
- 項目之間的重要層級和所影響的維度
- 產品主要維度的構成
這些問題憑借簡單的直方圖等和肉眼是很難察覺的。因此,毫無疑問,一個掌握數據分析的產品經理所能看到的問題必將更加深刻和現實。
參考文獻:
《Exploratory Data Analysis with MATLAB》 Wendy L. Martinez, Angel Martinez, Jeffrey Solka
本文由 @kieran 原創發布于人人都是產品經理。未經許可,禁止轉載。
- 目前還沒評論,等你發揮!