自然発生的なヒット率
この演習では、再びクレジットカードの取引データを使います。特徴量とラベルは前の章と同様で、データは強く不均衡です。すでに特徴量 X とラベル y を用意してあり、どちらも NumPy 配列です。
まずは、もしすべてを非不正(non-fraud)と予測した場合の 「自然な正解率(natural accuracy)」 を把握するために、データセット内で不正がどの程度発生しているかを確認します。何もしない場合よりも良い予測を得るには、どの水準の「正解率」を上回る必要があるかを理解することが重要です。続く演習では、不正検知のための最初のランダムフォレスト分類器を作成します。これは今後の演習で改善を目指す「ベースライン」モデルとして使います。
この演習はコースの一部です
Pythonで学ぶ不正検知
演習の手順
- ラベル
yの長さを取り、観測数の合計を数えます。 yに対してリスト内包表記を使い、非不正(non-fraud)の件数を数えます。yは NumPy 配列なので、この場合は.value_counts()は使えない点に注意してください。- 非不正の件数を総観測数で割り、自然な正解率を計算します。
- パーセンテージを出力(print)します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Count the total number of observations from the length of y
total_obs = ____
# Count the total number of non-fraudulent observations
non_fraud = [i for ____ ____ ____ if i == 0]
count_non_fraud = non_fraud.count(0)
# Calculate the percentage of non fraud observations in the dataset
percentage = (float(____)/float(____)) * 100
# Print the percentage: this is our "natural accuracy" by doing nothing
____(____)