1. TOP
  2. プログラミング
  3. 【簡単入門】初心者が一から始める機械学習入門

【簡単入門】初心者が一から始める機械学習入門

 2018/09/17 プログラミング
この記事は約 5 分で読めます。 578 Views

生活の様々な場所で使われるようになってきた、人工知能AI

ロボット、車の自動運転など身近な存在になってきましたが、そもそもどういうものなのでしょうか?

機械学習とは

人工知能とは、人間の使う自然言語を理解したり、論理的な推論を行ったり、経験から学習したりするコンピュータプログラムなどのこと

つまり、

自ら考える力が備わっているコンピュータのことです

その根幹となるのが、機械学習です。

機械学習とは、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術のことを言います。

機械学習の種類

機械学習による学習方法にはざっくり3つに分けることができます。

教師あり

問題と解答が揃っているデータを使って学習を行う
株価や天気予想など

教師なし

データだけあって解答がない
データから特徴を抽出してグループ分けする
特徴、特異性、傾向等を解析

強化学習

動物に餌を与えて芸を仕込むような、
機械に報酬を与えて、試行錯誤させて失敗と成功から学習していく方法
囲碁など

手書きの数字を分類してみる(教師ありモデル)

概要だけだとイメージが湧かないと思いますので、実際に構築していきたいと思います。
今回は教師ありモデルの学習方法で、手書きの数字を分類してみます。

学習方法の概要

1 学習データを読み込む

2学習データを以下のように分ける
訓練データ(問題)、教師データ (答え)
テストデータ(問題)、教師データ (答え)

3学習器を用意

4 訓練データと教師データをもとに学習させて、学習済みモデルを作成します

5 テストデータと教師データを使って、学習済みモデルで結果を評価します

アルゴリズムを用意する

今回は無料で公開しているscikit-learn(サイキットラーン)を使用します。
http://scikit-learn.org/stable/

学習器は、サポートベクターマシン(教師あり学習を用いるパターン認識モデル)のsvc(カーネルを使用しないSVM)というアルゴリズムを使用します。

importするだけで使用できるため、個別にダウンロードする必要はありません。

学習データを用意する

学習器と同じく、scikit-learn(サイキットラーン)を使用します。

データには主に訓練データと教師データが入っています。

  • 0~9までの手書きの数字の画像が入った学習データ(訓練データ)
  • 画像の正解が入った数字のデータ(教師データ)

こちらも、importするだけで使用できるため、個別にダウンロードする必要はありません。

開発環境を用意する

Anacondaに入っているSpyderを使ってみます

公式サイトからAnacondaの最新版のインストーラーを入れます。

https://www.continuum.io/downloads

インストールが終わったら、標準でSpyderが入っているので起動します。

実際にコードを書いてみる

ここからはSpyderに実際に、一つ一つコードを書いていきます。

ライブラリの読込とデータの読込

手書きのデータセットを読み込む

データを4つに分ける

訓練データ(問題)、教師データ (答え)
テストデータ(問題)、教師データ (答え)

読み込んだデータを、この4つに分けていきます。

学習器で学習済みモデルを作成

実際に学習器に学習させます。

テストと結果

それでは実際に結果を見ていきましょう。

私の環境では、約96%のデータについて正解したようです。

ここでは取り扱いませんが、どういう画像を間違えたのか
などを実際に関数を使って確認することもできます。

機械学習のメリットとデメリット

いかがでしたでしょうか?
ライブラリを使えれば意外と簡単に実装できるのがわかったのではないでしょうか

実際にはテストデータではなく大量のデータや、アルゴリズムを用意しなくてはなりません。

機械学習は、難易度の高い数学を学ぶ必要があり、学習コストも開発コストも高いですが、
ビッグデータ社会ではニーズは高く、エンジニアとしての価値は高まって行くでしょう

最低限、アルゴリズムを使うことはとりあえずできた方がいいかもしれませんね

制作のご依頼・ご相談はこちら

dainamoでは魅力的なWEBサイトや、アプリ、ツール、ポスター、パンフレット、チラシなど幅広く承っております。ご相談、見積もり、お問い合わせなど、お気軽にご連絡ください。

今すぐご相談・問い合わせをする

\ SNSでシェアしよう! /

web制作・デザイン・システム開発・管理なら dainamo(ダイナモ)の注目記事を受け取ろう

この記事が気に入ったら
いいね!しよう

web制作・デザイン・システム開発・管理なら dainamo(ダイナモ)の人気記事をお届けします。

  • 気に入ったらブックマーク! このエントリーをはてなブックマークに追加
  • フォローしよう!

ライター紹介 ライター一覧

kz

kz

税金にも詳しいエンジニア

サーバーの構築からフロントエンド、iOSアプリの作成も行います。
WEBアプリや会員サービスの構築を得意としています。

制作物の一部を紹介
・海外旅行者向け事業者サービス
https://vacation-japan.com

・記憶術を使ったWEBアプリ会員サイト

その他、教育アプリetc..

この人が書いた記事  記事一覧

  • Apacheのバージョン情報を隠してセキュリティを向上させる

  • 文字コードとは一体何なのか?MacでCSVの文字コードをUTF-8に変換する

  • 教師ありの機械学習(AI)プログラムを使用して、与えられた文章が何の言語なのか判定する

  • Linuxのプロンプトの色をユーザーによって切り分ける

関連記事

  • フリーランスのエンジニアが稼ぐために大切なこと

  • プログラミングで挫折した時に役立つエンジニア向けサイトまとめ2019

  • 【初心者web系エンジニア必見】挫折しない為のポイントとおすすめ学習サービスまとめ(初心者がWeb系エンジニアとして働くために大事なこと1)

  • コピペでOK!ブラウザの戻るボタンを禁止する方法[ jQuery / javascript ]

  • 【初心者向け】cron(クーロン)を使って、自動でプログラムを設定する

  • VPSサーバーの構築 第2回 CentOS7 apache MariaDB PHP7 2018