
執筆者
M.O.
陽性と陰性とは何か

タイトルの「陽性」と「陰性」という、この二つの言葉を聞いたとき皆さんは何を思い浮かべるでしょうか。
広く一般的に思い浮かべるのは、病院の検査でしょうか?
陽性であれば、
陽性だった場合には、検査の結果に明るい、検査対象に該当した、つまりは検査した病気であるという形ですね。
陰性であれば、
検査対象に該当しない、つまり対象の病気ではないといったところでしょう。
大雑把な言い方ですが、項目に対して「はい」か「いいえ」かであると思って差し支えないでしょう。
では、ITエンジニアにおける検査とは何でしょうか?
これは、開発におけるテスト工程にあたると言えるでしょう。
テスト項目を用意
はい(YES) 陽性:期待通りならば陽性
いいえ(NO) 陰性:期待した結果にならないようならば陰性
新たな疑問

さて、ここで新たな疑問が生まれます。
作成したプログラムとテスト項目は本当に正しいでしょうか?
ケース1:テスト時の入力は正しいのに、想定した結果が出力されない。
ケース2:逆にある機能が考慮されていない入力に対して、出力が正常で正しく見えてしまう。
等といった可能性は無いのでしょうか?
偽陽性と偽陰性
こういった要素を、「偽陽性」「偽陰性」と呼びます。
・偽陽性
予想は「陽性」だったのに、得られた結果が「陰性」であった場合を擬陽性
・偽陰性
予想は「陰性」だったのに、得られた結果が「陽性」であった場合を偽陰性
偽陽性・偽陰性が問題となる場面

偽陽性や偽陰性といった要素は、プログラムのテスト時に限った話ではありません。
ある意味でプログラム作成時によるものとも言えるかもしれませんが、話題となるのは大きく二つあると考えています。
セキュリティソフト
本来問題のないソフトを起動した際に、セキュリティソフトによってブロックされてしまうということがよくあるのではないかと思います。また、逆に危険なソフトが安全と判断されてしまうのはとても恐ろしいことです。
AIによる処理
質問に回答してくれるAIは非常に便利ですが、果たしてその回答は正しいでしょうか?
同様に、AIが提示する情報は本当に存在するデータに基づく物でしょうか?
AIの回答が、あたかもありそうな話であるが、その内容はエビデンスの無い作り話であったという話もあります。
偽陽性の具体的な事例
01:スパムフィルター
正常なメールをスパムだと誤って判定し、迷惑メールフォルダに振り分けてしまう。重要なメールが埋もれてしまい、見逃すリスクが生じます。
02:ウイルス対策ソフト
無害なプログラムやファイルをマルウェアだと誤検知し、隔離・削除してしまう。これにより、システムの正常な動作が妨げられる可能性があります。
03:IDS/IPS (不正侵入検知/防御システム)
正常な通信を不正アクセスだと誤って判断し、通信を遮断してしまう。業務システムへのアクセスが妨げられ、ビジネスの停滞につながることがあります。
偽陽性と偽陰性のトレードオフ

日々変化・進歩するセキュリティにおいて、偽陽性・偽陰性の双方を完全に無くすことは大変難しいことです。
この二つの関係性は以下の通りです。
検知の厳しさを上げる
偽陰性を減らすために、少しでも疑わしいものを「問題あり」と判定するようにすると、偽陽性が増えます。
検知の厳しさを下げる
偽陽性を減らすために、誤検知を避けるようにすると、本当に危険なものまで見逃してしまう(偽陰性が増える)可能性があります。
最適なバランスを見つける
ここまで、偽陽性と偽陰性について語ってきましたが、結論としましては「どちらのエラーをより許容できるかを考慮して最適なバランスを見つけることが重要」という非常に高度なことを求めるしかありません。
まずは陽性と陰性という二極論で考えるのではなく、偽陽性と偽陰性を含めた四象限で考える必要がある。という意識付けからが必要であると考えていただけると良いのではないでしょうか。













