第1章
データの調査
このebookでは、MATLABによる機械学習の前処理について、ご紹介いたします。
機械学習を使ったことがある方であれば、前処理が必要であることはご存知でしょう。また、手動で行うことが面倒であることもご存知のことでしょう。前処理のスクリプトをこの機械学習のフレームワーク内でアップデートできるようにしておけば、前処理の結果、学習モデルの精度がどう変化したかと確認できるでしょう。
小学生の算数で習う四則演算だと、左から順に計算するなど明確なルールをもっています。リンゴや住宅ローンといったどのような計算式であっても、2 * (6+4)2 = 200等の計算式の答えは不変です。
データの前処理は、それほど単純ではありません。どの順でタスクを処理するのか決まった手順もなければ、すべて変数が結果に少なからず影響を与えうるのです。
データの前処理を行う前に、どのような前処理タスクが必要か確認します。データの照会、可視化、およびその他の調査を行うことで、どこに注力すべきか、また繰り返し作業をすべきところはどこか知ることができます。このプロセスを、調べるべき内容がなくなるまで繰り返します。
このワークフローの繰り返しを記録するには、スクリプトで前処理操作を記録しておくと便利です。前処理の順序によって結果が変わりうるので、その順序を記録しておくことは、調整を容易にします。
それでは、MATLABによる前処理スクリプトの例を見てみましょう。
前処理が必要なデータの生成
% ノイズの入った正弦波を作成した後、 % いくつかの値を削除して欠損値を作成します。 rng default; t = 0:0.01:5; y = sin(t) + randn(size(t)); missingIdx = randi([1 length(y)],100,1); y(missingIdx) = NaN; % データをプロットします。 % 欠損値を表す隙間がプロットに表示されます。 figure; plot(t,y)
欠損値の前処理
% 線形補間を行うfillmissing % 関数を使用して、欠損値を埋めます。 y_filled = fillmissing(y, "linear"); % 補完されたデータをプロットに追加します。 % これで欠損値が埋まったことがわかります。 hold on; plot(t, y_filled, ':r')
ライブエディター タスクによる欠損データの削除
あるいは、ライブエディターのタスクを使用して、この前処理を実行することもできます。ライブエディターのタスクは、MATLABツールバーのライブエディター > タスクのドロップダウンで見つけることができます。“欠損データの削除”では、クリーンアップされたデータと埋められた欠損値を描画します。その他にも、データをクリーンアップする様々な方法も用意されています。
データの平滑化
このスクリプトでは、平滑化を適用する前に欠落したデータをクリーンアップしています。しかし、これが必ずしも最良の選択とは限りません。 前処理の全順番が記録されているために、前処理の順序が結果に与える影響を確認することが容易ですので、遡って確認してみましょう。
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)