混同行列 真・偽 / 陽・陰性 ( T・F / P・N )

とあるカメラメーカーのエンジニアが顔認証技術を応用して、画面内の人物が「日本人」かどうかを判定できる AI を開発しました.
早速、この AI を搭載したカメラで、たまたま側を通りかかった「東アジア系の男性」を撮影してみました.
すると、AI の判定結果は「日本人ではい」となりました.
この男性が Q1 or Q2 の時、この判定結果は混同行列の要素 1 ~ 4 のうち、どれに当てはまるか選んでください.

Q1:この男性は日本人である.
Q2:この男性は中国人である.

1. 真陽性
2. 真陰性
3. 偽陽性
4. 偽陰性

混同行列 真・偽 / 陽・陰性 ( T・F / P・N )

とあるカメラメーカーのエンジニアが顔認証技術を応用して、画面内の人物が「日本人」かどうかを判定できる AI を開発しました.
早速、この AI を搭載したカメラで、たまたま側を通りかかった「東アジア系の男性」を撮影してみました.
すると、AI の判定結果は「日本人」となりました.
この男性が Q1 or Q2 の時、この判定結果は混同行列の要素 1 ~ 4 のうち、どれに当てはまるか選んでください.

Q1:この男性は日本人である.
Q2:この男性は中国人である.

1. True Positive (TP)
2. True Negative (TN)
3. False Positive (FP)
4. False Negative (FN)

探索空間

以下の文章の空欄 Q1、Q2 に適する言葉を選択肢 1 ~ 4 からそれぞれ選んでください.

探索空間が大きい時には、 (Q1_____) ではなく (Q2____) を使った方が良い.

1. 主成分分析
2. ホールドアウト法
3. ランダムサーチ
4. グリッドサーチ

scikit-leran とは

scikit-learn で取り扱っているカテゴリのうち、正しくないものを 選択肢から 1 つ選んでください.

[選択肢]
1. 前処理: より高度な欠損値の処理や順序特徴量などの処理
2. 分類: ロジスティック回帰やサポートベクターマシンや決定木による分類
3. 回帰: 線形回帰、Lasso回帰、Ridge回帰、SVM回帰などの回帰
4. クラスタリング: 特徴の似ているものでグルーピング
5. 次元削減: 多次元のデータの次元を削減
6. 畳み込み演算:画像から畳み込みによってエッジなどの特徴を抽出
7. モデル選択: 過学習を避ける方法やパラメーターのチューニングやアンサンブル学習

グリッドサーチ

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び、
グリッドサーチによって SVM の最適なハイパーパラメータを探索してください.

import scipy.stats
from sklearn.datasets import load_digits
from sklearn.svm import SVC
# Q1:GridSearchCV クラスをインポートしてください.
from ########## import GridSearchCV

[Q1選択肢]
1. sklearn.model_selection
2. skleran.linear_model
3. sklearn.tree

from sklearn.model_selection import train_test_split
from sklearn.metrics import f1_score

data = load_digits()
train_X, test_X, train_y, test_y = train_test_split(data.data,
data.target, random_state=42)

model_param_set_grid = {SVC(): {
“kernel” : [“linear”, “poly”, “rbf”, “sigmoid”],
“C” : [10 ** i for i in range(-5, 5)],
“decision_function_shape” : [“ovr”, “ovo”],
“random_state” : [42]}}

max_score = 0
best_param = None

for model, param in model_param_set_grid.items():
# Q2:GridSearch でモデルのパラメータをサーチしてください.
clf =  ##########
clf.fit(train_X, train_y)
pred_y = clf.predict(test_y)
score = f1_score(test_y, pred_y, average=”micro”)

if max_score < score: max_score = score [Q2の選択肢] 1. GridSearchCV(model, param) 2. GridSearchCV(model) 3. GridSearchCV(param) # Q3:最適なパラメータを変数 best_param に代入してください. best_param = ########## print("パラメータ : {}".format(best_param)) print("ベストスコア : ", max_score) svm = SVC() svm.fit(train_X, train_y) print() print('調整なし') print(svm.score(test_X, test_y)) [Q3の選択肢] 1. clf.best_ 2. clf.params 3. clf.best_params_

グリッドサーチ

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び、
グリッドサーチによって SVM の最適なハイパーパラメータを探索してください.

import scipy.stats
from sklearn.datasets import load_digits
from sklearn.svm import SVC
# Q1:GridSearchCV クラスをインポートしてください.
from ########## import GridSearchCV

[Q1選択肢]
1. sklearn.ensemble
2. skleran.model_selection
3. sklearn.decomposition

from sklearn.model_selection import train_test_split
from sklearn.metrics import f1_score

data = load_digits()
train_X, test_X, train_y, test_y = train_test_split(data.data,
data.target, random_state=42)

model_param_set_grid = {SVC(): {
“kernel” : [“linear”, “poly”, “rbf”, “sigmoid”],
“C” : [10 ** i for i in range(-5, 5)],
“decision_function_shape” : [“ovr”, “ovo”],
“random_state” : [42]}}

max_score = 0
best_param = None

for model, param in model_param_set_grid.items():
# Q2:GridSearch でモデルのパラメータをサーチしてください.
clf = ##########
clf.fit(train_X, train_y)
pred_y = clf.predict(test_y)
score = f1_score(test_y, pred_y, average=”micro”)

if max_score < score: max_score = score [Q2の選択肢] 1. GridSearchCV(param) 2. GridSearchCV(model) 3. GridSearchCV(model, param) # Q3:最適なパラメータを変数 best_param に代入してください. best_param = ########## print("パラメータ : {}".format(best_param)) print("ベストスコア : ", max_score) svm = SVC() svm.fit(train_X, train_y) print() print('調整なし') print(svm.score(test_X, test_y)) [Q3の選択肢] 1. clf.best_params_ 2. clf.coef_ 3. clf.intercept_