만약 무도관이 임대 사무소인 경우

소개



「어쩌면 오피스 임대로 하는 것이 돈이 벌어지는 곳은 있는 것이 아닌가??」라고 생각하고 있었습니다.

그래서 LightGBM의 회귀 모델로 무도관이 사무실이었을 경우의 임대료와 비교해 현재의 라이브나 국가행사 등의 용도와 비교하여 어느 쪽이 매출이 가는지 검증해 보았습니다.

덧붙여서 코드는 github에 올라 있습니다.

결론



결론으로서는, 무도관은 전부 오피스 임대로 해 버리는 것이 연간의 매출이 3억 성장합니다.

무도관 임대료의 평단가가 22,006엔/평으로 추정되었기 때문에 연간 매출은 가동률은 1이라고 가정해 約13.5億円
대조적으로, 무도관 공표하고 있는 「2018년도 수지예산서」에 기재되어 있는 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億円입니다.

무도관 공표의 2018년도 수지예산서을 보면, 平成31年年4月1日から令和2年3月31日의 사업 수익의 합계가 約10.3億円 같다.



물론 어디까지나 추정치이므로, 정말로 그렇게 될지는 모릅니다만. .

좋은 웹페이지 즐겨찾기