##蘭学事始めに出てくる逸話(フルヘッヘンド)
この逸話は実際には存在しないものと言われるけど・・・・。
プログラマーではない初心者が機械学習を行うためにPythonの勉強をいきなり始める時の状況が、杉田玄白らがオランダ語のターヘルアナトミアを和訳して解体新書を作った時と同じ状況になっていると思ってます。
その理由とpythonを勉強する時のフルヘッヘンド勉強法を書いてみます。
###フルヘッヘンドの逸話とは
wikipediaの蘭学事始めのところに出ています。そこを引用
「鼻とは顔の中でフルヘッヘンドするものなり」という文の「フルヘッヘンド」という単語の意味が分からず、用例を集め「庭を掃けば、塵芥集まりてフルヘッヘンドする」などから考えた結果、「うずたかい」という意味だと推測するにいたる経緯は、語学教育における「安易に辞書をひかず意味を推測する」という教育とあいまって教育に用いられた。[1]
##初心者にとって、機械学習をやるためのPythonの勉強は何が問題になるのか?
問題はたくさんありますが、会社で初心者用のpythonの機械学習教育テキストを作りました。その時にいろいろなテキストやHPやオンライン講座を見て感じたことを書きます。
###1)意外とプログラムの流れをちゃんと説明しているものが少ない。
プログラムの流れは、本とか全部読めばわかるが、最初にこんな感じでなぜ示してくれない??
ⅰ)必要なライブラリーを読み込む(import
)
ⅱ)pandas
にてデータ読み込む
ⅲ)pandas
にて、特徴量と目的変数をわける
ⅳ)train_test_spilit
で、学習用データとテストデータにわける。
ⅴ)scikit-learn
の中のアルゴリズムを選んで、学習(fit
)と予測(predict
)する
ⅵ)精度を確認する
こういう流れの説明が一つあるだけで、ずいぶんわかりやすくなるのに、意外とこういうのがない。つまり、どこで何を使うかが、最初はよくわからない。
こうやってまとめると、必要最小限で覚えないといけないコマンドもわかる。
###2)本を買ってくると、既にPython
のバージョンが変わっていて、うまく動かない。
だいたい今入れると、最新のPython
を入れてしまう。これが、自分が参考にする本とバージョンが違って混乱する。Pyhton2
とPython3
の違いは論外としても、Scikit-Learn
は、微妙に少しずつ改良されて変わっている。初心者は一つでも動かないと混乱してしまう。特に図書館で本を借りるのが要注意。図書館の本って意外と古い本がずっと残っています。それでpythonの本は高いけど無理して買った本を見てうまく動かないと、たいていの初心者はへこんでします。
###3)知っている人に聞くと、ネットに見れば良いよと言われ、それを見て真似するけど動かない
知っている人に聞くと、インターネットにいろいろ情報はあるので、それを見たらプログラムを作れるよ!と言われるけど、初心者はネットの情報を見てもプログラムができない。
実は、ここが一番の問題で、杉田玄白らと同じ状況に陥るのだと思う。
杉田玄白らが、ターヘルアナトミアを訳したときは、オランダ語の国語辞典(蘭蘭辞典)しかなかったということです。つまりわからないオランダ語の本を、オランダ語の辞典を使って訳そうとして苦労しました。ここの逸話がフルヘッヘンドです。
これを初心者のPythonの勉強に置き換えると、こういうことになります。
ネットの情報(Qiitaやブログ)は百科事典みたいなものなのです。
初心者のpythonの勉強は、実は英語の百科事典を参考に英文を読んでくださいと言われているようなものなのです。初心者に、この時必要なのは、まず最初に必要なのは、英和辞典なのです。
簡単にまとまっているpython辞書みたいなものが存在しないから、膨大な情報を前に戸惑ってしまい、なかなか進みません。またうまく動かない場合も、ネットの情報(百科事典)を読んでも、なかなか自分が知りたいところまでたどり着きません。
###4)オンライン講座などで勉強すると、ほぼ必要のない情報まで教えてくれるので、終わるまでに疲れてしまう。
たぶんプログラミングでは必要なのでしょうが、初心者はタプルって使わない。辞書すら、たまに見るくらい。scikit-learn
以外は、リストとリストのスライスと、pandasの一部とmatplotlibの一部だけで良いのに、オンライン講座は延々いろいろなことを教えてくれるので、疲れてしまう。
###5)ネットの情報にはいろいろ書いてあって、どれが正しいかわからない。
百科事典や国語辞典は、どれを見ても基本は同じ内容ですが、ネットの情報はいろいろな情報があって、初心者はどれを参考すれば良いかわかりません。
anacondaを入れると良いよと言われて、anaconda入れた人が、他のページでインストールはpip
で、と書いてあるだけで、わからない人はわかりません。
###6)pythonがわかれば機械学習がわかるという大いなる勘違いをしている。
ここの勘違いも大きい。つまりpythonと同時に機械学習の理屈も理解しないといけないということがわかっていない人が多い。
なぜ学習データとテストデータにわけるのか?がわからなければ、train_test_split
でデータをわけることが理解できない。まぁ、これくらいは初歩の初歩なので、こんなことはないと思うが・・・。
でも標準化はちゃんとやろうとか、少し突っ込んでやり始めようと思うと、そもそも機械学習の理屈も勉強しないと、正しい計算はできない。
###7)初心者は、みんなはwindwosを使っていると思っている
初心者のPCはwindowsです。スマホは、iPhoneです。
世の中には、windowsしかないと思っているのに、ネットの記事や本では、linuxやmac前提で書いてる場合があります。これ、初心者にはわかりません。
##ワークフローソフト
いろいろ書いたけど、大きな会社では人工知能(機械学習)を検討しろと言われて、なんかpythonを勉強させられるけど、本当にpython使って機械学習やる必要あるのか?別に普通のワークフローソフトでいいじゃん!って、会社の中で冷静に指摘する人はいないのか?ワークフローソフトも無料なんだし。これが一番費用と人的コストかからずに始められるのに、、ね。。
##さいごに
(1)では、まずは初心者がPythonで勉強するときにつまづくところを書いてみました。
次の勉強法(2)で、それでもpythonをやり始める人に向けて、私のフルヘッヘンド勉強法を書こうと思います。