ユーグレナ先端研究コンテンツへスキップユーグレナ先端技術研究課は、ユーグレナグループが有するテクノロジーを応用して、新しい技術の開発や社会実装のための概念実証(POC)を行うチームです。sectionアルコールとデータサイエンス皆さんは『データサイエンス』と聞いてどのようなことを思い浮かべるでしょうか?近年の情報技術の向上によって得られた大量のデータと、高性能な計算機が開発されたことによる処理の能力によって、データの中から知見を引き出そうという流れが強まっています。その一連の営みのことを『データサイエンス』と呼びます。機械学習の大まかな分類とそれぞれの特徴ユーグレナ先端技術研究課でのアルコール飲料におけるデータサイエンス研究の紹介を三部作でお届けしたいと思います。今回は『アルコール飲料とデータサイエンス』についてお話しさせていただきます。アルコール飲料とデータサイエンスにどのような関係があるのか?と疑問に思われる方も多いかもしれません。長い間人類を魅了しているアルコール飲料を、もっと美味しいものにしたい!という考えのもと、近年そのような研究開発の重要性が高まっているという背景があります。かの有名な『獺祭』を作っている旭酒造は、酒造りにデータサイエンスを取り入れたことで、高い品質の再現性と大量生産を確立しました(現在非公開)。https://toyokeizai.net/articles/-/41798酒造りは、伝統的に杜氏という職人文化によって支えられてきました。獺祭では杜氏がいない体制で酒造りをしており、優秀な杜氏がやっていたことを集団でやろうとしています。その中で、様々な形で酒造りの中でデータによる管理を行っています。具体的に挙げると、洗米という米を水洗いする行程では、コメの重量、洗う時間、水温などをすべて数値で計測し、コメに鳩首される水分量を0.2%以下の精度で調整できるようにしています。その日の気温によって少しずつ状況は変わりますので、数値を記録しながらその日に最適な条件にできるようにしてます。)を毎日計測し、それぞれをすべて手書きでグラフにしています。毎日、その日に記録したデータから発行の進み具合を分析して、次の日の温度管理などを判断しています。秘密これもデータサイエンスであり、データを活用して物事の改善をした大変良い例であるといえます。データサイエンスとアルコール飲料の取り組みはこれだけに限ったものではありません。データサイエンスのために使われるプログラミング言語でpythonというものがありますが、その中で公開されているライブラリにscikit-learnというものがあります。このライブラリを活用することによって、データサイエンスの一つの分野である機械学習を活用することができます。datasetというものを使って、機械学習のさわりを見てみたいと思います。公開されているもので、scikit-learnを使うことによって簡単に活用することができます。最初にライブラリを読み込みます。ローカルの環境でやるといろいろ設定が必要ですが、colabではただ次のようなものを実行するだけで十分です。sklearn今回使ったpythonとそれぞれのライブラリバージョンは次のようになります。0.22.2データの確認・可視化データセットを読み込みます。データセットのそれぞれの列の状況を確認しましょう。KBこれでそれぞれの列の名前と数、データ型がわかります。nullがないことを確認することも重要です。欠損値があった場合には適切に処理する必要があります。これ以外にもこれらのコードを実行すると、データを見ることができます。headで最初の5つのレコードが表示され、describeで記述統計量が表示されます。いう基本的な確認はデータのイメージをつかむために重要です。出力は、ここでは省略させていただきます。df_x.head()df_x.describe()次に各変数の相関を見てみましょう。仮に回帰分析をするときには、強い相関がある者同士を排除する必要があります。相関を見るためにはseabornのパッケージを使うと便利です。plt.figure(figsize=[19,10])sns.heatmap(df_x.corr(),annot=True)色が明るいものと真っ黒いものは相関係数の絶対値が相対的に高いことを意味します。datasetについて説明させていただくと、このデータセットは142種類のワインに対して物理的/化学的特徴を測定したもので、このワインたちは使われているブドウの品種で3種類に分類することができます。その3種類について、別々の色付けを各変数同士で散布図を書きます。すべての変数ですると多すぎてこのサイトに収まりきらないので、いくつか抽出したものを載せます。palette='tab10')これを見ることによって、各変数だけでもグループ間に差異があることがわかったり、2つの変数を使うことによって、よりグループ間の傾向に差があることを確認することができることがわかります。機械学習(決定木モデルの学習と評価)基本的なデータの確認が済んだので、ここから機械学習を中でも決定木アルゴリズムを使った予測というものをしていきたいと思います。決定木アルゴリズムとは何でしょうか?決定木アルゴリズムとは、多次元データをもとに目的変数を予測、分類るための木構造を持ったモデルのことを指します。通常の回帰モデルと異なり、非線形な関係を抽出できる点において、ニューラルネットワークと同様に高い予測精度と汎化性能を持っていることが知られていますが、ニューラルネットワークよりも説明変数の取り扱いが柔軟にできます。モデルの構築も用意です。決定木モデルには、シンプルに一つの木構造をもつものもありますが、複数の違う木構造のモデルによってより高い予測精度と汎化性能を求めようとするものもあります。今回はその中でも大きなデータセットでも効率的に学習ができるLightGBMと呼ばれるライブラリを使って、決定木アルゴリズムでワインのデータを学習するコードを載せます。2.2.3まずワインのデータセットを再読み込みして、LightGBM用に変換します。今後精度を検証するために、学習データとテストデータで分割します。テストデータに学習データと同じものが入っている場合、モデルの一般性(汎化性能)に問題が出てしまうので、検証のためにあらかじめ分けることが必要です。label=y_train)これで、あとはモデルのインスタンスをつくり、パラメーターを設定してあげれば学習を始めることができます。パラメーターは、今回考えるタスクがどのようなものであるかによって適宜設定してあげる必要があります。今回は多クラス分類であるので、次のように設定しています。valueこれをもとに、次のコードで学習をすることができます。分けておいたテストデータで予測性能を評価します。y_pred]ただし、この予測スコアは3つのクラスの確率で表されていることから、それぞれのデータに対して最大の確率を示しているクラスを予測結果として扱うことが適切です。numpyのargmaxでそのような処理が書かれています。多クラス分類の性能評価には混合行列に基づく評価を用います。それぞれの評価の意味はこちらでまとめられています。0.9444444444444444このように、テストデータでも高い予測精度をもつモデルの学習ができたことがわかります。datasetを用いたデータの可視化や購買決定木アルゴリズムの適応を紹介しました。次回の記事では、機械学習ってどういうものがなのかという、全体像についてご紹介できればと考えています。最後までお付き合いいただきありがとうございました。ユーグレナ先端研究.。