製造業界のデータサイエンティスト奮闘記

製造業でのビッグデータ分析やAIによるデータ解析、機械学習についてのブログ

製造業における機械学習のテーマ選定

f:id:data_scientist:20190516104312j:plain
過去の記事でもテーマ選定に関する内容については軽く触れているのですが、今回はより現実的に、基本的な機械学習の仕組みを理解した人の間での議論という観点でのテーマ選定について論じてみたいと思います。
https://data-scientist.hatenadiary.jp/entry/2018/08/08/231702

どんなテーマならイケるか?

人間が何かをやりたいと思えばそれ自体がAIのテーマになりうるので、勝算というとなかなか分類ができません。失敗しなければ成功なので、失敗のパターンを考えてみましょう。個人的には3パターンあると考えていて、「技術的要因」「データ収集が困難」「社内の政治的要因」があると思っています。

技術的要因

「技術的要因」の方は単純で、世の中にそもそも解決できるような技術が存在しないケースです。Googleで調べてもちっとも似たような事例が出てこなければ(かすりもしなければ)概ねこのパターンではないでしょうか。私の経験だと、図面をAIに書かせろと持ち込まれた事例がありますが、ここでは「機械学習の仕組みを理解している人の間での議論」なので今回は外しましょう。

データ収集が困難

製造業で異常検知の話題は多いですが、これが案外難しい。技術的に難しいというよりも、肝心の異常データがなかなか手に入らないという性質上、データそのものが存在しないことも少なくありません。未知の異常などは、正常状態との乖離を検出しなければならないため、どうしても精度は低くなりがちです。少しでも多くデータを得ようとすると時間がかかってしまうという点で、データ収集に時間がかかることが課題と言い換えることができます。
※未知は仕方ないと割り切り、既知の不良種別だけをラベリングする。製品の重要特性値を予測する問題に置き換える。等の工夫はできます。

データ収集に時間がかかるケースとしては下記のようなものがあります。

  • 異常データが少ないため、出てくるまで長期的に待たなければならない。
  • 冬は調子が良いけど夏は機嫌が悪い設備などがあったりして、実は季節性のあるデータだった。
  • 改善が頻繁で、ラインが変更されると特性が微妙に変わり、再度データを収集するのに時間がかかる。
  • 生産準備中で、次の試作が1ヶ月後

もう少し突っ込んで考えると、原理的に測定が困難なパラメータが予測精度に起因しているケースもありますね。マーケティング系で例えると、消費者の心理状態とかです。
製造業でのケースというとすぐには思いつきません。。。メーカーはすでに並々ならぬモノの測定能力を有しているはずなので、大抵の測りたいものはその気になれば測れてしまうような気がします。強度とかの必ず破壊が伴うようなデータでしょうか。目的が要因分析やモデル構築であれば、モデル構築用にサンプルを破壊検査したりしてデータ収集できそうですので、測定したいけど原理的に出来ないというのはなかなか思いつきません。

社内の政治的要因

「社内の政治的要因」は要するにリソース(お金)の問題です。センサを付ければデータを収集できるけれど、

  • 測定に工数がかかる
  • 測定器が高い
  • タクトタイムが1sec→3secになる
  • 工程変更に客先承認が必要
  • 工程設計の担当箇所が複数部門間で複雑に絡み合っている
  • そもそもそれに取り組むコストメリットが少ない

等々、出来なかないけど現実的に無理というパターンです。データが有ると思っていたのに構造化されたデータではなかった場合などは、構造化されたデータを取得するために、上記の問題が立ちふさがるケースもあります。

他には、社内の人材ではDeep Learningはできるけど強化学習はできないといったケースでしょうか。もっとも、この場合は世の中に技術は存在しているので外注するなり育成するなりできるはずなのでお金の問題に分類できます。
また、Deep Learning関連で言えば、画像をラベリングしたり、異常な領域を塗りつぶしたりするためにマンパワーが必要になってきます。これもDeep Learningのエンジニアが直接やる必要も無い作業なので、アルバイトなり外注なりで対応する場合はやっぱりリソースの問題になってきます。


例:ベタ塗り画像をリアルな風景画に変換。学習データ作成の苦労がしのばれます。


まとめると以下のようになります。

  • 技術的要因
    • 技術が存在しない
  • データ収集が困難
    • 異常検知系で、異常データが少ない
    • 収集までに時間がかかる
    • 原理的に測定が困難
  • 社内の政治的要因
    • ヒト/モノ/カネのどれかが足りない

感想

あとは感想レベルですが、「これ系のテーマは大抵厳しい」という点で言えば、製造業としてのドメインとは関係のない、人事や経理など管理部門系のタスクを機械学習に置き換えようとする試みは、協力者を得られづらいという点で難しさが増すような気がします。
異常検知系は異常データが少なかったり未知の異常が出てくることもあるので、テーマとして難易度は比較的高いと言えます。とはいえ結局のところ、イケてるイケてないの判断はケースバイケースとしか言いようがなく、幅広くテーマを募った後にデータ収集難易度・リソース・ROIのバランスで優先順位を付けて取り組むのが妥当、というありきたりな結論になります。

相性の悪い生産条件を統計的に見つける(Python)

製品にもよりますが、相性の悪い生産条件というものもあったりします。いい例が思いつかないのですが、設備A1で生産したものを次の工程で設備B1に投入する場合は問題無いのに、設備B2に投入すると歩留まりが悪化するなどのケースでしょうか。
下記のプログラムは、こんな統計処理もあって良いんじゃないかと思ったので、思いつきで書いてみました。案外処理が難しかったので、備忘録的に残しておこうと思います。

少し結果が見にくいかもしれませんが、パラメータ同士の組み合わせが不良率にどう影響するかを集計しています。

import pandas as pd
import itertools

df = pd.DataFrame({
    "説明変数1": ["A", "A", "A", "B", "B"],
    "説明変数2": ["C", "C", "D", "D", "C"],
    "説明変数3": ["E", "E", "F", "F", "E"],
    "生産数": [100, 200, 300, 100, 100],
    "不良数": [2, 1, 3, 1, 5],
    "不良率": [0.02, 0.005, 0.01, 0.01, 0.05]
})

l = []
for grp in itertools.combinations(["説明変数1", "説明変数2", "説明変数3"], 2):
    tmp = df.groupby(grp).sum().loc[:, ['生産数', '不良数']]
    tmp.index = tmp.index.rename(['説明変数A', '説明変数B'])
    l.append(tmp)
group = pd.concat(l).sort_index()

group["不良率"] = group["不良数"] / group["生産数"]
print(group)

#             生産数  不良数   不良率
#説明変数A 説明変数B
#A     C       300    3  0.01
#      D       300    3  0.01
#      E       300    3  0.01
#      F       300    3  0.01
#B     C       100    5  0.05
#      D       100    1  0.01
#      E       100    5  0.05
#      F       100    1  0.01
#C     E       400    8  0.02
#D     F       400    4  0.01

とにかく簡単に、製品不良の原因分析をしてみる(PythonのRandom Forestを使って)

f:id:data_scientist:20181228132620j:plain
不良の原因を突き止めるにあたっては、MT法やT法、新QC七つ道具やらなぜなぜ分析やらいろんなものがありますが、製造業に関して言えば機械学習的なアプローチで進めることはまだ少ないのではないでしょうか。今では機械学習を売りにしたソフトウェアも随分と沢山作られており、「不良の要因分析をしたい」というニーズがあることをどこからか嗅ぎつけて来ては、どこぞの企業が営業をかけてくるという事も少なくないと思います。

とはいえ、設計であれ製造であれ、予算を使ってそれらのソフトウェアを導入すること自体はやぶさかでないにせよ、困っているのは”今”な訳で、何ヶ月もかかるようなPoCをやりたい人はあまりいないと思います。また、担当者がソフトウェアにドンピシャな回答を求めることも稀で、手当たり次第に原因を突き止めようとするのではなく、あくまでアタリをつけるために使いたいという場合が多いように思います。担当者自身はそれなりにノウハウを持っているものなので、ソフトウェアに頼らずともなんだかんだで原因を探り当ててくることがほとんどです。

そんなわけで今回は、予測精度や見つけ出した原因の確からしさといったことは優先順位を落として、とにかく「簡単」に「それっぽい」結果が出てくる方法を紹介したいと思います。使用するのはPythonで、scikit-learnのランダムフォレストというアルゴリズムを用います。流行りではXGBoostやLightGBMといったより高い精度がでやすいライブラリもありますが、今回はインストールも最小になるようランダムフォレストを使っています。また、簡単をモットーに紹介するので、結果の吟味を十分に行わないと、誤った判断をしてしまう可能性がある点については予めご了承ください。

続きを読む

生産計画をPython(PuLP)を使って最適化する

f:id:data_scientist:20181227160421j:plain
生産管理においては、MRP(資材所要量計画)という管理手法は古くからありますが、今でも製造業を中心に当たり前のように活用されています。MRPののちにERPとして製造から受注、出荷、財務、会計など企業内経営資源のほとんどを含むようになり、今では全体最適化の考え方が導入されている企業も多いでしょう。今回は企業内での全体最適というよりも、いち製造担当者が管理できるレベルの生産計画を最適化するための方法について書いてみたいと思います。

Excelでも最適化ソルバーというのもあるんですが、Excelは遅いうえに扱える変数や制約式の数が少ないので、PythonPuLPというライブラリを使った方法について紹介します。

続きを読む

AI(機械学習)で不良品や故障を削減するには

f:id:data_scientist:20180821162151j:plain

 

製造業のミッションは欲しい仕様のモノを安く、欲しい数だけ、欲しい時に顧客に届けるということに尽きます。その目的達成のためにデータサイエンティストも活動するわけなんですが、活動と一括りに言っても、需要予測、特性予測、不良検知、設備保全などデータ活用の適用範囲は多岐に渡ります。今回はそのなかでも、不良を削減するというテーマについて掘り下げてみようかと思います。

続きを読む

製造業界のデータサイエンティストの実際

f:id:data_scientist:20180810134536j:plain

 

さてさて、第一回でどんなことを書こうかなと考えていたわけですが、今回は製造業界のデータサイエンティストという立ち位置で、Kaggleの課題でイメージするようなデータサイエンティストの仕事と製造業でのギャップみたいなものを論じてみようかと思います。

続きを読む

ブログはじめました

はじめまして、TAKと申します。
 
とある製造業の企業(大手電気メーカー)でデータサイエンティストとして働いています。データやAIにまつわるあれこれをやり始めたのはここ3年ほどなので、根っからのデータサイエンティストというより、数ある業務の一つとしてデータ分析をやり始め、徐々に主業務へと軸足をずらしていったという感じでしょうか。
 
大企業とはいえ、メーカーでデータサイエンティストともなると、それなりに希少種ではないかと思います。そんななか孤軍奮闘を続けていると、新しい情報へのアンテナがどうにも錆びついてくるなぁと感じていたので、外部発信をエンジンにスキルアップできないかと思いブログを始めた次第です。
 
エンジニアリング以外では経営コンサルの分野に関心があったこともあって、働きながら大学で経営学を修めた時期もありました。良く言えば幅広い、悪く言えば器用貧乏とも言えますが、理系と文系の両方を学んだからこそ見えてくる視点もあるのではないかと考えています。

このブログでは、データサイエンティストから見た製造業でのデータ活用、というよりも、製造業から見たデータサイエンス的なデータ活用という視点で書いていこうかと思っています。統計分析や機械学習の手法自体は至るところに情報があふれているので、ここでは「メーカーで取り入れるにはどうしていけばいいいか」とか「こういうデータは機械学習よりも品質工学の方がいいんじゃないの?」などの課題や「お上がAI! AI!としか言わない」など政治的な話まで、製造業で現実的に活用していくためのあれこれを経験を交えながら紹介していきたいと考えています。

もちろん、製造業の方だけでなく、製造業向けのAIソリューションを展開したい方やデータサイエンティストを目指す方にも役に立つような内容になればいいなと思います。業界が違えば文化も違うわけで、メーカーの人間からすればAIベンチャーの人間は異国の人のように見えますし、逆もまたしかりでしょう。ゴリゴリのIT畑の人が「メーカーの人ってこんなこと考えてるんだなぁ」と相互理解を深められたら嬉しいかぎりです。

IT業界の方にとっては、品質工学やFMEA、ライン、寸法、QC、4M、などなど、あまり使わない単語が出てくるかもしれませんが、せめてこれくらいは知っててほしい。。。くらいの単語で収めたいと思っていますのでお付き合いいただければと思います。

それではこれから、よろしくお願いします。