機械学習用データから分かる、不倫への明暗を分ける5つの要因。

興味本位で始めた、機械学習用不倫データセットと、Pythonの機械学習ライブラリscikit-learnを使って、愛妻の不倫を予測した前回の続き。(疑っているわけじゃないです)

結局、どのパラメータが不倫の大きな要因なのか? 不倫を避けるにはどうすればいいのか?

と疑問に感じた人が調べるのは、係数(coefficient)です。

詳しい話はUdemyの実践 Python データサイエンスの講習やWikipediaを参照するとして、ざっくり言うと、「旦那の職業」「妻本人の職業」「子供の人数」・・・などの係数のうち、どれが目的変数(妻が不倫するかしないか)を決定するのに最も影響力を持つか、と解釈しました。

係数は、前回作ったロジスティック回帰modelに格納されているので、一目でわかるように可視化します。

from sklearn.linear_model import LogisticRegression
from sklearn.cross_validation import train_test_split

# トレーニング用データと確認用データを分離
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, train_size=0.9)

# モデルを作成
model = LogisticRegression()
model.fit(X_train, Y_train)

# 係数を可視化するためにDataFrame化
coef = DataFrame(model.coef_[0])
coef.columns = ["value"]

# X軸のラベルと合わせてグラフ描画、画像ファイルに保存
plt.plot("value", data=coef)
plt.xticks(coef.index, X.columns, rotation=90)
plt.savefig("coef.png")

その結果がこれ。

見てみると、以下の5つが不倫させる係数上位5つ。

  1. 妻本人の職業: managerial, administrative, business (経営管理者)
  2. 妻本人の職業: professional with advanced degree (上位学位を持った専門職)
  3. 妻本人の職業: white-colloar (ホワイトカラー労働者のこと?)
  4. 旦那の職業: white-colloar (ホワイトカラー労働者のこと?)
  5. 妻本人の職業: teacher counselor social worker? 看護師、アーティスト、ライター・・・って幅広すぎ

逆に、不倫させない係数は以下の5つ。

  1. rate marriage: ~~結婚式の値段?~~ 結婚に対する満足度
  2. religious: 信心深さ
  3. age: 年齢
  4. children: 子供の人数
  5. yrs_married: 結婚生活の年数

~~Rate marriageの訳は、これで合ってるのかな・・・?~~ @dgakane さんに訂正いただきました。あざっす!

不倫させない係数はともかく、不倫させる係数は全て職業絡みってのが興味深いですね。No.5に含まれる職業の幅が広過ぎるのが若干気になりますが・・・。

ただ、これが職業のせいなのか、職業による仕事への拘束時間のせいなのか、ちょっと判断しづらい気もします。

職業からくるパラメータをもっと細分化して、労働時間とか帰宅時間とか、旦那が子育てに費やす時間とかのパラメータがあると、さらに面白いかもですね。

==※:念のため注意。この記事に書いてある不倫の要因とか、ただのネタなので信用しないでくださいね。==