##前回まで
前回の投稿では、scikit-learnのLinearRegression
を使用してモデルを作成し
cross_val_score
を使って5分割の交差検証を行いました。
その結果1回目の結果から順番に
- 0.63861069
- 0.71334432
- 0.58645134
- 0.07842495
- -0.26312455
というスコア(決定係数)を得る事が出来ました。
1~3回目までの結果と比べて、4・5回目の結果が著しく悪いので
これは一体何故だろう、データを詳しく見てみようという所までやりました
##その前に
前回はcross_val_score
を使って交差検証を行いました
この関数はサンプルデータを分割する時にデータの並び順に分割します
例えば200個のデータを2個に分ける時、1~100までと101~200までの2つに分けるといった感じです
蛇足になるかもしれませんが、例えば身長から体重を推定する為のデータセットがあったとして
データが身長の低い物から高い物順にソートされていた場合
150cm~170cmのデータで作ったモデルで、180cmの人の体重を推測する事になったりします。
このようにモデル作成に使ったサンプルデータの外のデータを推測する事を外挿というそうです
逆に、150~160cmと170~180cmのサンプルデータで作ったモデルで
165cmの人の体重を推測する事は内挿になります(違ってたらスイマセン・・・
##もう一度データを確認
初回の投稿で、データの相関等をグラフにして俯瞰しましたが
ここでもう一度各データを、今度は折れ線グラフで確認します
画像が縦に大きいので、折り畳んでいます。
折れ線グラフ①
うーん、なんだか後半150件分くらいのデータが偏ってませんか
特にINDUS RAD TAXあたりは、前半のデータと後半のデータの差が激しく見えます。
見易いようにINDUSが高い部分を囲ってみると以下のような感じです。
折れ線グラフ②
あまりデータに対して主観的な先入観を持つのは、良くない事かもしれませんが
INDUS(商業地率)が高い所を商業区
ZN(住居区画率)が高い所を住宅地
と2分して考えると
商業区では働く人間の出入りが多い為**RAD(高速道へのアクセスの良さ)が高く
それに伴ってNOX(窒素酸化物濃度)も高い
住んでる人は少ないが、働く人は多いのでCRIM(人口比犯罪率)も高い。
住宅地と比較して物件価格がやや安くLSTAT(低所得者人口)**も多い。
みたいな関係がありそうな気がします(主観が入ってます)
前回cross_val_score
で試行毎に大きなスコアの差があったのは
データセットのデータの並びに偏りがあり、住宅街データで学習して商業区物件の予測
みたいな事が起きていたからだと思われます。
##次回へ
次回はランダムに分割したデータで交差検証を行い
その結果を改善出来ないか検討します。
##お願い
機械学習初心者が備忘録・知識の確認の為に投稿しています。
間違っている点や、厳密には正しくないといった点が多いにあるかと思います
お気づきの方がいらっしゃいましたら、ご指摘を頂けましたら幸いです。