<- mathjaxを追加 ->

AIプログラミングは簡単

んなわけねーだろ

最近AIブームだからか、AIを作ろう!AIは簡単!的な記事が増えてきているような気がします。

断言します、機械学習はむずいです。

こう言うとこのような反論が飛んでくるでしょう

ライブラリ使えば簡単じゃん!

貴様は外科医は患部を切り取って縫えばいいから簡単とか言うタイプだろ。

モデルを作成するのは確かに簡単になりました。
古典的なモデルであればscikit-learnで中身を理解せずに作成できるようになりますし、ディープラーニングはまだハードルがあるとはいえLeNetはLeCunしか作れないと言われていた時代と比べれば遥かに簡単になりました。

しかし機械学習で一番難しいのは僕はモデルでは無いと思います。
僕が一番難しいのは前処理かなと、前処理は泥臭く、経験や知識が必要とされる割に情報がない分野なので。
皆さんちゃんとモデル作れてると思います?欠損値の処理についてはちゃんと知識あります?MCAR,MAR,NMARって何か説明できます?多重代入法について説明できます?外れ値の検出方法は?スミルノ・グラブス検定の仮定って知ってます?

 AIプログラミングは簡単と言う人はモデルのところしか見ていないと思います。きれいなデータでうまく分類するのは確かに簡単です。

しかしきれいなデータ以外の場合がほとんどです。いつでもあやめのデータみたいに決定木だけでほぼ分類できるようなデータだけではありません。

他にも特徴量についてもちゃんと理解できてます?今画像扱っている人はSIFTとかHOGとか説明できます?説明できない人はディープラーニング使えない環境だと死ぬぞ。そこの自然言語系、そうそこのお前だ、tfidfは常識だから聞かない。もし知らないならお前は自然言語系ではない。Okapi BM25は当然知ってるよな?tfidfを脳死で計算するんじゃなくてtfはルートを取ったり、idfに1足したりしてるよな?PMIも説明できるよなぁ!?

…取り乱しました。ともかく特徴量のことを知らずに今AIをやってる人、あなたはディープラーニングしかしてませんね?

確かに今では自然言語処理や画像処理の分野ではディープラーニング系のアルゴリズムが最も良い精度を出します。しかしだからといって適切な前処理をしなくてもいいというわけではありません。むしろより良いモデル構築のために特徴量設計は適切に行うべきだと僕は考えています。

データサイエンティストや機械学習エンジニアの仕事の大半はこの様な前処理だと思います。あなたの周りの「AI」系の人はちゃんと前処理をやってるでしょうか?ぜひ確認してみてください。