この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は オ

解説

マーケットバスケット分析(関連度計算)プログラムの空欄a, b, cを問う問題です。関連度の公式:Lxy = (Mxy × 全注文数) ÷ (Kx × Ky)。Mxy=商品xと商品yが同一注文に含まれる注文数(共起数)。Kx=商品xが含まれる注文数。Ky=商品yが含まれる注文数。全注文数=ordersの要素数(注文配列のサイズ)。プログラム内での変数の対応:arrayM[i]はMxy(xとi番目の商品の共起数)を格納した配列。arrayK[i]はKy(i番目の商品の購入数)を格納した配列。ordersの要素数が全注文数に対応。関連度計算式をコードに落とすと:L = (arrayM[i] × ordersの要素数) ÷ (Kx × arrayK[i])の形になります。正解はe(a=arrayM[i], b=arrayK[i], c=ordersの要素数)で、aが分子のMxy(共起数)、bが分母のKy(商品iの購入数)、cが全注文数に対応します。例でのLAB検証:MAB=2, 全注文数=6, KA=4, KB=3 → LAB=(2×6)/(4×3)=12/12=1.0(問題文の例と一致)。

なぜ他の選択肢は違うのか

選択肢 ア
aとbの変数が逆(arrayK[i]が分子、arrayM[i]が分母相当になる)かつ全注文数にallItemsの要素数(商品種類数)を使っています。全注文数はordersの要素数(注文の個数)であり、商品の種類数ではありません。
選択肢 イ
aとbの変数が逆で、さらにcに関してはordersの要素数が正しいです。関連度の分子はMxy(共起数)でありarrayM[i]が対応します。a=arrayK[i](購入数)を分子にすると計算式の意味が変わります。
選択肢 ウ
aとbが逆かつcにotherItemsの要素数(対象商品以外の商品数)を使っています。全注文数の参照先として適切ではありません。
選択肢 エ
a=arrayM[i], b=arrayK[i]は正しいですが、cにallItemsの要素数(商品種類数)を使っています。全注文数はordersの要素数であり、商品の種類数(allItems)ではありません。
選択肢 カ
a=arrayM[i], b=arrayK[i]は正しいですが、cにotherItemsの要素数を使っています。otherItemsは対象商品以外の商品を格納した配列であり、全注文数とは無関係です。

解くときのポイント

関連度Lxy = (Mxy × 全注文数) ÷ (Kx × Ky)を変数名と対応付ける。arrayMは「共起数(M)」、arrayKは「購入数(K)」、ordersは「注文データ(全体の数が全注文数)」。公式の各要素と変数の対応を確認してから選択肢を選ぶ。