ビジネスシーンで満足度などのアンケート調査を実施する場面は多く、機械学習を活用したその分析手法、さらには満足度の類型ごとの設定すべき指標例についてもご紹介します。
概要
各種満足度の指標は改善しているのに総合満足度が改善しない、分析したはいいものの改善の方向性が見いだせない、などの課題がアンケート分析では起こりがちです。
そこで、機械学習のLGBMとその結果を解釈するPD(Partial Dependence)を活用して、総合満足度と各種満足度のモデルを構築/解釈することで、各種満足度の影響度の大きさや各種満足度が総合満足度にどのように影響しているか(魅力的品質 / 当たり前品質 / 一元品質)などを明らかにしていきます。

分析方法
モデルの構築
総合満足度を目的変数、各種満足度を説明変数として、総合満足度を予測するモデルを構築します。今回は簡易かつ非線形な予測が可能となるLGBMを利用しています。また回答者の属性(性/年代/利用サービス)などが総合満足度にも影響し、アンケートデータと紐づいている場合はこれらもモデルの特徴量に組み込んでもよいでしょう。
import pandas as pd
from lightgbm import LGBMRegressor
TRAIN = pd.read_csv('satisfy_score.csv' , encoding='cp932')
X_train = TRAIN[['各種満足度']]
y_train = TRAIN['総合満足度']
##############################
#モデル作成と予測
##############################
lgb = LGBMRegressor()
lgb.fit(X_train,y_train)
PDによる可視化
PD(Partial Dependence)はブラックボックスになりがちな機械学習の結果(特定の特徴量がモデルの予測にどう影響しているか)を解釈するための手法です。PDの動作原理や考え方についてはこちらの記事をご覧ください。
from sklearn.inspection import PartialDependenceDisplay
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# カラム名に日本語を利用している場合文字化けしてしまうので日本語フォントを指定する
# 例:Meiryoを使用する場合
plt.rcParams['font.family'] = 'Meiryo'
# 特徴量の数に基づいて行列のサイズを計算
n_features = X_train.shape[1]
n_cols = 4
n_rows = (n_features + n_cols - 1) // n_cols # 切り上げで行数を計算
fig, axes = plt.subplots(nrows=n_rows, ncols=n_cols, figsize=(16, 10))
# 余分な軸を削除
for i in range(n_rows * n_cols - n_features):
fig.delaxes(axes.flatten()[n_features + i])
# フォントサイズの設定
plt.rcParams.update({'font.size': 14})
# 部分依存プロットの作成
disp = PartialDependenceDisplay.from_estimator(
lgb,
X_train,
features=list(range(n_features)), ax=axes.flatten()[:n_features])
# 縦軸ラベルを非表示にする
for ax in disp.axes_.flatten():
ax.set_ylabel('')
# x軸目盛をすべての整数値で表示
ax.set_xticks(np.arange(int(np.min(X_train)), int(np.max(X_train)) + 1, 1))
plt.tight_layout()
plt.show()
ヒストグラムの作成
結果の解釈や方向性を検討する際に回答の分布は理解しておいた方が良いためヒストグラムも併せて出力しましょう。
# グラフのレイアウトとサイズの設定
n_features = len(features)
n_cols = 4
n_rows = (n_features + n_cols - 1) // n_cols # 切り上げで行数を計算
fig, axes = plt.subplots(nrows=n_rows, ncols=n_cols, figsize=(20, 5))
# ヒストグラムの作成
for i, feature in enumerate(features):
ax = axes[i // n_cols, i % n_cols]
ax.hist(TRAIN[feature], bins=8, alpha=0.7)
ax.set_title(feature)
# 空のサブプロットを削除
for j in range(i + 1, n_rows * n_cols):
fig.delaxes(axes.flatten()[j])
plt.tight_layout()
plt.show()
解釈の方法
基本の読み解き方
横軸が各種満足度、縦軸が総合満足度となります。それぞれの各種満足度ごとに総合満足度への影響度を可視化することができます。

縦に長いものはその要素が総合満足度への影響が大きいもの、横ばいになっているものは影響度が少ないものといえます。

満足度要素類型
一元品質型
各種満足度と総合満足度が直線的に影響しているもの。満足の比率を増やし、不満足の比率を減らす全全方位的な取り組みが必要です。

魅力的品質型
各種満足度の高評価側(どちらでもない~満足)にて総合満足度が改善するが、低評価側(不満~どちらでもない)ではほとんど変化のないもの。
より積極的に魅力を伝え、積極的に満足度を高めていくことが求められます。例えば、魅力をさらに高めていくためのサービス開発/改善や、(魅力が正しく伝わっていない場合)利用者向けのプロモーションの強化などが考えられます。

当たり前品質型
各種満足度の低評価側(不満~どちらでもない)にて総合満足度が改善するが、高評価側(どちらでもない~満足)では変化のないもの。
満足を増やすのではなく不満を軽減することが求められます。不満から満足までに変化させるには相当なコストと時間が必要になりますが、不満から中立までであればある程度の現実的な投資で済む場合もあります。どの水準であれば顧客の不満が解消されるのかを把握し、それに向けた施策の検討が必要となります。

無関心品質型
各種満足度が総合満足度がほとんど影響しないもの。対策の優先度は低く、放置することも一つの選択肢になります。

逆品質型
充足されているのに不満を引き起こしたり、府充足であるのに満足を与えたりするもの。ほとんど発生しません。

方向性の考え方
この分析結果はあくまで総合満足度と各種満足度の傾向を可視化したものになります。
具体的な施策や方向性は、「PDの結果」×「改善余地(存在比率)」×「施策の実現可能性」で優先度を設定していくとよいでしょう。
例えば、魅力的品質型で満足度を高めることによる影響度が大きいとわかっていても、既に満足しているユーザーが多く分布していたり、満足度平均が高ければ改善余地は限られます。出力した回答のヒストグラムや満足度の平均値なども参考にしながら方針を検討しましょう。
(参考)狩野モデル
この分析手法はマーケティングリサーチにおける狩野モデルの考え方を参考にしています。
狩野モデルはそれぞれの指標とその効果について直接的に聴取するところ、本分析では総合満足度と満足度要因を聴取できます。
また、満足度と各種満足度という自然な聞き方をすることで実際の回答者の心理に近い結果になると考えられます。(狩野モデルでは固有のきき方をするため、回答にぶれが発生する可能性がある)
評価指標の考え方
CS指標として満足度は適切か?
通常、”満足度”といわれる場合、複数の選択肢(満足/やや満足/どちらでもない/やや不満/不満)のうち、満足(TOP1)や満足+やや満足(TOP2)を選択した比率を指標とすることが一般的です。
これらは魅力的品質を評価する際には適切ですが、当たり前品質の指標などでは正しく指標として機能しないことがわかります。当たり前品質の満足を高めても総合満足度に影響しない、不満を解消することが有効であるため。
そのためPDによる満足度の類型により適切に満足度を管理できる指標を設定することが求められます。
魅力的品質
従来の満足度(満足、やや満足と回答した割合)の向上での指標設定が有効です。
当たり前品質
満足度ではなく不満度(不満、やや不満と回答した割合)の低減での指標設定が有効です。不満度を○○%以下に抑える、など。
一元品質
満足(5点)、やや満足(4点)、どちらでもない(3点)、やや不満(2点)、不満(1点)など満足度を点数化しそれらの平均値を指標とすることが有効です。
満足度を上げる方向でも、不満度を下げる方向でも総合満足度に寄与していきます
本分析の留意点
因果関係まで説明できるとは限らない
あくまでも聴取したアンケート結果の傾向を可視化したものであり、「○○の指標が△△改善すれば、総合満足度が××改善する」といった因果関係まで説明できるとは限りません。
アンケートの設問設計が重要
本分析では総合満足度を構成する要素をアンケートにて聴取できていることが前提となります。そのため構成要素が欠けていると正しく分析できません。
また相関が強すぎる要素を複数聴取すると多重共線性により分析結果が歪められる可能性があります。そのため各種満足度については満足度を構成する要素をまんべんなく設定することが望ましいです。
適正なサンプル数が必要
一般的に機械学習での学習データには特徴量1つあたり10~100程度のデータセットが必要といわれています。仮に各種満足度が7個、満足度を5段階、で聴取していた場合、必要となるサンプル数は機械学習が最低限動くレベルで350サンプル(10×7×5)、安定・汎化性能確保ができる理想的なサンプル数としては3,500サンプル(100×7×5)となります。ユーザーの属性情報(性/年代など)を追加した場合さらにサンプル数が必要となります。
普段のユーザーアンケートでどの程度のサンプル数が回収できるか、調査会社を利用する場合は予算などと折り合いをつけながら項目の設定をしていきましょう。