見出し画像

体重の変化予測、 変動の要因を分析 〜ダイエット体重予測AIをつくる〜

こんにちは。MatrixFlow広報部の中野です!
今回はMatrixFlowを使ってダイエット中の体重変化の予測AIを作りたいと思います。

データの用意

以下のサイトからcsvデータをダウンロードします。
『2018 calorie, exercise and weight changes』https://www.kaggle.com/chrisbow/2018-calorie-exercise-and-weight-changes

画像1

ダウンロードしたファイルのデータ内容を見てみましょう!

このようなデータが入っています。
・Date:計測をおこなった日付
・Stone, Pounds, Ounces:体重の計測結果(Stone = 約6.35kg, Pounds = 約453g, Ounces = 約28.3g)
・weight_oz:体重をオンスのみで表した際の総重量
・calories:各日付における摂取カロリーの概算(カロリーは記録の簡易化を目的に、摂取した食材ごとの栄養情報をもとに、50キロカロリー単位で切り上げし計測。栄養情報が手に入らない場合、カロリーは過去の経験と推測をもとに入力している)
・cals_per_oz:摂取カロリーをオンス単位で表記した体重で割った数値
・five_donuts:食事のメインが5つのジャムドーナツだった日 1 = TRUE, 0 = FALSE
・walk:20分以上の自発的なウォーキングをおこなった日 1 = TRUE, 0 = FALSE
・run:2.5マイル(約4キロ)以上のランニングをおこなった日 1 = TRUE, 0 = FALSE
・wine: ラージグラス一杯(250ml)以上のワインを摂取した日 1 = TRUE, 0 = FALSE
・prot: 高プロテインな食事をした日 1 = TRUE, 0 = FALSE
・weight: ウェイトトレーニングをおこなった期間(ウェイトトレーニングの休養日もTRUEとして含む) 1 = TRUE, 0 = FALSE

画像2

用意するのはこれだけ!
このデータセットを使って、体重の変化予測AIをつくっていきます。

早速、MatrixFlowにアクセスして、“AI” を体験してみましょう!

MatrixFlowの操作

<データアップロード>
MatrixFlowにログイン し、データ管理から「新規追加」をクリックし、上記で用意したデータをでアップロードします。

画像3

データがアップロードされたことを確認できました。

画像4

データをAIに学習させる前にデータセットの中身を見てみましょう。
左上の「前処理・データ解析へ」ボタンをクリックします。

画像5

<データ前処理>
前処理・データ解析ページへ飛びました。
データの詳細を見てみると、「列の詳細」のところで赤文字になっているのが確認できます。
赤文字の1つ「weight_oz」をクリックしてみましょう。

画像6

赤文字で「欠損値数:2」と表示されています。これは、列にデータが全て埋まっていなくて空欄のセルが2個存在していることを意味します。この空欄のことを「欠損値」と呼びます。
機械学習では欠損値があるとうまく学習できない場合があるので、欠損値を消す必要があります。

画像7

「欠損値数:2」の横の丸矢印ボタンを押すと欠損値の処理方法が出てきます。
欠損値は値で埋めるか、欠損値を含む行を削除するかを選べます。今回は欠損値の行は全部削除します。(埋める場合は平均や中央値で埋めることを推奨します。)
削除ボタンをクリックします。

画像8

欠損値の行は削除されて、赤文字から黒文字に変わりました。
左上の「閉じる」をクリックして、他の赤文字の項目も同様の処理を行います。
このように機械学習をする前にデータを加工することを「前処理」と言います。

画像9

全ての処理が完了したら、左上の「加工したデータをデータ管理に保存」をクリックし保存します。
(加工が多いようでしたら、左から2番目の「ここまでの処理を保存」で保存しながら作業すると安心です。)

画像10

「名前」と「説明」を入力して、保存するとデータ管理に保存されます。

画像11

データ管理をみてみましょう。前処理済みデータが保存されました。

画像12

<レシピ>
データの準備ができたので、AIの設計図「レシピ」をつくっていきましょう!
レシピ管理のページで、新規作成ボタンをクリックします。
「名前」と「説明」を入力して、「ブロックタイプ」からAIで何をするのかを選びます。
今回は時系列データなのでTrendFlow(トレンドフロー)を使います。

画像13

「TrendFlow」を設置エリアにドラッグアンドドロップして、「データ入り口」ブロックと「精度評価」ブロックに繋げます。
ブロックにポインターを合わせるとピンクの丸ポチが出てきますので、繋ぎたいブロックまで引っ張ります。
繋がったら保存します。これでレシピの用意は完了です!

画像14

<AIの学習>
学習ページにいき、用意したデータとレシピを使ってAIの学習をします。
最初に名前と説明を入れておきましょう。次に用意した前処理済みのデータとレシピをセットします。
記入欄をクリックするとこれまで保存したものが表示されるので、使うデータとレシピを選びます。

画像15

予測する値には「weight_oz(体重)」を選択し、学習に使う値には「Date(日付)」を選択します。
※時系列のデータ予測なので「Date」以外は選択できません。
学習開始ボタンをクリックすると学習が始まります!

画像16

数分で結果が表示されます。
TrendFlowには乗法的と加法的の二つの周期性モードがあるのですが、今回はどちらもあまり変わりませんでした。

画像17

この学習済みAIを使って、今後1ヶ月の体重変動を予測してみましょう!

<予測>
推論ページで、学習済みAIで今作成したAIを選択します。使用するアルゴリズムはどちらもそんなに変わらない結果だったのでNo.1を選び、種類は時系列予測を選びましょう。

画像18

今後1ヶ月の日ごとの体重変動を見ていきたいので、予測期間を「30」、時間単位を「日」に設定して、推論開始をクリックします。

画像19

数秒で結果が出ました。
このダイエットを続ければ、徐々に体重は減っていくようですね!

画像20

グラフ下の小さい図をドラッグすると拡大できます。急激に減るのではないので、とても健康的なダイエットではないでしょうか。

画像21

要因分析

体重変化予測はここまで。
ダイエットは成功の兆しが見えましたが、何が体重変化の要因になっているのかは気になりますね。では、AIに聞いてみましょう!
AIで「重要度」と「影響度」を可視化するAIを作っていきます。

<データの用意>
データは先ほど使ったものを使います。

<レシピ>
AIの設計図「レシピ」をつくっていきましょう!手順は先ほどと同じです。レシピ管理のページで、新規作成ボタンをクリック。
「名前」と「説明」を入力して、「ブロックタイプ」からAIで何をするのかを選びます。
今回は自動構築AI(AutoML)を使います。
「AutoFlow」を設置エリアにドラッグアンドドロップして、3つのブロックを繋げます。

画像22

ここではもう1つ設定します。
AutoFlowのブロックをクリックすると、右側のパラメータが表示されます。
種類を「回帰」選択します。これを保存します。

※回帰分析は、分析の対象となるデータ(目的変数)を、分析の対象となるデータを説明するためのデータ(説明変数)の式で表現することです。

画像23

<AIの学習>
学習ページにいき、AIの学習をします。
名前と説明を入れます。次にレシピと学習データをセットします。
体重変化予測と同じデータ、そして、今作った回帰のレシピを選びます。

予測する値には「change」を選択します。今回は、体重のプラスマイナスの値の要因を探るためです。
学習に使う値には対象となる、食事(カロリー摂取量)や運動の有無などを選択します。
caloriesとcals_per_ozは、情報として重複してしまうので、より制度を高めるために「cals_per_oz」を使います。
学習開始ボタンをクリックして学習させましょう!

画像24

学習している様子を見ることができます。

画像25

要因分析結果

学習が完了しました!
「重要度」と「影響度」を確認してみましょう。重要度は学習にどの列が寄与しているかを可視化する機能です。

結果は…?まずは重要度。
cals_per_ozが最も学習に寄与していますね。やはりダイエットにはカロリー摂取(食事)は重要ですね。続いてrunとwalkが重要とのことです。

画像26

次に影響度も見てみましょう。
cals_per_ozは、カロリーの値が高いほど体重が増える傾向にあることがわかります。
run、walkは、実施すれば体重が減っていますね。

画像27

続いて、wineを飲んだら増える傾向、トレーニングやプロテインをとることは減る傾向だということがわかりました。
注目すべきは、ドーナツです。これは「食事のメインが5つのジャムドーナツだった日」という条件の中で、影響度の大きさも0.000000001程度の差しかないので食事をドーナツに置き換えても影響がほぼないということになりますね!これは甘いものを我慢しなくても良い!とも言えるのではないでしょうか。

画像28

画像29

今回のAIによる分析により、

・今のダイエットを続けていれば、減る傾向にあること(時系列分析)

・食事に気をつけながら適度な運動をしましょう(要因分析)

ということがわかりましたね。


時系列分析はAIで簡単にできてしまうことは嬉しいし、体重が減ることがわかっていればダイエットを続ける励みになりますね!
要因分析については、AIも人間と同じことを言うんだな〜ということと、やっぱりそうだったか!という納得感を得ることができました!

このように、データがあればMatrixFlowでの操作は簡単です。AIで分析することで楽しみながらダイエットしてみてくださいね。


MatrixFlowでは一緒に世界を変えるAIプラットフォームを作る仲間を募集しています(´ω`*)


【会社概要】
株式会社MatrixFlowは、「テクノロジーで世界をつくる」をミッションとするAIベンチャーです。大人から子供、ビジネスマンから学生、デザイナーからサイエンティストに至るまで、様々な人々がAIを活用し、素晴らしい着想を得たり、あっと言わせるクールな活動をすることを支援したいと考えています。その実現に向けた第一歩として、プログラミング不要のクラウド型AI構築プラットフォーム「MatrixFlow」を開発しております。また、様々な会社でのAI活用を推進するためにAIの受託開発・コンサルティング事業も行っております。
【会社情報】
設立 :2018年10月
本社 :東京都台東区
URL:https://www.matrixflow.net/
事業内容:プログラミング不要のAI構築プラットフォーム「MatrixFlow」の運営、および、AIの受託開発・コンサルティング
【お問い合わせ先】
E-mail:support@matrixflow.jp
窓口:MatrixFlowカスタマーサポート

この記事が気に入ったらサポートをしてみませんか?