データ収集

本サイトでは、テストデータを乱数などで生成してきましたが、実際にはデータを観測・収集して分析します。
データの収集について記述します。

デジタルデータの収集には、インターネットで提供されているWebサイトの情報を効率良く収集するのが一般的になってきています。
過去の為替情報や過去の気象データなどもWebサイトから「CSV」(コンマ区切りで表現する文書データ)などデータとして簡単に入手できます。

デジタルデータ収集

実際にWebサイトからデジタルデータを収集するには、Webサイトの構造を把握する必要があります。
Webサイトの構造を把握するのに「Webクローラー」というプログラムを利用するのが一般的になってきています。
Webサイトの構造把握後には、「スクレイピング」というプログラムを利用してWebサイトの情報を入手することが可能です。

Pythonにも「Webクローラー」や「スクレイピング」を簡単にプログラミングできるためのライブラリーがあります。
しかし、Webサイトから情報収集するときに間違った収集の仕方だと迷惑行為になる可能性ありますので、最新の法律や情報を取得して正しく利用していく必要があります。

端末を利用してのデータ収集

IoTというもののインターネットが主流になってきています。
IoTとは、「Raspberry Pi」などの機械(ミニPC)をデータ収集したい場所に設置して、Amazon AWSやMicrosoft Azureなどのクラウドコンピューティングなどにインターネット経由してデータを送信してそのデータを活用することです。
このとき「Raspberry Pi」などの機械(ミニPC)をエッジデバイスといい、基本的に端点となることからエンドポイントと呼ばれます。

エッジデバイスでは、光や温度などを測定したデータをセンサーデータといい、地理情報システム(GIS)を持たせて位置の特定なとも行えます。
インターネット経由する場合には、クラウドコンピューティング側でWebAPIを開発したり、クラウドコンピューティングが提供しているAPIやSDKを活用することが一般的です。

エッジデバイスとクラウドコンピューティング間の通信の約束事としてプロトコルがあり、Webサイトを閲覧するような「http」や「https」やファイル転送の「FTP」や「FTPS」、セキュア通信を可能にする「SSH」(SCP)などを利用してエッジデバイスはクラウドコンピューティングにデータを送信します。
「http」や「FTP」はセキュアな通信ができないため利用されず、WebAPIなどでは「https」をファイル転送では「FTPS」を利用するのが一般的です。

データ表現

デジタルデータで扱えるものは画像・動画・テキスト・音声になります。
コンピュータで扱えるデジタルデータは、基本的に2進数である「0」または「1」が羅列されたデータです。
我々が見ている画像・動画・テキストも人間が見やすいように2進数からコンピュータが処理してくれています。

アナログデータである音声の波形を2進数で表現させることを符号化といいます。
符号化は、アナログデータの波形を期間で区切る標本化と離散的な値にする量子化で2進数にします。

一般的に標本化は連続的なアナログ信号をデジタル信号(サンプルとして離散的な時間)に変換することです。
量子化は観測されたデータ(浮動小数点など)の数値を整数などの離散地で近似します。

画像データ

画像データとは、点の集まりでこの最小になる点をドットともいい2進数で表します。
画像データの色は、RGBやCMYKで表現することができます。
RGBは、3要素である赤・緑・青の三色の明るさレベルで表します。
画素(ピクセル)とは、1つの点を色も含めて表すことでRGBなら「1ピクセル=赤ドット+緑ドット+青ドット」となります。

近年の画像のサイズは極めて大きくなってきており、圧縮して管理を効率化するような技術を画像の符号化といいます。
画像データはAIでも頻繁に利用されます。
特に物体認識などでは、画像に映っている物体をベクトル化してそのベクトルを比較したりします。

言語と音声データ

言語と音声データについての用語を次に記載していきます。

データ構造

データ構造とは、データを扱うための枠組みです。
Pythonで学習したリストや配列などのことです。

グラフ

グラフデータ構造とは、節(ノード)とノード同士を接続する枝(ブランチ)のデータ構造です。
ノードが持つ値をプロパティといいます。

ネットワーク

ネットワークデータ構造とは、ノード同士の接続が網のようになっているデータ構造のことです。

木構造

木構造とは、データを格納すノードとノード同士を接続するブランチが木のように枝分かれしている構造のことです。

二分木

全ての親ノードが、2個以上の子ノードをもつ木構造です。
左側の子ノードのプロパティがノードの値よりも大きいまたは右側の子ノードのプロパティがノードの値よりも大きいという大小関係が成り立つ木構造です。

ヒープ

ヒープは、全ての親ノードが、2個以上の子ノードをもつ木構造です。
また、全てのノードで親のノードのプロパティよりも子のノードのプロパティが大きいまたは親のノードのプロパティよりも子のノードのプロパティが小さいという大小関係が成り立つ木構造です。