質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2255閲覧

順序に強く依存する特性に対する機械学習の適用方法は?

horiegom

総合スコア152

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/05/15 08:01

編集2018/05/15 08:45

前提・実現したいこと

TensorflowやKeras、scikit-learnを用いた機械学習を実装しています。

現在の課題は「順序に強く依存する」特性の予測です。

たとえば塗膜の様な分野では
Aを10mm、Bを5mm、Cを15mm の順に塗ると特性Xが0.4
Aを10mm、Bを20mm、Cを15mm の順に塗ると特性Xが0.8
Bを5mm、Aを10mm、Cを15mm の順に塗ると特性Xが15.5

のように順序によって特性が大きく異なるケースがあります。
例えば(BがAの下地となったため、Aの特質が飛躍的に向上したため)などと説明はつけられる事が多いですが、
これを機械学習で予測したいです。

更に、同じAといっても
温度bb度、湿度cc%、時間dd秒で成膜したA
温度tt度、湿度rr%、時間ssで成膜したA
の様に条件をふっています。(↑はあくまでも例ですが。)

十分なデータベースがあることは前提として、
Cを15mm、Bを5mm、Aを10mm の順に塗ったときの特性Xを予測するには
どのような機械学習手法を使えばよいでしょうか。

時系列データとしてLSTMで解析すべきなのか、もしくは他に優れた手法があるのか数ヶ月悩んでいます。

*Tensorflow,Kerasは扱ったことはありますが、LSTMは未経験です。

試したこと

順序に関するデータは入れずに、例で言えば厚みのデータだけを用いた
機械学習(SVR、木系)などは試しました。

補足情報(FW/ツールのバージョンなど)

Windows7 or Ubuntu 14.04 LTS
on Anaconda
Tensorflow
Keras
scikit-learn
xgboost
など

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

とりあえず1層をどう表現するかですが、A,B,Cの塗料があるとして、3次元の特徴量で種類と厚みを表現すれば良いでしょう。
例:Aを10mm:[10,0,0](idnex:A,B,C)
複数の層がある場合は、これを並べて二次元の配列にします。
例:Aを10mm、Bを5mm、Cを15mm
[[10,0,0],[0,5,0],[0,0,15]]

RNN系でも良いですし、CNNを自然言語処理に使うときの方法論も適用できるといえばできます。

参考:
自然言語処理における畳み込みニューラルネットワークを理解する · けんごのお屋敷

あるいは、極めて単純にこうしてしまう手もあります。学習データが十分で層の数が固定なら、これでも意外といけるかもしれません。
例:Aを10mm、Bを5mm、Cを15mm
[10,0,0,0,5,0,0,0,15](index:1層目のA,B,C,2層目のA,...)

投稿2018/05/15 08:24

編集2018/05/15 08:31
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

horiegom

2018/05/15 08:54 編集

「n次元の特徴量で種類と厚みを表現」 ありがとうございます。参考になりました。 後だしで申し訳ないのですが、 更に、同じAといっても 温度bb度、湿度cc%、時間dd秒で成膜したA 温度tt度、湿度rr%、時間ss秒で成膜したA の様に条件をふっています。(↑はあくまでも例ですが。) そうすると Aを10mm、温度25度、湿度50%、時間30sは [[10,25,50,30],[0,0,0,0],[0,0,0,0]](idnex:A,B,C) のように更に入れ子にすればよろしいでしょうか?
hayataka2049

2018/05/15 09:13

入れ子にしすぎると面倒くさいので、[10,25,50,30,0,0,0,0,0,0,0,0]にするという方法もあります。情報が4つ、塗料の数が3つで12次元になります。
horiegom

2018/05/15 09:19

なるほど。 私の過去のやり方は A(10,25,50,30) / B (5,25,40,30)/ C (15,40,40,40) を [10,25,50,30,5,25,40,30,15,40,40,40] として表現していたのですが [ [10,25,50,30,0,0,0,0,0,0,0,0] , [0,0,0,0,05,25,40,30,0,0,0,0] , [0,0,0,0,0,0,0,0,15,40,40,40] ] とするのがひとつの解法なのですね。是非試してみたいと思います。
hayataka2049

2018/05/15 09:24

それだとA,B,Cの違いが無視されますね>私の過去のやり方 [ [10,25,50,30,0,0,0,0,0,0,0,0] , [0,0,0,0,05,25,40,30,0,0,0,0] , [0,0,0,0,0,0,0,0,15,40,40,40] ] の3*12次元の配列にしても良いし(LSTMやCNNを使うならこっち)、回答に書いた通り36次元で与えるのもありといえばありです(これだとベクトルになるのでSVRやRFRにそのまま入れられるメリットがあります)。
hayataka2049

2018/05/15 11:06 編集

ちょっと0が多くて無駄っぽいので、A,B,Cを3次元のone-hotで表現し([1,0,0]等)、情報4つ+A,B,Cの7次元で一層を表現するというのもありかもしれません([1,0,0,10,25,50,30]等)。性能の良し悪しは一概にいえないです(塗料の違いが重要なら微妙に不利な気がする。塗料の違いは重要ではなく、温度、湿度、時間、厚さは共通で重要とかだと逆に有利な可能性もあるような気がする)。
horiegom

2018/05/16 07:01

>[1,0,0,10,25,50,30]も検討しましたが、仰るとおり「塗料の違いが重要なら微妙に不利な気がする」と「塗料によって、25度が最適なA、35度が最適なB、Cは温度に依存しない」などがあるため、 提案いただいた「3*12次元の配列」で計算するのが良い予感がします。 あと、[1,0,0,10,25,50,30]だと重要変数の導出が難しくなるでしょうか。 Bの温度とCの膜厚が最も影響が大きい。という示唆も得るには「3*12次元の配列」が適している気がします。 色々とご教示いただいたので、可能なら色々と試してみたいです。 (実験屋なのであまり時間は取れませんが。。) A/B/CとB/A/Cを区別するために B/A/B/Cという順番だと仮定して A(10,25,50,30) / B (5,25,40,30)/ C (15,40,40,40) を [0,0,0,0,10,25,50,30,5,25,40,30,15,40,40,40] B (5,25,40,30) / A(10,25,50,30) / C (15,40,40,40) を [5,25,40,30,10,25,50,0,0,0,0,30,15,40,40,40] と表現していたのですが、ご指摘の通り情報が欠落していますし、何より美しくないので悩んでおりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問