makaishi2/profitable_ai_book_info

1点教えてください

Closed this issue · 4 comments

赤石先生、とても素晴らしい本をありがとうございます。
製薬会社勤務でPython を学んでおります小野塚と申します。

P213で、

y=0の確率値取得

y_proba0 = algorithm.predict_proba(X_test)[:,1]

と書いてあるのですが、P152の図4-4-4ではy=0の確率は左、y=1の確率は右になっています。
2回目の拝読なのですが、ここで詰まってしまいました。
y=0の確率であれば、
y_proba0 = algorithm.predict_proba(X_test)[:,0]

とならないのでしょうか。

すみません。質問を書いたあとでもう一つ質問が出たのですが、P280ページで、商品Aと商品Bが完全に独立の場合
1と書いてるのですが、S(商品 A AND 商品B)が0になるので、0ではないでしょうか。

とても素晴らしい本で、いろいろと読みましたが、この本を何周もしようかと思っております。
何卒、ご教示いただけますと幸いです。
よろしくお願い申し上げます。

小野塚様、
本書を本当に細かいところまでお読みいただき、大変ありがとうございます。

2点いただいている質問事項のそれぞれについてお答えいたします。

まず、最初の質問ですが、ご指摘は正しくて、本誌の記載が誤植になります。
正しくは

y=1の確率値取得
y_proba1 = algorithm.predict_proba(X_test)[:,1]

となるべきです。
ただ、その後のグラフ描画の結果解釈では、y_proba1としての解釈をしているので、グラフの説明のつじつまはあっていました。

2つめの質問は、こんなことを考えてみて下さい。
今、100人の顧客がいて、各自が二回コインを投げて、最初に表が出たら商品Aを購入し、2回目に表が出たら商品Bを購入するものとします。このようなパターンが「商品Aと商品Bが完全に独立」なケースです。
このような状況を想像すると、「商品Aと商品Bを両方買う」顧客が全体の1/4の約25人、「商品A」を購入する顧客は全体の1/2の約50人、「商品B」を購入する顧客も全体の1/2の約50人になるはずです。
この場合、
S(A and B) = 1/4
S(A) = 1/2
S(B) = 1/2
なので、サポート値は1になります。
逆にサポート値が1より大きいということは、今、思考実験したコイン投げのようなことでなく、「商品A購入」と「商品B購入」の間になんらかの因果関係があることになり、その大きさが因果関係の度合いを示すことになります。

赤石先生

丁寧にご説明いただき、ありがとうございます。
納得しました。
AとBが独立の定義が分かっていませんでした。
ちなみに、「Pythonで始める機械学習」などの比較的、評判が良い本も読んだのですが、
コードの説明が少なく、私にはわかりにくく、私はこの先生の本の方が信頼できると思っております。
また、AIの数学の本も購入させていただきました。
ありがとうございました。

小野塚様
「ディープラーニングの数学」もご購入いただいたとのこと、誠にありがとうございます。こちらの書籍もよろしくお願いいたします。

上記のサポート値のたとえ話、値が1より大きくなる具体的ケースも思いついたので、改めてお伝えします。
今度は、100人の顧客が各自サイコロを1回だけ振ります。そして出た目が偶数なら商品Aを購入し、4以上なら商品Bを購入するものとします。
この場合、
S(A and B) = 2/6 = 1/3 (目が4の場合と6の場合)
S(A) = 3/6 = 1/2
S(B) = 3/6 = 1/2
なので、サポート値は1.333.. となり、1より大きな値を作り出せました。

ご指摘いただいた件に関して正誤訂正に追加しました。

https://github.com/makaishi2/profitable_ai_book_info/blob/master/refs/errors.md

今回は大変ありがとうございました。今後も不明点があればご質問いただければと思います。