【超簡単!】機械学習アルゴリズムを理解しよう!

freelance

こんにちは。

ITエンジニア・webディレクター・webデザイナーなどのIT人材の自立・キャリアを支援するITプロパートナーズ編集部です。

弊社では、独立精神旺盛な優秀なエンジニアの方々の独立・起業サポートや、フリーランス支援を行っています。
こちらでは、日々の現場でサポートさせていただいている中での、プロの目線で、エンジニアに役立つお話をしてまいります。

人工知能が自ら進化を行うため、機械学習という手法が取られています。機械が自ら学習するための方法、アルゴリズムは実は非常に多様化されていて、機械学習と一言で済ませるのは中々難しい状態になっているのです。

今回はそんな多様化しつつある機械学習アルゴリズムを、1つ1つ詳しく簡潔にご説明いたします。

専門用語が多くてちょっと分からなくて覚えられない、結局機械学習って何なのか分からない、そういった機械学習初心者にお勧めの内容になっていますよ。

そもそも機械学習とは?

artificial-intelligence-2167835_1280

ではまず最初に、そもそも機械学習とは何かという話から進めていきます。

機械学習とは人工知能(AI)の分野における言葉で、人工知能が自ら大量のデータから反復的に学習してそのパターンを見つけ出し、新しいデータに当てはめて応用させていく手法です。人間が知識を得て学習していく、その流れをコンピュータで実現させるという事です。

人工知能は1980年代から本格的に研究が始まって、今でもその動きは活発で、特に近年はビッグデータなどの膨大なデータを扱う技術の発展に伴ってさらに飛躍的にその技術の進歩が期待されています。

機械学習とはコンピュータが自ら学習する力を手に入れるための手法であり、機械学習アルゴリズムとはどのようにしてその学習する力を得るのかという事になります。

機械学習アルゴリズムが知りたい!

それではここから具体的に機械学習アルゴリズムの技法を1つ1つ紹介していきますが、まずはその前に機械学習アルゴリズムの技法はいくつか分類されると言う事をご紹介いたします。

機械学習アルゴリズムは主に教師あり学習と教師なし学習の2つに分類され、その他の分類として強化学習やマルチタスク学習などに分けられています。今回はこれから機械学習を習おうとしている人向けですので、大きな分類である教師あり学習と教師なし学習の2つに絞ってご説明いたします。

この教師あり学習と教師なし学習と言うのは何が違うのかというと、言葉の通り教師がいるかいないかの違いです。機械学習アルゴリズム的に教師がいると言うのは、答えを教えてくれるかどうかの違いになります。

つまり教師あり学習と言うのは何かというと、入力されたデータに対してどう出力すべきか、問題とその答えをセットにして学習する手法になります。これに対して教師なし学習は、入力されたデータから法則や特徴を見つけ出していく手法になります。

機械学習アルゴリズムの技法の多くはこの教師あり学習か教師なし学習の分類に含まれていて、この2つの違いをしっかりと理解した上で機械学習アルゴリズムを組み事が非常に重要になっています。

何故かと言うと教師あり学習と教師なし学習ではそれぞれ得意不得意があるからです。例えば膨大な量のデータの中に、既に既知の特徴が存在する場合には教師あり学習の方が容易に優れた結果を生み出しますが、まだ何も法則性を見つけ出せていない場合には教師なし学習でなければ全く機能しない事になってしまいます。

単純に問題とその答えを用意できるのであれば教師あり学習が良く、新しい法則性や特徴を見つけ出したい時には教師なし学習が良いという事を覚えておきましょう。

この違いを知らずに適当な機械学習アルゴリズムを選ぶと大変な事になります。機械学習アルゴリズムを実装する時は、何のデータを入力するのか、そして結果として何を求めているのかこの2点に注意するようにしましょう。

機械学習アルゴリズムの技法

shutterstock_561885289

それではいよいよ機械学習アルゴリズムの技法を細かくご説明します。まずは教師あり学習の技法についてです。

教師あり学習

・決定木

まず1つ目は決定木と呼ばれる技法です。これは機械学習アルゴリズムをツリー構造で表したモデルであり、人が見ても非常に分かりやすい構造となっているモデルです。

例えば、明日ハイキングをすべきかどうかという問題に対して、天気が晴れなのか曇りなのか雨なのかでまず3つに分岐させ、さらにその下に風は強いか、湿度は高いかなどの分岐を作って最終的な答えを導く技法です。

シンプルで分かりやすいモデルなので、複雑な問題には対応しにくいデメリットもあります。

・ランダムフォレスト

2つ目はランダムフォレストです。1つ目の決定木と同じく木構造の技法ですが、こちらはその決定木を大量に生成してその結果を集計して予測する手法となっています。

多量のサンプリングによってそれぞれの決定木に異なる特性を持たせるようにするため、汎化性能が高く並列処理も可能という事で人気のある手法となっています。

実際に『Kinect』の身体部位推定にはこちらの技法が使われていたりもします。

・パーセプトロン

3つ目はニューラルネットワークのパーセプトロンです。ニューラルネットワークと言うのは生物の神経ネットワークの構造と機能を模倣する事を目的として技法であり、パーセプトロンはその中でも1番シンプルな入力→中間→出力の3層から作られている技法になります。

ニューラルネットワークの元祖と言える技法ですが、複雑なデータの学習には不向きなため、現在ではこの進化系とも言えるディープラーニングが主流になっています。

・ロジスティック回帰

4つ目はロジスティック回帰です。

回帰と難しい単語が出てきましたがすでに今まで説明した事を単語に省略しただけです。意味は単純に与えられたデータから未来のデータを予測する、という風に覚えておいてください。

このロジスティック回帰は現在注目されているディープラーニングの手法に似ていて、ディープラーニングの1層版とも言われています。

線形回帰の出力をロジット関数と呼ばれる関数に入力していて、2つに分類する問題に対応しています。

特徴的なのがその分類されたデータがどれくらい信頼できる物かといった指標もある点です。

・サポートベクターマシン

5つ目はサポートベクターマシーン(SVM)です。こちらも回帰によって分類する技法になります。

こちらはマージン最大化という手法を取っているため、少ないデータ量でも優秀な結果を残す事もあって、現在でも機械学習アルゴリズムの1つとして利用されている技法です。マージン最大化云々に関しては掘り下げるとちょっと難しい数学の話が混じるので、興味がある方だけ見るようにしましょう。

教師あり学習はもちろん他にもありますが、ここで紹介したように木、ニューラルネットワーク、回帰といった手法を用いたアルゴリズムが多い事を覚えておいてください。

教師なし学習

・クラスタリング

教師なし学習1つ目はクラスタリングです。与えられたデータをクラスタと呼ばれる部分集合に振り分ける方法で、階層型と非階層型にさらに分類されます。

階層型はデータ間の距離を定めて、その距離と指定したルールを用いてグループ化します。

非階層型はまずランダムにクラスタに割り当ててから、データ間の距離と重心から再度クラスタを割り当てるという処理を繰り返してグループ化します。

どちらも最初に設定した振り分けのルールに則ってグループ化するので、その初期値次第で結果が変わってしまうので注意が必要です。統計的データ解析でよく用いられる技法となっています。

・自己組織化マップ

2つ目は自己組織化マップ(SOM)と呼ばれる物です。

こちらはニューラルネットワークの考え方から作られた技法で、データの指定した次元にマッピングしていて、2層のニューラルネットワークに近いモデルになります。

先ほど説明したクラスタリングの技法では可読性に弱い方法もあるため、クラスタリングを可視化したい時に多く利用される技法となっています。

・協調フィルタリング

3つ目は協調フィルタリングです。

類似性から未知の組み合わせに対する答えを予測する手法で、主に商品購入サイトなどで使われています。

例えば利用者に対してレコメンドする時に、その利用者の購入履歴と他の利用者の購入履歴の類似性を見付け、レコメンドを送る利用者にお勧めの商品をより効果的に紹介できる技法になります。

すでにいくつかの商品購入サイトではこの技法を利用しているところもありますよ。

・アソシエーション分析

4つ目はアソシエーション分析です。組み合わせを集計して、最も相性の良い組み合わせを発見する技法です。主にPOS分析で使われています。

飲食店などで食べ物を注文した時に、その食べ物を注文した人が次に何を注文するか予測してそれをお勧めしたりできるのです。

教師なし学習の中にもニューラルネットワークに近い技法があるように、教師あり学習の中にもクラスタリングの技法は存在します。

なのでクラスタリングだから教師なし学習だという風に決めつける事はしないように注意しましょう。先述したように教師ありとなしでは大きな違いがありますから。

エンジニア・プログラマの新しい働き方を模索してみませんか?今より年収がグッと上がる働き方をご提示できるかもしれません!弊社(ITプロパートナーズでは,週2日からこなせる仕事を紹介しております。まずはこちらより、弊社のサービスにご登録後、お仕事の詳細をごらんください!

まとめ

さて機械学習アルゴリズムを教師あり学習と教師なし学習の2つに大別してご紹介しましたが、いかがでしたか。やはり専門用語が多くてよく分からなかった人も多いと思います。

というのも回帰や木と言った単語は数学的な分野にも関係している単語ですので、機械学習アルゴリズムをしっかりと勉強しようと思ったら実は大学レベルの数学を学ぶ所から始める必要があります。

ロジット関数やマージン最大化なんて普通の人は聞いた事もありませんよね。「それじゃ機械学習アルゴリズムは難しいじゃん」って思うかもしれませんが、それは完全に理解するのが難しいという事だけです。

これから機械学習アルゴリズムに触れる人は、まずは根本から理解しようとしなくて良いのです。

『Python』などの機械学習アルゴリズムが作りやすい環境を手に入れて、その中で実装しながら少しずつ調べて覚えていけば良いのです。

よく分からなくても実装する事は簡単にできる、機械学習アルゴリズムを作る事はそれを理解する事よりも非常に簡単なのです。実際にアルゴリズムを作る時には、ロジット関数の事もマージン最大化の事も知らなくても大丈夫ですから。

なのでこれから機械学習アルゴリズムを学ぼうとしている人は、機械学習アルゴリズムがたくさんある事、教師あり学習と教師なし学習に分けられる事、そしてそれぞれに得意不得意がある事だけ覚えておきましょう。

あとはどんどんコードを実装して、気になった部分だけ少しずつ調べていくようにしてください。

bn04

もし、今あなたが

・フリーランスになるか悩んでる
・自分に合った案件があるのか不安
・そもそも何から始めればいいのか分からない

などお困りであれば、ぜひ弊社ITプロパートナーズのサポート内容を確認してみてください!

登録後、専属エージェントに無料相談もできますよ!

※週2日 / 30万〜のフリーランス案件を紹介中です
※ご経験やご希望によっては案件を紹介できない場合がございますのでご了承ください。


よく見られてる関連案件

b80c977483d024c14549510e194361fe 2_anken 3_anken