Simple ML for Sheetsでkaggleのコンペに参加してみる

# はじめに
こんにちは！AMBL株式会社に21卒で入社した傍示です。現在は画像系AIアプリのインフラ周りをを主に担当させて頂いております。この記事は[AMBL株式会社 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ambl-rd)の14日目の記事です。

この記事では12月8日に発表されたスプレッドシートでAutoMLを試すことができるツール[Simple ML for Sheets](https://workspace.google.com/marketplace/app/simple_ml_for_sheets/685936641092)を使ってkaggleの練習用コンペに参加してみます！
また、このツールを使いたい人のために導入の仕方から簡単な機能を紹介しますので興味を持った方はぜひ利用してみてください。

# 必要なもの
- google アカウント
- kaggle アカウント(kaggleに実際に投稿まで行うので)　[kaggle公式サイト](https://www.kaggle.com/)

# 準備

## Simple ML for Sheetsのインストール

Simple ML for Sheetsはgoogleの拡張機能ですので、
まずは次のページからインストールを行ってください。

[Simple ML for Sheetsのインストールサイト](https://workspace.google.com/marketplace/app/simple_ml_for_sheets/685936641092)
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2297884/e3537062-bcba-e12e-6cc0-d305de297abb.png)

## スプレッドシートの準備

googleアプリからスプレッドシートを選択し、空白の新しいスプレッドシートを作成してください。

![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2297884/c6be56c1-64dc-7a9b-cee0-8631a6efb679.png)
![無題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2297884/27cb0dea-6824-0f06-456e-d2afabd2502d.png)

拡張機能の部分に**Simple ML for Sheets**の項目があればインストールは無事に完了しています。
![無題3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2297884/e6f24d11-0886-edbe-516b-846866342f02.png)


拡張機能の部分にSimple ML for Sheetsの項目があればインストールは無事に完了しています。

# 利用するデータセットの紹介

今回はkaggleの回帰問題のチュートリアルとして有名な[**House Prices - Advanced Regression Techniques**](https://www.kaggle.com/competitions/house-prices-advanced-regression-techniques/leaderboard)を使っていきます！

データの内容としてはアメリカ合衆国アイオワ州エイムズ市の戸建て住宅の価格を79個の変数から予測する表形式データの回帰問題になっています。

**データの内容**
詳しいコンペの情報については上記のURLから確認して下さい。

- 目的変数：SaleCondition(戸建て住宅の値段)
- 説明変数：家の面積や築年数、その他プール・地下室などの家の設備に関する情報79個
- 学習データ：1460件
- 予測データ：1459件
- 評価指標： RMSE(二乗平均平方根誤差) 小さければ小さいほどスコアが良い

## Kaggleのデータを使った回帰モデルの構築

Kaggleでダウンロードしたデータセットをスプレッドシートの「**ファイル**」→「**インポート**」で読み込んでください。

今回は
- train(学習用)
- test(予測用)
- sample_submission(提出ファイル用)

の３つのシートを利用します。

![無題3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2297884/a26c3fd8-c3e3-d22d-0d15-902c4e0bdf83.png)

スプレッドシートの拡張機能から「**Simple ML for Sheets**」を選択して「**Start**」を押すと右の選択欄が表示されますので自分の行いたい用途に
よって機能を選択してください。

機能一覧
- Predict missing values : 他のシートの値を利用して欠損値の予測ができます
- Spot abnormal values : データの異常値を検出することができます
- Train a model : 機械学習モデルの学習ができます
- Make predictions : 学習したモデルを利用して新しいデータに対して予測ができます
- Evaluate a model : 学習したモデルの評価を行えます
- Understand a model : 学習したデータセットの統計量の確認や特徴量重要度が確認できます
- Export a model : 学習したモデルをColabやTensorflow Servingで利用できる形式で出力できます

詳しい使い方は[公式チュートリアル](https://simplemlforsheets.com/tutorial.html)を参照してください。
今回はモデルの学習と予測を試すので**Train a model**と**Make predictions**を利用していきます。

![無題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2297884/a0f7cc18-839d-0d81-8a72-120e8a81f967.png)

### Train a model

Train a modelでは以下の画像の項目を選択して学習を行います。
今回は下記の設定項目で進めていきます。

- Name of the models(モデル名)：**test tree model**
- Label(目的変数)：**SalesPrice**
- Source columns(説明変数の設定)：設定なし
- Advances options Learning algorithm(学習するモデルの選択)：**Gradient Boosted Trees**

項目を選んで**Train**を押すと学習が開始されます。


![無題22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2297884/ac7bb288-c956-9e94-3079-49463c9ccb10.png)

### Make predictions
Make predictionsではTrain a modelで選択したモデルを**Model**で選択し、Predictを押すと予測が開始されます。
予測結果は**Pred:SalsePrice**として新しいカラムとして追加されます。
この予測結果をsample_submissionに貼り付けてcsv形式でダウンロードすればkaggleに提出できます。

設定項目もそこまで多くなく、データを用意した後はマウス操作で簡単に予測まで行えるのでとても便利だと思いました。
では次章で実際にkaggleに結果を出してみましょう！

![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2297884/1d625a8b-d01e-e113-1cc7-9ce0c9875fcb.png)


## kaggleの順位

順位は3351位/4592(上位73%)でした！
特徴量エンジニアリングは全然していないので納得の順位です笑
また自分で特徴量エンジニアリングをした後のデータでも試してみたいと思います。

![無題3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2297884/98bfc76b-1eec-25b8-7504-e3ef83d01aa7.png)


## まとめ

今回はスプレッドシートから簡単にAuto MLを試せるSimple ML for Sheetsを使ってKaggleに挑戦してみました。

最近はプログラムを書けなくてもこうして気軽に機械学習が使える環境がどんどん整ってきているのでその内自分たちデータサイエンティストの仕事が無くなっちゃうのではとたまに考えています。

ただビジネス面でのアプローチの検討やよりきめ細かな特徴量エンジニアリングであったりモデル構築などまだまだ差別化できる点はあると思いますので、そういったニーズを満たせるようなデータサイエンティストになれるように今後も精進していければと思います！