質問編集履歴

6

追記。

2020/05/12 00:32

投稿

MagMag
MagMag

スコア80

test CHANGED
File without changes
test CHANGED
@@ -80,4 +80,4 @@
80
80
 
81
81
  ### お聞きしたいことの補足
82
82
 
83
- 例えば、オブジェクト指向分析を活用することで、データと処理をまとめたオブジェクトを作ったり、パイプラインをイメージして各処理をメソッド化して、自分なりに処理フローをわかりやすくしています。ただ、このようなAI周りで発生するようなアジャイル開発において、効率や保守性を高めるために、他にどのような考え方を使っているのか(それこそwebで言うMVCのような)、事例や知見があれば紹介いただきたい。
83
+ 例えば、オブジェクト指向分析を活用することで、データと処理をまとめたオブジェクトを作ったり、パイプラインをイメージして各処理をメソッド化して、自分なりに処理フローをわかりやすくしています。ただ、このようなAI周りで発生するようなアジャイル開発において、効率や保守性を高めるために、他にどのような考え方を使っているのか(それこそwebで言うMVCのような)、事例や知見があれば紹介いただきたい。まとめたものでなく、同様のプロジェクトコード例が格納されている場所でも十分役に立ちます。

5

内容追記

2020/05/12 00:32

投稿

MagMag
MagMag

スコア80

test CHANGED
File without changes
test CHANGED
@@ -25,3 +25,59 @@
25
25
 
26
26
 
27
27
  [分析者から見た使いにくいデータ基盤の話](https://recruit-tech.co.jp/blog/2018/12/25/datakiban_-risou/)
28
+
29
+
30
+
31
+ ---
32
+
33
+ **(追記)質問が曖昧で申し訳ありません。より具体的な内容を記載いたします。**
34
+
35
+
36
+
37
+ ### 背景や目的
38
+
39
+ - 工場現場から発生するセンサーデータを処理し、可視化したり、機械学習にかけたい(オフラインで分析。オンライン処理不要)。
40
+
41
+ - 基本Pythonのみで解析。ただ、一部解析にRを使うことがある。
42
+
43
+ - データの発生条件や処理方法が頻繁に変わるので(機械設定が変わるなど)、その度に前処理スクリプトを変更する必要がある。
44
+
45
+
46
+
47
+
48
+
49
+ ### データ処理内容
50
+
51
+ - 現在のプログラム構造として、大きく3つに分類して作成。
52
+
53
+ 1. 元データはCSVファイルであり、HDDに保存(数十GB)。このcsvをダウンサンプリングしてmySQLに格納する処理
54
+
55
+ 1. mySQLからデータを抽出してさらに処理してpandas DataFrameに変換する処理
56
+
57
+ 1. 機械学習処理
58
+
59
+
60
+
61
+
62
+
63
+ - 各処理概要は以下のとおり
64
+
65
+ 1. 元CSVのダウンサンプリングしmySQLに格納(容量1/10)。元データはマスターデータとして保管。
66
+
67
+ 1. mySQLに格納されたデータにさらに前処理を加えて(欠損値補完、平滑化、PCAなど)、数十MBに圧縮し、PandasのDataFrameに変換。(pickleやCSVで保管し、次処理工程に受け渡し。
68
+
69
+ 1. 機械学習にてモデリングし(PythonやR)、予測モデル構築やシミュレーションの実施。
70
+
71
+
72
+
73
+ ### 困りごと
74
+
75
+ - 例えば機械条件の変更が発生すると、都度スクリプト変更が発生する。また、1,2,3それぞれ、処理結果を見ながら変更するので、処理変更が多い。また、各処理が後段の処理に影響するので、スクリプト全体の見通しが把握しにくい。
76
+
77
+ - プログラムをなるべく再利用できるようにしたい。
78
+
79
+
80
+
81
+ ### お聞きしたいことの補足
82
+
83
+ 例えば、オブジェクト指向分析を活用することで、データと処理をまとめたオブジェクトを作ったり、パイプラインをイメージして各処理をメソッド化して、自分なりに処理フローをわかりやすくしています。ただ、このようなAI周りで発生するようなアジャイル開発において、効率や保守性を高めるために、他にどのような考え方を使っているのか(それこそwebで言うMVCのような)、事例や知見があれば紹介いただきたい。

4

多少修正

2020/05/11 12:54

投稿

MagMag
MagMag

スコア80

test CHANGED
File without changes
test CHANGED
@@ -10,13 +10,11 @@
10
10
 
11
11
  ---
12
12
 
13
- 例えば、以下のようなことを知りたいと考えています(内容重複しています)
13
+ 例えば、以下のようなことを知りたいと考えています。
14
14
 
15
- - 前処理パイプラインはどう組むと保守性が高まるか
15
+ - 前処理パイプラインはどう組むと保守性が高まるか。例えば、分析方法やデータ内容が、時と場合で少しずつ変わることがあるが(データの内容やユーザー要求が変わるなど)、どのように組んだら保守効率を高められるか
16
16
 
17
- - 分析方法やデータ内容が少しずつ変わっていくが、どのように開発効率を高めるか
18
-
19
- - プロセスの再利用できるようにするために、どのような組み方をすれば、再利用性が高まるか
17
+ - 前処理プログラムの再利用できるようにするために、どのような組み方をすれば、再利用性が高まるか
20
18
 
21
19
  - パイプラインに沿ってデータを処理していたった時に、各データをどのように保存していくか
22
20
 

3

多少修正

2020/05/11 07:25

投稿

MagMag
MagMag

スコア80

test CHANGED
File without changes
test CHANGED
@@ -6,9 +6,13 @@
6
6
 
7
7
 
8
8
 
9
- 例えば、以下のようなことを知りたいと考えています。
10
9
 
10
+
11
+ ---
12
+
13
+ 例えば、以下のようなことを知りたいと考えています(内容重複しています)。
14
+
11
- - 前処理しながらデータが順次発生するが、データと処理をどうめると保守性が高まるか
15
+ - 前処理パイプラインはどう組むと保守性が高まるか
12
16
 
13
17
  - 分析方法やデータ内容が少しずつ変わっていくが、どのように開発効率を高めるか
14
18
 

2

個別内容の追記

2020/05/11 07:23

投稿

MagMag
MagMag

スコア80

test CHANGED
File without changes
test CHANGED
@@ -6,6 +6,18 @@
6
6
 
7
7
 
8
8
 
9
+ 例えば、以下のようなことを知りたいと考えています。
10
+
11
+ - 前処理しながらデータが順次発生するが、データと処理をどうまとめると保守性が高まるか
12
+
13
+ - 分析方法やデータ内容が少しずつ変わっていくが、どのように開発効率を高めるか
14
+
15
+ - 各プロセスの再利用できるようにするために、どのような組み方をすれば、再利用性が高まるか
16
+
17
+ - パイプラインに沿ってデータを処理していたった時に、各データをどのように保存していくか
18
+
19
+
20
+
9
21
  Web開発でよく使われるMVCモデルのイメージです。 MVCのようなアプリケーションフレームワークではないですが、例えば、以下のようなデータ基盤の作り方として、こういう考え方があるといい、といったイメージです。
10
22
 
11
23
 

1

曖昧さの排除

2020/05/11 07:21

投稿

MagMag
MagMag

スコア80

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- この時、**__データの持ち方やオブジェクトの設定方法など、こういう事例の時はこういった処理をした方が開発効率がよいといったような、アーキテクチャの考え方があれば参考リンクや図書を共有いただけないでしょうか?__**
5
+ この時、**__データの持ち方やオブジェクトの設定方法など、データ解析におけるアーキテクチャの考え方があれば参考リンクや図書を共有いただけないでしょうか?__**
6
6
 
7
7
 
8
8