AIプログラミングを学ぶ際に重要になってくるのが機械学習やディープランニングを実行する前にある程度機械が読み取りやすいようにデータを校正する必要があります。また校正と言うと一般的に画像を綺麗にすることを指しますが機械学習ではその校正とは異なり、画像の特異的な点を抽出したような画像ファイルに置き換えたり、また数列を機械が効率よく読み取るために小手入れしたりします。

機械学習で利用するデータの作り方

機械学習ではどのようなデータが利用できるでしょうか。結論から言えば、コンピューターで扱えるデータであればどんなデータでも利用可能です。ここでは、そうしたデータをどこからどのように収集し、どんな形式で保存すれば良いのかを紹介します。

何のために機械学習を利用するのか?

機械学習のシステムに限らず、何かしらのシステムを作る際には、改めて「何のためのシステムを作るのか」という完成目標を具体的に思い浮かべておく必要があります。その上で、機械学習のシステムを、どのようにしてシステムに組み込むのかを考えていきます。「機械学習を利用すること」がシステムの目的になって、本末転倒にならないように注意しましょう。機械学習は非常に強力な問題解決手法ですが、万能ではないのです。

どのようにデータを収集するのか?

状況にもよりますが、あらかじめ定量のデータを用意できることが前提です。それでは、機械学習のためにどのようにデータを収集できるでしょうか。長年にわたる社内データがあれば、それを利用できますし、Web上にあるデータをダウンロードして利用することもできるでしょう。たとえば、検索工エンジンを頼りにデータを集めることもできますし、いくつかのWebサイトをクローリング.(巡回収集)して、データを収集することもできます(もちろん、クローリングを禁止している Web サイトもありますので、Web サイトごとの規約に従うことも必要ですが………)。また、最近では行政やボランティアを中心として、貴重な統計資料がオープンデータとして公開されていることも多いので、そうしたデータを活用することもできるでしょう。ちなみに「オープンデータ」とは、著作権や特許などの制限を課すことなく、自由に利用したり再掲したりできるデータです。なお、本書では気象庁の気象データなどを活用する方法も紹介するので、参考にしてください。以下に、インターネットからどのようなデータが収集できるのか、具体的なアイデアをまとめてみましたので、何か使えるものがないか調べてみると良いでしょう。HTML ファイルをクローリングしてデータを抽出しなければならない場面は少ないかもしれません。と言うのも、このなかで紹介した多くのWeb サービスでは、Web APIを利用することで、データベースを開発者に解放しているのです。HTMLのクローリングは、面倒なことが多いので、Web API が公開されていないかを確かめてみると良いでしょう。

データの収集元のアイデア

  • SNS やブログ-トレンド情報の収集
  • ネットショップの商品データ- Amazon/楽天など
  • 金融情報 – 為替/株/金の相場
  • オープンデーター人口や消費などの各種統計/気象情報など
  • パブリックドメインのデーター 青空文庫など著作権が切れた本や漫画など
  • 画像·動画·音声データーメディア共有サイト
  • 辞書データ- Wikipedia など
  • 機械学習用のデータセット

収集したデータの保存形式は?

Web から取得したデータをどのように保存するのが良いでしょうか。どのようなデータを収集するのかにもよりますが、より汎用的なデータフォーマットで保存しておくと、後から使いやすいでしょう。本書では、Python と共にさまざまなデータセットを用いて機械学習を学んでいきますので、Pythonで読み書きしやすいデータフォーマットが良いでしょう。次のような汎用的なデータフォーマットであれば、どんな形式でも、手軽にPython で読み込んで利用できます。たとえば、カンマ区切りデータのSV形式、構造化されたデータの JSON、XML、YAML、INIなど多岐にわたるデータフォーマッfトを利用することになります。そのため、そうしたデータのフォーマットについて一通り知っておくと、データを準備する助けとなるでしょう。

機械学習で役立つ汎用的なデータフォーマット

  • カンマ区切りデータ CSV 形式
  • INI ファイル形式
  • JSON (JavaScript のオブジェクト形式を元に考案された構造化データ)
  • XML
  • YAML

実用的なその他の保存形式

上記で紹介したテキストをベースとした汎用的なデータ形式は、1つのファイルに保存できる量に限りがあります。もし、より大規模なデータセットを利用するのであれば、専用のデータベースにデータを保存していくことになるでしょう。Python では一般的なデータベース (MySQL/PostgreSQL/SQLite/SQLServer/Oracle/ODBC 経由で操作できる DBなど)に接続して操作可能です。また、多少汎用性は低くなりますが、Python でのみ操作できれば良いという場面であれば、Pythonオブジェクトをそのままファイルへ書き込むことができる pickle モジュールや、科学演算モジュールNumPy の保存形式(拡張子”.npy”)で保存することもできます。こうした保存方法ですが、固有形式とは言うものの、マルチプラットフォームに対応しており、手軽にデータを読み書きできる点を考えると、各種データベースや Pythonが十分実用的な方法であると言えます。

機械学習に入力カするデータに関して

さて、保存したデータをどのようにして、機械学習で活用できるでしょうか。もちろん、どのようなツールを使うのか、どのような手法で機械学習を行うのかにもよります。しかし今回は、一般的な教師あり学習で分類問題を解く場合を考えてみましょう(具体的な手法は、2章以降で詳しく解説していきます)。今回、データそのものを表す配列データ(実数の配列)と、それが何のデータを表すのかを示すラベルデータ(数値)を1セットとします。それを、何百·何千セットも用意します。つまり、構造化されたデータがあるなら、それを解析して、そこから機械学習に利用するデータを集めて、上記のような形式になるように整形する必要があるのです。ですから、生のテキストデータや画像ファイルを、何の工夫もなくダウンロードするだけでは、機械学習で使えるわけではありません。データ構造を解析し、必要な部分を抽出する必要があるかもしれません。このとき、すべてのデータを機械学習に与えることもできますが、どのデータが意味を持っているのか、人間が判断しなければならない場合もあります。

データの正規化について

データを機械学習のシステムに与える前に、データの正規化をする必要もあります。『正規化(normalization)』とは、データを一定のルールに基づいて変形し、利用しやすくすることです。たとえば、データの最小値と最大値を調べて、0を中心として-1.0から1.0の範囲にデータを変形するのです。これには、以下のような計算式を利用します。(i)Xnormx(i)IminXmax – Xminこうして見ると難しいですが、2章以降で利用する scikit-learn では、自動的にこの正規化作業を行ってくれるので、いつでも正規化作業を行う必要があるわけではありません。それほど意識する必要はないのですが、機械学習にデータを与える前に、このような処理が行われていることは覚えておくと良いでしょう。

いかがだがでしょうか、今回は少しばかり退屈な内容が多かったかもしれませんがプログラミングをする上でも実務上でもデータ整理ないし校正は非常にAIの活用にクリティカルに反映される部分ですので頭の片隅に留めておきましょう。