kaggleに初めて投稿した話

# この記事の対象者
- 対象
 - 惑わされない方
 - 生暖かく見守れる方
- 非対象
 - 間違いに気づけない方 (初学者)

# 目次
[1. 記事の対象者](#この記事の対象者)
[2. 目次](#目次)
[3. 記事の内容について](#記事の内容)
[4. 実際の分析](#分析)
[5. 反省](#反省)
[6. 参考](#参考)
[7. 所感](#所感)

# 記事の内容
本記事は私が機械学習を学び、kaggleに投稿したことの記録です。題名には"話"とありますが、基本的には私が機械学習の概略を学ぶためのものです。したがって、初学者のためになる話にも上級者のおもちゃにもならない記事ですのでご注意ください。コードも横着してnoteのスクショです。

# 分析
- https://github.com/Masaaki61081/scikit-learn_LinearRegression/tree/master/kaggle_house-prices/house-prices_first  

不慣れでQiitaの使い方が良く分からないのでgithubのアドレスを載せておきます。

## 環境その他
- 環境
 - windows10
 - jupyternotebook
 - scikit-learn
- コンペ
 - kaggle-House Prices: Advanced Regression Techniques(https://www.kaggle.com/c/house-prices-advanced-regression-techniques)

## 方針
- 精度は気にしない
- 使用するモデルは線形回帰
- 欠損値はほぼない
- 選択する説明変数は適当
- とにかく提出できる形にもっていく（最優先）

## データの確認
![DATA.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436016/e5b3df86-e065-21fb-e787-746196f21760.png)
とにかく多いのでいくつか選択することにしました。

## 説明変数の選択とカテゴリ変数への変換
感覚的に築年数、改修日、場所、クラス、ゾーニングを選択しました。　
※後で気づいたがstreetは住所ではなく道路の舗装状態のことでした。

![DATA1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436016/fa619232-91a2-87ce-6a57-ac0b307c0835.png)

MSZoningとStreetはそのままダミー変数に変換しました。

![DATA2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436016/69c0236f-0f78-9515-ac54-8b8503a4633c.png)


## 学習
早速学習します。

![train.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436016/64e43968-6972-de6d-ead8-7b766e71a0bf.png)

決定係数
![score.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436016/81705880-c93e-a9f6-20db-7bb4793acb53.png)
かなり評価値は低いようです。気にせずテストデータの予測を行います。

## 予測
テストデータも同様に処理していきます。ダミー変数に関してはどうなってしまうか不安でしたが項目が同じであったため特に処置はひつようありませんでした。
![data_test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436016/eb94283f-d5aa-5987-7fe7-72110f824b48.png)

![data_test2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436016/feab9955-d20b-0157-9319-6c9ab2358aa3.png)

![predict.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436016/6f481783-8b5e-1b3c-d7ae-49f68376782f.png)

そのままcsvファイルにして提出

結果は順位4705/5274でした。サンプルデータには勝てました。

# 反省
初めての機械学習でしたがサンプルデータを超えられたので最低限の基準をクリアして提出まで持ってこられたことは大変良かったと率直に思いました。スコアはまずまずですが、一方で実際のデータはどうだったのでしょうか。
![概略.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436016/1076170e-8a02-fe3c-f48e-5e971f117948.png)
![300.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436016/cde6b4df-ae10-4a7c-01cf-bfd374110ba2.png)
上記は訓練データ（青）とその予測値（赤）です。10,000~200,000ドル付近に予測が集中していることが分かります。こうして見てみるとただの直線でもそれほど精度が変わらないのではないかという程です。過小適合なのでしょうか。
(2019/11/17追記)

![SalePrice.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/436016/82431bb4-bc09-ad62-3ae3-0e553966fd4b.png)


## 課題
- 機械学習の包括的な知識不足
 - モデルの選定
 - 設計プロセス
- 統計に関する知識の不足
 - 特徴量の評価
 - モデルの評価
 - 確率統計そのものの実力不足
- データの処理力
 - pandas等の知識
 - pythonそのものの知識

などといった課題がたくさん山のように山積しています。


# 参考
*https://note.nkmk.me/
*Scikit-learn で線形回帰 https://qiita.com/0NE_shoT_/items/08376b08783cd554b02e

# 所感
とにかく分からない。何を調べたら良いのか分からない状態で試行錯誤しながら進めました。分からなくてもせめてコピペはせず写経をしながら一つずつ機械学習の雰囲気に身を任せて何とか提出することができました。素直にうれしいです。

もともとはsonyのNeuralNetworkConsoleの体験から入り、データが欲しくてkaggleをみつけ、機械学習を始めるに至りました。つまり、最初の目的は深層学習でした。今のところどのような分野の勉強をしていくかは定まっていませんが色々なモデルを使っていきたいと思います。

とにかく今はこの問題を通して機械学習の基礎をつくっていこうと思います。お読みいただきありがとうございました。