MachineLearning

【保存版】機械学習エンジニアに必要な15個のスキル【習得法も紹介】

機械学習エンジニア スキル

 

 

上記のツイートのとおりで、自分が振り返るためにも書いています。

それに、全てを満たしていないといけないかと聞かれると、企業によって使っているものが違ったり、入社後に勉強してくれれば良いという企業まであるので、一概に「必須の技術である」とは言えません。

【保存版】機械学習エンジニアに必要な15個のスキル

機械学習エンジニア 必要なスキル

機械学習エンジニアに必要なスキルは、15個ほどあります。

※企業にも依りますので、すべてを必要としない可能性もあります。

 

機械学習エンジニアに必要なスキル1 : コンピューターサイエンス

 

まずは機械学習以前に、コンピューターサイエンスについて知っておく必要があります。

特に機械学習をやっていく場合なら、メモリ、分散処理などを含むコンピューターアーキテクチャーが必須です。

 

その他、データ構造とアルゴリズムなど、そもそも「エンジニア」としてやっていくなら、コンピューターサイエンスは、必要な知識になってきますね。

 

機械学習エンジニアに必要なスキル2 : プログラミング知識

 

次に必要なのは、プログラミング知識です。

ここで言う「プログラミング言語 = Python」だと思って、差し支えないですね。

いま機械学習をやるとなったら、ほとんどPythonで書かれています。

 

たまにCやC++、Rを使う場合もありますが、まずはPythonをおさえておけばOKかな〜という印象ですね。

 

機械学習エンジニアに必要なスキル3 : 機械学習の基礎

 

そもそもの機械学習の基礎もおさえておきましょう。

教師あり学習、教師なし学習、強化学習、分類、回帰など、機械学習のありとあらゆる知識を身につけておく必要があります。

 

特に、機械学習の1つであるディープラーニングに関しては、それだけでかなりのボリュームがあるだけでなく、ちゃんと理解しようとすると若干難しい部分があります。

なので、機械学習の基礎は、時間をかけてしっかり学んでいくのがオススメです。

 

機械学習エンジニアに必要なスキル4 : 機械学習アルゴリズムの理解

 

次が機械学習アルゴリズムの理解です。

先ほどの教師あり学習や、教師なし学習に該当するようなアルゴリズムを、学ぶ必要があります。

 

具体的には、ランダムフォレストやXGBoostなどの機械学習アルゴリズムや、CNNやRNNをベースとしたDNNアルゴリズムを学習する必要があります。

 

機械学習エンジニアに必要なスキル5 : 確率統計学を主にした数学知識

 

そして、機械学習をしっかり扱っていくのであれば、確率統計学をベースとした数学の知識は欠かせません。

巷では数学が不要なんて意見もありますが、時と場合によるかなと。

 

数学が必要ない機械学習というのは、サンプルコードを動かしたり、オープンソースで配布されている機械学習アルゴリズムを組み込むだけの場合です。

しっかりと自分でネットワークを構築したり、パラメータ調整をしていくのであれば、数学の知識が必要になってきます。

 

機械学習エンジニアに必要なスキル6 : データベース/SQL

 

機械学習させるには、データが必要になるわけなので、データベースやデータ抽出するためのSQLの知識が欠かせません。

とくに基幹系の構造化データともなると、複数回のテーブル連結を強いられることになるので、基本的なSQLだけでなく、サブクエリや各JOINまで使えるようにしておきましょう。

 

機械学習エンジニアに必要なスキル7 : Linux

 

機械学習の実装に広く使われているOS「Linux」についても、学習しておく必要があります。

というか、AIを組み込みたい先で使われているOSとして、Linuxがよく使われているって感じですかね。

 

いずれにせよ、UNIXコマンドは必須になってきますので、基本的な部分はおさえておきましょう。

 

機械学習エンジニアに必要なスキル8 : Numpy/Pandasの知識

 

機械学習で使われるプログラミング言語Pythonの中でも、NumpyやPandasの知識は何するにしても必須になってきます。

というか、ぶっちゃけ機械学習の実装に使うライブラリよりも、こっちをうまく使いこなせることが重要です。

NumpyやPandasを使いこなせると、データ前処理や特徴量の作成をおこなえるようになり、機械学習の精度向上が期待できます。

 

機械学習の精度をあげたいと思ったら、モデルも大事ですがデータが悪いパターンが多いので、NumpyやPandasをうまく使いこなせるスキルは必須ですね。

 

機械学習エンジニアに必要なスキル9 : 機械学習ライブラリ(フレームワーク)の取り扱い

 

NumpyやPandasのスキルを身につけたら、機械学習フレームワークの習得もしていきましょう。

各フレームワークによって、書き方が若干違ってくるので、複数扱えるようにしておくと良いです。

 

たとえば、ある論文ではTensorflowで書かれているのに、他の論文ではPyCharmで書かれているなんてことが割とあります。

1つの機械学習フレームワークだけだと、ここら辺の不便が生じてくるので、余裕ができたら、複数フレームワークを使えるようにしていきましょう。

 

機械学習エンジニアに必要なスキル10 : データ前処理、特徴量エンジニアリングの知識

 

データ前処理や特徴量エンジニアリングの知識も必須ですね。

ツールとしてはNumpyやPandasを使えば良いのですが、どのように前処理をすれば良いのかは、また別の話になってきます。

 

①NumpyとPandasを習得して②前処理や特徴量エンジニアリングをするという流れになってくるので、2つのライブラリを勉強した後は、ここら辺の知識も身につけていきましょう。

 

機械学習エンジニアに必要なスキル11 : モデル評価の知識

 

機械学習は、学習させて終わりではありません。

学習させたモデルを使って「何かする」わけなので、このモデルを評価してあげる必要があります。

 

モデルの評価をどのようにすれば良いのかは、実装する機械学習や利用目的によって変わってくるので、モデルの評価方法も一通り学んでおくのが良いですね。

 

機械学習エンジニアに必要なスキル12 : クラウド

 

機械学習の分野でも、クラウドの知識は欠かせません。

AWSなどのクラウドを用いる理由としては、ローカルでは扱えないビッグデータを処理するためです。

 

ある程度良い精度を出すには、データ量が欠かせないので、そこらへんを処理できるクラウドなどのインフラ知識も必要になってきます。

 

機械学習エンジニアに必要なスキル13 : Dockerコンテナ

 

ここら辺は企業によりますが、Dockerコンテナを使う場合があります。

もし企業で使うようでしたら、習得しておきましょう。

※とりあえず機械学習の学習を始めたいだけってかたは、後回しで良いかと思います。

 

機械学習エンジニアに必要なスキル14 : 分散処理

 

こちらも企業で実装するレベルでないと必要にはなりませんが、分散処理の知識もあると良いです。

ただ、とりあえず機械学習について勉強したいだけって方は、プライベートな利用場面で使うことは、ほぼほぼないので後回しでOKです。

 

機械学習エンジニアに必要なスキル15 : ソフトウェアエンジニアリング/システム設計

 

AIを使うからには、何かしらのソフトウェアに組み込んだり、そもそもシステム化していくことにあります。

なので、ソフトウェアエンジニアとしての知識も必要になってきます。

これから機械学習を勉強したいって方には、まだまだ後のことなのでスキップでOKです。