機械学習

【入門者向け】機械学習とは?機械学習の種類とRでの実装!

こんにちは!デジタルマーケターのウマたん(@statistics1012)です!統計学の修士号を持っており、大学時代はデータサイエンスを主に専攻していました。

AIやビッグデータ、機械学習という言葉が巷を賑わせていますが、実際に機械学習とは何かご存知でしょうか?

この記事では、そもそも機械学習とは何なのか、それにより何ができるようになるのか、見ていきます。

そして実際に機械学習を簡易的に実装してみます。

ウマたん
ウマたん
どんな人にとっても機械学習について知っておくことは大事だよ!

機械学習とは

機械学習とは、その名の通り「機械に学習させてルールを作り出す」ということ。

機械学習が発展する前は、人間がルールを決めていました。

レコメンドで言えば、「この商品を購入した人にはこの商品を紹介したいから、そのようなルールを決めよう!」というように(ルールベースレコメンドと呼びます)。

そこに存在するのは人間の勘と想像です。実際にこのようなレコメンドはまだまだ実用的に使われていますが、より精度の高いレコメンドを行うためには機械学習が必要になります。

「この商品を購入した人はこの商品を購入する確率が高いから、そのようなルールを作る」というように現在存在するデータを学習して自動的にルールを作っていくわけです。

最近よく使われているレコメンドロジックは協調フィルタリングと言います。簡単に言うと行動パターンの似ているユーザーが買っているモノを似たユーザーにレコメンドするといった仕組み。

レコメンドロジックについてはこちらの記事に詳しくまとめていますのでよければご覧ください!

レコメンドで使われる4つのアルゴリズムを簡単に紐解く!こんにちは! 消費財メーカーでデジタルマーケティングに携わっているウマたん(@statistics1012)です! ECサイ...

このように現在存在するデータから自動的にルールを作ってくれるアルゴリズムが機械学習なのです。

ちなみに統計学を起点とする多変量解析手法群もその定義からすると機械学習の中に含まれますが、機械学習手法と統計学ではスタンスが若干違います。

統計学は現在のデータを解釈することを目的としますが、機械学習は未知のデータを正確に予測できることを目的とします。

僕は、統計学は解釈追求型、機械学習は精度追求型と呼んでいます。ただ境目は曖昧ですのでそれほど気にする必要はないでしょう。明確に切り分けることはできません。

詳しくは以下の記事をご覧ください!

機械学習と統計学の違いについてモノ申す!!こんにちは!デジタルマーケターのウマたん(@statistics1012)です! 大学院時代は統計学専攻で、伝統的な統計学から割と...

機械学習の種類

続いて、そんな機械学習にはどんな種類があるのか見ていきましょう!

機械学習には大きく分けて教師あり学習・教師なし学習・強化学習があります。

教師あり学習

教師あり学習はデータ群に対して正解が紐づいているデータセットを学習する手法のことを指します。

例えば、タイタニックの乗船者情報(後で実際に解析に使用します)では、様々なお客さん情報に対してそのお客さんが生き残ったか死んでしまったかのデータが入っています。

生死のラベルが付いていて、それを基にどんな客が生き残ったかのルールを作ることができるのです。

教師あり学習が最も一般的で様々な場面で使われています。

決定木

決定木はタイタニック乗船データに対しても例として用いられている一般的な手法です。非常に分かりやすくルールも可視化しやすいためビジネスの場面で用いられることが多いです。

そういう意味でいうと、データの解釈のために使われることが多く、単純な予測精度を出したいなら他の手法を用いたほうが無難です。

決定木に関しては以下の記事にまとめています!

決定木とは?PythonとRで実装してみよう! こんにちは!デジタルマーケターのウマたん(@statistics1012)です。 有名な機械学習手法の一つに決定木がありま...

k近傍法

k近傍法は、未知データの周りに存在する学習データの数から未知データのラベルを判断する機械学習モデルです。

アルゴリズムはシンプルですが、ある程度精度の見込める手法です。

詳しくは以下の記事にまとめています!

k近傍法とは?理論とRでの実装方法! こんにちは! この記事ではk近傍法というクラス判別の手法をご説明します! アルゴリズムも非常に分かりすく使いやすいk...

ランダムフォレスト

ランダムフォレストは、決定木とバギングを組み合わせた手法でそれなりの精度を簡単にたたき出してくれます。

それほど計算負荷もかからないので、ちょっとしたデータを解析するのにはもってこいです。

ランダムフォレストに関してはこちらの記事を参考にしてみてください。

ランダムフォレストとは?PythonとRで実装してみよう!こんにちは!デジタルマーケターのウマたん(@statistics1012)です! 今回は、汎化能力の非常に高い最強手法ランダムフォ...

SVM(サポートベクターマシン)

SVMもランダムフォレスト同様の精度が期待できる優秀な手法です。

応用の幅が広く様々な分野で使われています。計算負荷は高めです。

SVMについて詳しくはこちら!

SVM(サポートベクターマシン)とは?特徴とRによる実装!こんにちは!デジタルマーケターのウマたん(@statistics1012)です! 機械学習手法の中でも汎化能力が高いとされ使われる...

ニューラルネットワーク

ニューラルネットワークはディープラーニングの基となった手法です。ニューラルネットワーク単体ではそれほど高い精度は見込めませんが、中間層を増やせば増やすほど学習が進み(ディープラーニングに近づき)精度が高くなります。その分、計算負荷も上昇します。

ニューラルネットワークに関して詳しくはこちら!

ニューラルネットワークとは?仕組みとRでの実装!こんにちは!デジタルマーケターのウマたん(@statistics1012)です! 最近巷で話題のディープラーニング。 そんな...

XGboost

XGboostは、決定木と勾配ブースティングを組み合わせた手法で相当高い精度が見込めます。

今回紹介した教師あり学習の中では最も高い精度が見込める優秀な手法になっております。

XGboostに関しては以下の記事をご覧ください!

XGboostとは?理論とRでの実践方法!こんにちは!デジタルマーケターのウマたん(@statistics1012)です! Kaggleなどのデータ解析コンペでも頻繁に用い...

教師なし学習

教師あり学習では、正解データが存在しましたが、教師なし学習では正解データは存在しません。

現在存在するデータから何か特徴を導き出す時・セグメントを行う時などに使われます。

教師なし学習にはクラスター分析主成分分析などが存在します。先ほど機械学習と統計学の違いをお伝えした通り、統計学は現在のデータの解釈に使われることが多いです。

そのため、教師なし学習のクラスター分析や主成分分析は統計学的アプローチの文脈で使われることが多いです。

強化学習

強化学習は、昨今最も注目を集めている分野です。

教師あり学習と似ていますが、教師あり学習は全ての変数(特徴量)に対してフィードバックがありますが、強化学習は最終的な結果にのみフィードバックをします。

それを強化学習の世界では報酬と言いますが、報酬をたくさんもらえるように最適化すると最終的に精度の高いモデルが構築されるというイメージです。

まだまだビジネスの世界への適応例は少ない手法です。

強化学習については以下の記事にまとめています!

強化学習とは?ディープラーニングとの関係性機械学習手法の中にある3つの学習手法のうち今後多くの分野に応用されることが見込まれる「強化学習」 他の2つ教師あり学習・教師なし学...

機械学習をRで実装してみよう!

機械学習に対する理解がだいぶ深まったと思いますので、ここで簡易的な解析をしてみましょう!

機械学習手法を使うだけなら非常に簡単に実装できちゃうんですよー!教師あり学習を実装してみましょう!

先ほども登場した有名なタイタニックのデータを用います。Kaggleの公式サイトからデータをダウンロードできます。

まず、データのクレンジングを行い、欠損値は削除、不要と考えられる項目は削除しました。

項目8つ

Survived:生死 pclass:客室のクラス sex:性別 age:年齢 sibsp:兄弟・配偶者の数 parch:親・子供の数 fare:乗船料金 embarked:乗船した港

サンプル数714

この時、生死を目的変数としそれ以外を説明変数とします。

サンプル数714のうちランダムに400個のデータを取り出し学習データとし、残りの314を予測データとします。

学習データで予測モデルを作り、予測データにあてはめ真値と予測値の判別率を精度として比較します。

シミュレーション回数は1000回とし、上記の手順を1000回繰り返し、結果を平均したものを最終アウトプットとします。そのため、結果はばらつきがなく確からしい結果になっているはずです。

SVM(サポートベクターマシン)RF(ランダムフォレスト)Bayes(ナイーブベイズ)NN(ニューラルネットワーク)の4手法で比較します!

基本的に引数は全部デフォルトで!果たして結果はどうなるでしょうか!


ランダムフォレストとSVMが強いですね!

今回はパラメータをいじらずデフォルト設定で行ったためグリッドサーチなどでチューニングを行えば、もっと良い精度が出るでしょう。

機械学習を勉強する方法

ここまで来ると、もっと深く機械学習手法を勉強したい!と思われるかもしれません。そこで今後さらに機械学習を勉強するには何が必要か見ていきたいと思います。

機械学習の理論を勉強する

もっと理論的な部分が知りたい!アルゴリズムが知りたいという方は本を読んで勉強してみると良いでしょう!

最初は難しいかもしれませんが、機械学習の本としては以下の「はじめてのパターン認識」が名著です。かなり詳しく載っています。

機械学習を勉強するためにオススメの本を以下にまとめていますのでこちらも参考にしてみてください!

厳選7冊!機械学習を勉強する上でおすすめな本!こんにちは! この記事ではデータ解析の花形、機械学習を勉強する上でおすすめな本をご紹介します! 機械学習ってなに? 最...

機械学習の実装を勉強する

機械学習を実装していくためには、プログラミングスキルがある程度必要です。

プログラミングを勉強するためには本を読む・プログラミングのスクールに通う・オンライン動画サービスを使うなどがあります。

言語としては、R/Pythonのどちらかになると思います。Pythonの方が開発言語としても使えるのでより汎用的です。

R/Pythonを勉強するのにオススメの本はこちらにまとめています!

厳選10冊!データ解析(R・Python)の勉強におすすめな本こんにちは!デジタルマーケターのウマたん(@statistics1012)です 統計学を勉強する学生やデータ解析を行う方々が良く使...

プログラミング学習は挫折しやすいので、目標を明確に持って学習に励みましょう!

プログラミング学習の方法については別途こちらにまとめていますので参考にしてみてください!

プログラミングを挫折しないで勉強し続けるために重要な3つの秘訣!こんにちは! 事業会社でWebマーケ・データ解析屋さんとしてお仕事をしているウマたん(@statistics1012)です。 ...

機械学習 まとめ

機械学習についてみてきました。理解が進みましたでしょうか?

機械学習は、非常に簡単に実装できます。ただその分、機械学習が実装できるだけでは意味がありません。

どのようなデータを機械に与えて、得られた結果をどのように解釈するか。それが最も大事な部分になります。

得られた結果をどのようにビジネスに落とし込むか・ビジネスインパクトを出すか。ここがデジタルマーケター・データサイエンティストの腕の見せ所ですね!

ウマたん
ウマたん
機械学習はあくまで手段だ!目的を見失わないようにしよう!

その上では機械学習だけではなく統計学的な視点も重要になります。統計学に関してはこちらの記事にまとめていますので合わせてご覧ください!

統計学とは?こんにちは!統計学専攻で修士課程卒業後、都内でデジタルマーケターやってるウマたん(@statistics1012)です。 統計学と...