Excite-Yellow

https://github.com/excitejp/booost2022-yellow

Python

TypeScript

Next.js

AWS

Docker

過去の売上原価や販管費などのデータから売り上げを予測するアプリ

やまと

推しアイデア

SKLearnにあるすべての回帰を試して、最適な回帰を選定した。

作った背景

このインターンに参加した背景を書こうと思います。このチームは三人とも機械学習を時間をかけて学習したことがなく、勉強したいと思っていたところ、ハックツハッカソンでエキサイトさんが機械学習のインターンを行うことを知り、参加しました。

推し技術

Three.jsを使用し、立体感のあるTOPページを作成しました。FastAPIを用いて、爆速でAPIサーバを構築しました。

プロジェクト詳細

メンバー

  • 熊谷 峰大   九州工業大学情報工学部2年
  • 小谷 築功 九州工業大学情報工学部2年
  • 岡村 和哉   九州工業大学情報工学部2年

技術構成

image

フロントエンド

使用言語

  • TypeScript

フレームワーク

  • Next.js

ライブラリ

  • Three.js
  • Tailwind.css
  • Recharts

ルーティング

Path : "/" TOPページ

image

Path: "/input" データ入力・出力ページ

image

バックエンド

使用言語

  • Python

フレームワーク

  • FastAPI

インフラ・その他

  • AWS EC2
  • Docker
  • Nginx

API定義

method : POST , path : "/learn"  機械学習用

リクエスト

{ "sales": { "variable_cost": int #変動費 "fixed_cost": int #固定費 } "sga_expenses": { "variable_cost": int #変動費 "fixed_cost": int #固定費 "workers_linked_expenses": int #人員連動費 "investment": int #投資 } "year_month": date #年月 }

レスポンス

{ "total_sales": int }

機械学習

使用言語

  • Python

ライブラリ

  • SKleran
  • Pandas
  • Numpy

開発環境

  • GoogleColab

今回は、重回帰分析をメインに分析を行いました。

分析の際に用いた回帰

  • 線形回帰 (LinearRegression)
  • リッジ回帰 (Ridge)
  • Lasso回帰 (Lasso)
  • ElasticNet回帰 (ElasticNet)
  • RandomForest回帰 (RandomForest)

手順

  1. 与えられたデータセットから、年、月、売上原価の固定費、変動費など必要なデータをPandasを用いて、CSVから抜き取る。

  2. 抜き取ったデータを会社のIDでソートを行い、一つのCSVにする。

  3. 以下の計算方法で計算を行う。

    • 売上高・営業外収益・特別利益
      • 貸方金額 - 借方金額
    • 上記以外
      • 借方金額 - 貸方金額
  4. 説明変数と目的変数に分割する

  5. トレーニング用とテスト用データを7:3に分割し、説明変数に正規化を適用する。

  6. 学習を行い精度を測る。

回帰選定

image

何度かテストモデルの提出を行い、その中で一番結果の良かったリッジ回帰を採用しました。

テストモデルの結果

MAE : 55899422.4375 RMSE : 73794467.18013684

image

今後の課題

SKlearnの用意してくれている、リッジ回帰のクラスには、alphaというパラメータがあり、その設定の仕方でも予測値が変わってくる。(今回alphaの値は15)そのため、最適なalphaの値を決めることができれば、より良い精度になると思う。

やまと

@yamato0211