エントロピー&ジニ関数について。
簡単に書いてあるけど、これが本質なんだよなあ。。。
https://qiita.c【機械学習】決定木をscikit-learnと数学の両方から理解する
1.
>機械学習をやってみたいと思った場合、scikit-learn等を使えば誰でも比較的手軽に実装できるようになってきています。但し、仕事で成果を出そうとしたり、より自分のレベルを上げていくためには「背景はよくわからないけど何かこの結果になりました」の説明では明らかに弱いことが分かると思います。
Scikit-learnを使えば、確かに簡単に実装できます。私は、タイタニック号の生存者予測をしました。しかし、数学的に説明できないと確かに、気持ち悪い!下記記載も非常に分かり易かった。clf=clf.fit(x,y)のクラスfitで「学習させる」と言うコマンドなんですねえ。。。
2.
>いよいよ、モデル構築のコードです。
clf = DecisionTreeClassifier()
clf = clf.fit(X, y)
単純なモデルであればこれで終わりです。
clfという変数にこれから決定木モデルを作ります!と宣言のようなことを行い、次の行で、そのclfに準備したXとyをフィット(=学習)させるというイメージです。
3.
>実際にpythonでモデルを動かす際は、3で紹介したコードに引数として下記のように設定できます(下記は不純度の指標をジニ係数にした場合。エントロピーにしたい場合はここをentropyにします)。
clf = DecisionTreeClassifier(criterion="gini")
clf = clf.fit(X, y)
それと、これもDecision Treeの基本として、分かり易かった。
さて、ここで疑問が湧きました。Scikit-Learnのライブラリを使えば、簡単に機械学習の実践が出来るけど、誰がやっても同じ結果になるんじゃない? と言う超素朴な疑問です。
そんな訳で、祭日の本日(2/11)は、手元にある古い日経ソフトウェア誌(2019年1月号)を読んでおりました。分かったことは、デフォルトで、Scikit-learnを使えば勿論、誰がやっても同じになるんだが、いわゆるパラメーターチューニング(決定木の深さをチューニングするとか)をする事で、精度をカスタマイズできるとの事。
ついては、次の目標は、「ランダムフォレスト」のクラスをよく理解することですなあ。。
頑張ります!
コメント
コメントを投稿