回帰分析とは⑤

こんにちは!EMです^^

 

今回は回帰分析に役立つ豆知識について、紹介していきたいと思います。

 

Multiple linear regression

前回まで、モデルを構築するために1つの独立変数のみ扱った例をみてきました。

しかし、正しく組み合わせると従属変数を予測できる機能があることがあるんです。

もっと面白そうなデータセットをみていきましょう!

 

# you can find this dataset in the class portal

df = pd.read_csv('house_data.csv', index_col=0)
 
※このデータはここのHPから確認する事ができます
 
df.head()
 
  date price bedrooms bathrooms sqft_living sqft_lot floors waterfront view condition grade sqft_above sqft_basement yr_built yr_renovated zipcode lat long sqft_living15 sqft_lot15
id                                        
7129300520 20141013T000000 221900.0 3 1.00 1180 5650 1.0 0 0 3 7 1180 0 1955 0 98178 47.5112 -122.257 1340 5650
6414100192 20141209T000000 538000.0 3 2.25 2570 7242 2.0 0 0 3 7 2170 400 1951 1991 98125 47.7210 -122.319 1690 7639
5631500400 20150225T000000 180000.0 2 1.00 770 10000 1.0 0 0 3 6 770 0 1933 0 98028 47.7379 -122.233 2720 8062
2487200875 20141209T000000 604000.0 4 3.00 1960 5000 1.0 0 0 5 7 1050 910 1965 0 98136 47.5208 -122.393 1360 5000
1954400510 20150218T000000 510000.0 3 2.00 1680 8080 1.0 0 0 3 8 1680 0 1987 0 98074 47.6168 -122.045 1800 7503
 
 

feature universe(フィーチャーユニバース)

的確な日本語が分からなかったのですが、feature universeという機能があります。

(この用語の日本語が分かる方、ぜひ教えて下さい)

これは、モデルに含まれる「範囲内」の機能のコラムをリスト化したものです。

 

 

features_to_include = ['bedrooms',
                      'sqft_living',
                      'sqft_lot',
                      'floors',
                      'waterfront',
                      'view',
                      'condition',
                      'grade',
                      'sqft_basement',
                      'yr_built',
                      'yr_renovated',
                      'sqft_living15',
                      'sqft_lot15']
 
 

Feature selection

機能を選ぶための全universeがあり、アルゴリズムを使用して、モデルに含めるのに最適な機能を選択できます。

境界をうまく視覚化するためには、2次元が最も理にかなっていることがわかります。

その為、2つの特徴のみを使います。

scikit-learnの特徴選択(feature selection)パッケージを利用していきましょう。

このパッケージは、ノンパラメトリック手法を使用して
ターゲットとの相互情報量によって機能をランク付けします。

2つの確率変数間の相互情報量(MI:Mutual Information)は非負の値(負ではない実数)であり変数間の依存関係を測定します。

2つの確率変数が独立している場合に限り、ゼロに等しくなります。

値が大きいほど、関連性が高いといえます。

 

from sklearn import feature_selection
 
feature_importances = feature_selection.mutual_info_
            regression(df[features_to_include],df['price'])
 
feat_importance_df = pd.DataFrame(list(zip(features_to_include,feature_importances)), 
                        columns=['feature','importance'])

 

feat_importance_df.sort_values(by='importance', ascending=False, inplace=True)
 
top_feats = [x for x in feat_importance_df['feature'][0:5]]
top_feats
 
['sqft_living', 'grade', 'sqft_living15', 'sqft_lot15', 'bedrooms']

 

 

どうでしたでしょうか?

実はfeature universeに関してはあまり実際の現場では使用しないようです^^;

今回はあまり日本語の情報がネット上で出てこなかったので、豆知識として取り上げてみました。

もし現役のエンジニアやデータサイエンティストの方がいらっしゃれば

ぜひご指南お願いします!!

 

 

ちなみに皆様に朗報です!

私今まで知らなかったんですが、CodeCampさんが無料で5回分無料レッスンを

されているらしいです、、、!

私が他のオンラインスクールで機械学習のコースを受講した際は

グループレッスンで約2倍のお値段を払ったので

完全マンツーマンでこのお値段は超良心的だなと思います。。。

 

 

 

ぜひ気になる方は無料体験もされてるみたいなので、一度WEBサイトを見てみてくださいね。

データ分析は時代が変化しても、必ず重宝される分野だと思っているので

プロから基礎を学ぶのは、本当に超効率的な自己投資だと思います。

 

 

 

それではまた次回も引き続き豆知識シリーズをもう少し説明しようかと思っています!

お楽しみに~!!