0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

窃盗罪と強盗罪の判例を用いたランダムフォレストによる学習

Posted at

はじめに

機械学習の参考書を読んでいる時に、コンピューターでも裁判官の真似事ができそうだと考え、実際に行動しました。
が、結果的に、自然言語を扱える程のデータが集まらず、これを断念することになりました。
しかしせっかく集めたデータ。死蔵させるのは勿体無いと思い、本稿を書くに到りました。

データについての説明

import pandas as pd
import numpy as np
import sklearn as sk
import sklearn.ensemble as ske
import sklearn.model_selection as ms
import matplotlib.pyplot as plt
%matplotlib inline
data = pd.read_csv(r"D:\pythondata\data.csv")

使用したデータは全て、裁判所がネットで公開していたものです。
適用された刑法は60,66,68,71,235,236になっています。
―住居侵入等、牽連犯として処理されたものは省略。準窃盗が一件。共同正犯が複数ありましたが、これも省略。―
また、複雑化を避ける為に、同時的併合罪は全てデータから外しました。
執行猶予についても、扱いに悩み、これもデータから外しました。
その結果。使用できたデータ数はとても少なく、統計としての価値は低いです。(強盗罪を加えたのもこれが理由。歪みが大きくなるだけでは?という指摘はご容赦)

ランダムフォレスト

reg = ske.RandomForestRegressor()
X = data.drop(["judge"] ,axis = 1)
y = data["judge"]
reg.fit(X,y)
fet_ind = np.argsort(reg.feature_importances_)[::-1]
fet_imp = reg.feature_importances_[fet_ind]
fig, ax = plt.subplots(1, 1, figsize=(8, 3))
labels = X.columns[fet_ind]
pd.Series(fet_imp, index=labels).plot('bar', ax=ax)
ax.set_title('graph1')

random.png

ランダムフォレストを使った理由は、これが一番いい結果だったからです。
データの評価項目は暴力、被害額、常習性、不法侵入、計画性の五つです。
グラフはそれらが結果に対してどれだけの影響を与えたのかを示しています。
これを見てわかるように、被害額と暴力に重みが偏重していることが分かります。
理由として、計画性においては突発的窃盗行為というものがそもそも少ない。
住居侵入を一応設けたが、判決に与える影響はあまりなかった。(窃盗罪自体が、それを予期してデザインされている?)
執行猶予が付いた事例を省いた為に、常習性という項目が有名無実になった。などが、挙げられると思います。
中立なデータでこれをやれば、常習性はもっと評価されていたと思います。
次は実際にこのデータを機械に学習させて、どのような判断が出来るのかを見たいと思います。

学習

(X_train, X_test, y_train, y_test) = ms.train_test_split(X, y, test_size=0.2, random_state = 1)
reg.fit(X_train, y_train)
ypred = reg.predict(X_test)
print(reg.score(X_train, y_train))

0.9182638752147211

guraf = pd.DataFrame( {"予想した判決":ypred,
                       "実際の判決":y_test})               
display(guraf)

2019624.png

結果はこのようになりました。
私は刑法学者ではないので、どれだけのズレが許容範囲になるのか判断がつきません。
ただ、ズレが大きいものに関して確認すると、強盗罪のケースにおける、情状酌量の有無が要因として大きいことが分かりました。
よくよく考えてみると、情状酌量という要素を設けなかったのはかなり大きなミスです。

まとめ

本来の用途ではないデータの使用でしたが、実際にやってみると多くの問題点が発見できました。
具体的には、上述した通り、情状酌量という新たな判断基準の追加。
複数犯において、メンバーがそれぞれに果たした役割の評価。(構成要件を足がかりにすればいい)
社会復帰の可能性。
その罪が侵害した権利の程度。(特にこれは、センセーションな事例を扱う時ほど重要になる。)
等。です。
最後に、同じ試みをしている同志がいるのなら、この分野で先行しているアメリカや中国の論文を読んでから手を動かした方が絶対に良いと思います。
私もその内読みます。そのうちに・・・。

参考にしたURL
https://ipython-books.github.io/86-using-a-random-forest-to-select-important-features-for-regression/

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?