2018年12月21日SHAREツイートシェアはてブLINEPocket機械学習がしたい...でもデータがない!機械学習の勉強をするうえでほしいデータは、web上で機械学習用のデータとして見つけることができます。自分で実装するときは独自でデータセットの収集を行う必要になりそうです。自分でデータセット見つけるのは大変そう、めんどくさい。そこで今回は少ないデータセットでもよりいい精度を出すためにデータの水増しを実装してみました!データセットにはcifar-10のデータ数を少なくして使います。目次データの水増しとはcifar-10とは?水増しcifar-10をCNNで推定してみる。総括データの水増しとはデータの水増しとはデータに様々な線形変換を加えることによってデータの数を増やすことを言います。線形変換とは、左右反転したり、コントラストを変えたり、ズームしたり、ずらしてみたりといったようなことです。今回は左右反転、ずらし、ノイズ付加の3つを実装してみました。ほかにも様々な変換がありますので詳しくは次のサイトを参考にしてみてください。qiita.comこのように少ないデータを水増しする技術をデータオーギュメンテーションというそうです。truckの10クラスの写真が格納されたデータベースです。合計60000枚あり、サイズは32×32ピクセルでRBGの3チャネルがあります。いうもののサブセットで物体が何かを認識する一般物体認識という分野で有名なデータセットです!ちなみにデータはnumpy.ndarrayの形で入っているのですぐにpythonで扱うことができます。cifar-10の詳細に関してはこちらaidiary.hatenablog.comでは、このcifar-10をCNNで学習しましょう!水増しcifar-10をCNNで推定してみる。random_state=random_state)これでそれぞれにデータが入りました。ax.imshow(train_X[i])cifer-10.plotこのように写真を見ることができます。次にCNNの実装をしたいところなのですが、その前にデータの数をそれぞれ100個づつに減らしていきます。train_X_10[100:]これで各クラス10個の計1000のデータとそのラベルが得られました!次にこのデータに3つの加工を加えて4倍に数を増やします。加工後のデータとなっています。この後CNNを実装します。CNNの実装に関しては次のページを参照してみてください。CNNの構造に関しては今回のメインではないので割愛させていただきます。詳しい実装は以下のサイトなど参考にしてみてください。qiita.comそれではCNNを使ってそれぞれepoch数を5にしてF値を計算してみました。誤差関数の値、今回はクロスエントロピーというものを使用。F1はCNNより得られたF値です。testには画像1万枚を使用しました。0.127...?むしろさがってる!?最初は水増しデータのほうが成績が良かったんですがすぐに逆転されてしまいました。少ない画像を加工して何回も使うのでオーバーフィッティングしたオーバーフィッティングとはdatahotel.io今回の場合、同じようなデータを入れすぎたため汎用性がなくなってしまったのかなと思います。与えたデータが難しすぎたたとえばノイズなど実際のテストデータには存在しない水増しデータも追加していたのでその影響で目的としてないノイズが入った画像でも分類できるモデル!を作ろうとしてしまい目的であった分類が難しくなってしまった。与える水増しデータは実際に想定されるものでないとおかしな汎用性を生んでしまいF値が低下してしまう。0.285結果はかなり悪くなりました。ほんとうに悪いデータは加工無しが100枚でCNNの構造はcifar-10と同じです。MNISTに関してはtestデータもだいたい中心にそろっているわけだから移動させたデータもよくなかったのかもしれません。この話はデータセットの話だけでなく実際にもあってほかにも顔検出の場合にたは、顔の部分の隠れが多すぎる画像を加えると、顔検出の性能を悪くすることが起こったりするらしいです。改善案データの数を多くしてオーバーフィッティングを防ぐ。クロスバリデーションなどオーバーフィッティングの対策アルゴリズムを実装する。線形変換によりありえそうなものを考えて実装する。今回はデータの少なすぎることが原因でオーバーフィッティングしてそうなので実際にデータ数を各クラス1000にしてオーバーフィッティングを防いでみました。0.583計算するのになかなか時間がかかりました。今回はデータの水増しについて勉強しました。はじめ思いついたときにデータ少なくてもできるじゃん!!と思ったんですが簡単にはうまくいかないものですね。水増しについて調べながらオーバーフィッティングや画像変換の方法など学ぶことができました。参考になったサイトを下に貼っておきます。