データ収集
本サイトでは、テストデータを乱数などで生成してきましたが、実際にはデータを観測・収集して分析します。
データの収集について記述します。
デジタルデータの収集には、インターネットで提供されている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でも頻繁に利用されます。
特に物体認識などでは、画像に映っている物体をベクトル化してそのベクトルを比較したりします。
言語と音声データ
言語と音声データについての用語を次に記載していきます。
-
振幅
音の大きさ(大きければ大きい音)のことです。
-
波長
音の高さ(大きければ低い音)のことです。
-
音韻
特定の言語の音の体系のことです。
-
音素
言語の意味を区別できる音声の最小単位のことです。
-
メル尺度
人間の聴覚に基づいた尺度 心理学者Stanley Smith Stevensらによって提案されており、人間が感じる音の高さに基づいた音高の知覚尺度です。
低周波数では分解能が高く、高周波数では分解能が低くなるのが特徴です。 -
A-D変換
自然界の現象のアナログ信号をデジタル信号に変換します。
デジタル信号に変換されたデータをPCM(Pulse Code Modulation)といいます。 -
周波数変換
時系列データを周波数に変換するための手法です。
高速フーリエ変換などがあります。 -
高速フーリエ変換(FFT)
周波数成分として分解することをなるべく少ない計算量で計算します。
-
MFCC
ケプストラムの低次部分の情報を取り出したものであり、話し手の特徴を表す特徴量として利用します。
-
TF-IDF
ある文書内におけるある単語の出現頻度と全文書数に対するある単語が出現する文書数の割合の逆数の対数積で定義します。
-
フォルマント
言葉を発してできる複数の周波数のピークのことです。
-
フーリエ変換
複雑な波を単純な波の合成(各波がどれぐらい含まれているか)として扱います。
-
スペクトル包絡
音声認識などに使用する音の識別します。
-
メル周波数ケプストラム係数
音声認識や音楽ジャンル検索などで使われる特徴量で、人間の視覚を考慮します。
データ構造
データ構造とは、データを扱うための枠組みです。
Pythonで学習したリストや配列などのことです。
グラフ
グラフデータ構造とは、節(ノード)とノード同士を接続する枝(ブランチ)のデータ構造です。
ノードが持つ値をプロパティといいます。
ネットワーク
ネットワークデータ構造とは、ノード同士の接続が網のようになっているデータ構造のことです。
木構造
木構造とは、データを格納すノードとノード同士を接続するブランチが木のように枝分かれしている構造のことです。
- 根(ルート):最上位
- 親ノード:ノードの上位ノード
- 子ノード:ノードの下位ノード
- 葉(リーフ):下位ノードでノード持たない
二分木
全ての親ノードが、2個以上の子ノードをもつ木構造です。
左側の子ノードのプロパティがノードの値よりも大きいまたは右側の子ノードのプロパティがノードの値よりも大きいという大小関係が成り立つ木構造です。
ヒープ
ヒープは、全ての親ノードが、2個以上の子ノードをもつ木構造です。
また、全てのノードで親のノードのプロパティよりも子のノードのプロパティが大きいまたは親のノードのプロパティよりも子のノードのプロパティが小さいという大小関係が成り立つ木構造です。