もしも武道館が賃貸オフィス物件だったら


はじめに

「もしかしたらオフィス賃貸にした方が儲かる場所ってあるんじゃないの??」と思ってました.

そこで,LightGBMの回帰モデルで武道館がオフィスだった場合の賃料と比較し,現状のライブや国家行事などの用途と比較してどちらが売上がたつのか検証してみました.

ちなみにコードはgithubに上がっています.

結論

結論としては,武道館は全部オフィス賃貸にしてしまった方が年間の売上が3億伸びます

武道館の賃料の坪単価が22,006円/坪と推定されたので,年間の売上は,稼働率は1と仮定して約13.5億円

対して,武道館公表している「令和元年度 収支予算書」に記載されている2019年度売上見込みは1,031,445,000 円 ( 約10.3億円 )でしたので,オフィスにしてしまった方が儲かるという衝撃の結果です.(稼働率を1と仮定しちゃってますが)

やったこと

学習データの取得

日本では成約賃料正解データを集めるのがすごく難しく,publicに落ちているデータはほとんどありません.そのため今回は今年から開示された「鑑定評価書情報」を用います.このデータは「地価」を決めるための算出根拠となった,様々な地点の収支の仮説情報が載っています.そのため仮説された賃料も載っているので,実際の成約賃料ではありませんが使えそうです.

とりあえず東京だけダウンロードしておきました.(具体的な成形はgithubを参照してください)

学習

特徴量選定

上のデータにある情報をすべて使えるとはいっても,その特徴量が武道館について算出できないものではダメです.そのため以下を特徴量として選びました.

{
    "landprice": "地価",
    "gross_floor_area": "延床面積",
    "floors": "地上階数",
    "road_width": "幅員(道路の幅)",
    "nearest_station_distance": "最寄駅までの距離",
    "lot_coverage": "建ぺい率",
    "office": "オフィス用途かどうかのone-hot",
    "retail": "商業用途か",
    "residential": "住宅用途か",
    "hotel": "ホテル用途か",
    "industrial": "工業用途か",
}

武道館の地価はわかりませんが,最寄の地価を用いれば良さそうです.

学習モデル

なにも考えずLightGBMを使いました.ハイパラも今回は適当です.

{
     "metric": "rmse",
     "n_estimators": 200,
     "objective": "regression"
}

精度

とりあえずtrain_test_splitで2分割して精度検証しました.以下が精度の散布図です.

決定係数は65.19%でした.
なんともいえないですが,なにもチューニングしてない割にはいいほうなのでは?

武道館の賃料

まちにまった武道館の賃料予測です.

本当は全件で学習させてから当てたほうが精度いいんだろうけど,上でできたmodelをそのまま使います.

ちなみに特徴量は公式サイトから引っ張ってきました.


feature_values = ['landprice', 'gross_floor_area', 'floors', 'road_width', 'nearest_station_distance',
                  'lot_coverage', 'office', 'retail', 'residential', 'hotel', 'industrial']
target_col = 'rent_tsubo'

class Estimator:
    def __init__(self):
        self.read_model()

    def read_model(self):
        '''ml.pyで学習したmodelを読み込む
        '''
        with open('accuracy/model.pkl', mode='rb') as f:
            self.model = pickle.load(f)

    def estimate(self, df: pd.core.frame.DataFrame) -> pd.core.frame.DataFrame:
        '''特徴量を含むデータフレームに対して賃料(坪単価)を推定する
        '''
        pred = self.model.predict(
            np.array(df[feature_values]), num_iteration=self.model.best_iteration)
        df[target_col] = pred
        df[target_col] = df[target_col].astype(int)
        return df

def estimate_budokan():
    '''武道館の賃料予測
    '''
    budokan_info = {
        'landprice': 3130000,  # 最寄地価(東京都千代田区九段南2-2-5)の平均値(3120000, 3140000)
        'gross_floor_area': 21133.300 * 0.3025,  # 坪単位にする
        'floors': 3,  # 地上3階
        'road_width': 10,  # GoogleMapsみた感じ10mくらいっぽかった
        'nearest_station_distance': 5 * 80,  # 徒歩5分 * 80m/分
        'lot_coverage': 100 * 8132.240 / 12625.000,  # 建築面積/敷地面積
        'office': 1,  # オフィス物件と仮定
        'retail': 0,
        'residential': 0,
        'hotel': 0,
        'industrial': 0,
    }
    estimator = Estimator()
    budokan = estimator.estimate(pd.io.json.json_normalize(budokan_info))
    budokan_dic = budokan.to_dict(orient='list')
    budokan_result = {k: budokan_dic[k][0] for k in budokan_dic.keys()}
    return budokan_result

if __name__ == '__main__':
    budokan_result = estimate_budokan()
    print(budokan_result[target_col]) # 22006

ちなみにroad_width(幅員)はgoogle mapをみて,「10mくらいかな?」となったのでそのまま入れました.

現在の武道館の収支との比較

賃料が22006(円/坪/月), 賃貸可能面積が延床面積の80%程度(※estieproによる試算), 稼働率は1と仮定すると

賃料(円/坪/月) * 賃貸可能面積(坪) * 稼働率 * 12ヶ月
= 賃料 * (延床面積 * 0.8 ) * 1.0 * 12
= 22006 * (21133.300 * 0.3025 * 0.8) * 12
= 1,350,532,497 円 ( 約13.5億円 )

年間の売り上げは約13.5億円です.

武道館公表の令和元年度 収支予算書をみると,平成31年年4月1日から令和2年3月31日の事業収益の合計が約10.3億円みたいです.

もちろんあくまで推定値なので,本当にそうなるかはわかりませんが..