Rのランダムフォレストで、不動産物件の賃料予測をしました

IT,インターネット | 月曜日 12月 14 2009 3:47 PM | コメント (0) Tags: , , ,

卒論のために勉強した統計の知識とか、R(統計解析ソフト)の使い方が、
誰かの参考になればと思って公開しておきます。

私が卒論でやったことは、
「賃貸物件検索サイトスマイティの物件データを使用し、物件の条件(予測変数)で賃料(基準変数)を予測する」
というものです。

解析手法は機械学習の一分野である決定木とランダムフォレスト(以下、RF)です。
決定木が一般的なのですが、単独学習で精度が低いことから、
集団学習の中でも優秀とされるRFと併用して比較しました。

この記事の対象者

誰に読んで頂いてもありがたいのですが

  • 決定木に関する知識があり
  • Rを使ったことがある、もしくは使う予定があり
  • RFをしたい人

に向けた書き方をしています。
なので、それ以外の方には不親切な部分があるかも知れないということ、ご了承下さい。

RFの特徴

簡単に、RFの特徴をまとめました。

  • 予測精度が高い
  • スピードが速い
  • 予測変数の重みが算出される
  • 多変数、高次元の分析に強い
  • 欠損データに強い

決定木を基本としているので、そこから順々に説明してゆきます。

決定木とは

決定木はポピュラーな手法なので、定義だけ紹介します。

決定木とは
木構造を利用して、入力パターンに対応する予測値を決定するアルゴリズムを表現した手法
です。

単独学習で、予測精度が低いです。

集団学習とは

単独学習の精度の低さを補う手法です。
集団学習の中でもシンプルな、バギングを例に説明します。

バギングではデータからブートストラップリサンプリングを行い、何度も決定木を行います。
ブートストラップリサンプリングとは、「n個の標本数があるデータから、重複ありでn個を取り出す手法」です。

つまり一つのデータに対して、取り出すオブジェクトの組み合わせを変えながら、何度も決定木を行います。
そして複数の学習結果を統合(後述)して一つのアルゴリズムとします。

集団学習なのでデータの恣意性に左右されにくくなり、
予測精度が安定します。

次に、生成した複数の決定木を統合する方法を説明します。

判別と回帰

集団学習でも決定木と同じく、基準変数が質的か量的かで、
判別の問題となるか回帰の問題となるかに分かれます。

集団学習で判別を行う場合、予測結果は集団の多数決で決まります。
回帰を行う場合、集団の平均で決まります。

RFとは

バギングは全ての予測変数を使用しましたが、RFは予測変数もランダムサンプリングします。
標本、予測変数ともにランダムリサンプリングする手法です。
これによって予測精度やスピードが高まります。

RFの手順

RFの具体的な手順は、下記の通りです。

1. ブートストラップサンプリングし、OOB(Out of Bag)データを取り除く

標本数の数だけ復元抽出するブートストラップサンプリングを行う。
ただし、後に自己検証を行うために、ブートストラップ標本の1/3をOOBデータとして取り除く。

2. いくつかの変数を用いて,未剪定の決定木を生成する

まずは1で抽出した標本データから、m個の変数をランダムサンプリングする。
そしてその変数を用いて、決定木を生成する。
この段階では剪定を行わない。

3. OOBデータでテストを行い,結果に基づいて分類木を構築する

2で生成した決定木をOOBデータに適用して、推測誤差(OOB推測誤差)を求める。
その結果に基づいて新たな分類木を構築する回帰の場合は平均、分類の場合は多数決をとる。

余談ですが

集団学習って何度も(500回とか1000回とか)処理を行うので、
直感的には時間がかかりそうなものですが、実際はむしろ逆です。

小さいまとまり毎に処理した方が早いということだと思います。
ソフトウェア畑の人にしたら当たり前なんでしょうか。

RFの説明はこれまでにして、Rでの実行方法にうつります。

R

1. データセット

まずはデータを用意します。
新宿区の物件データです。

> # データを読み込んで、2/3を推定用、1/3を検証用に分割する
>
> real <- read.csv("rawdata.csv", header=T) # 標本数合計3000
> real.learn <- real[(1:2000),-c(1,11:14)]  # 学習用データ2000
> real.test <- real[-(1:2000),-c(1,11:14)]  # 検証用データ1000
>
> # データの分割を確認
>
> head(real.learn)

       最寄駅 徒歩 専有面積 間取り 築年数 方位       種別   構造 所在階 賃料
2017   早稲田    6     7.29     1R     29   南   アパート   木造      2  3.5
2018 高田馬場   10    12.50     1R     38   南   アパート   木造      2  4.1
2019 西早稲田    1    15.00     1K     32 南西   アパート 鉄骨造      1  4.6
2020   早稲田    7     5.30     1R     24   西 マンション 鉄骨造      3  4.8
2021     中井    6    10.00     1R     21 南東 マンション 鉄骨造      2  5.3
2022   早稲田    4    19.83     1K     44   西   アパート   木造      2  5.6
head(real.test)

> head(real.test)

      最寄駅 徒歩 専有面積 間取り 築年数 方位       種別 構造 所在階 賃料
1 落合南長崎    8    10.00     1K     34   東   アパート 木造      2  3.3
2   高田馬場    8     9.72     1R     44   南   アパート 木造      2  3.6
3   江戸川橋    7    13.00     1R     23   北   アパート   RC      1  4.3
4       中井   11    10.53     1R     34   南   アパート 木造      2  4.7
5       目白   15    12.78     1R     36 南東 マンション   RC      2  5.1
6       中井    6    14.00     1R     27   東 マンション   RC      3  5.4

2. パッケージrandomForestのインストール、ライブラリの呼び出し

RFのパッケージをインストールして、ライブラリを呼び出します。
インストール時において、CRANのミラーサイトはJapan(Tsukuba)を選択。
なぜかJapan(Tokyo)だとダメみたいです。
パッケージrandomForestの詳細に関しては、Packege ‘randamForest’をご覧下さい。

# ランダムフォレストのパッケージ、ライブラリを読み込む

> install.packages("randomForest")
> library(randomForest)

3. 学習

続いて学習を行いますが、ランダムサンプリングなのでシードを固定しなければ結果が毎回変わります。
randomForest関数の引数の意味はこんな感じ。

  • 「formula = (基準変数) ~ (予測変数)」と書きます。予測変数の部分を「.」(カンマ)と書くと基準変数以外の全ての変数が予測変数になります
  • ntreeは生成する決定木の数を示します。デフォルトが500です
  • importance=TRUEは後ほど説明しますが、予測変数の重要度を算出するために使います

最後にplotしたのは誤差の平均平方のグラフです。

>  # シードを固定してから学習
> set.seed(0)
> (real.rf<-randomForest(賃料 ~ . , data=real.learn, ntree=100, importance=TRUE))

Call:
 randomForest(formula = 賃料 ~ ., data = real.learn, ntree = 100,      importance = TRUE)
               Type of random forest: regression
                     Number of trees: 100
No. of variables tried at each split: 3

          Mean of squared residuals: 5.698583
                    % Var explained: 90.11
> plot(real.rf)

基準変数が賃料(量的変数)ということで、random forestのタイプはregression(回帰)になります。
誤差の平均平方が5.698583、変数の説明率が90.11%という結果が出ました。
誤差の平均平方のグラフをみると、決定木が20ぐらいで落ち着き、50以降はそれほど変化しなくなります。

4. 予測

学習用データ、検証用データでそれぞれ予測します。
この場合学習用データを予測するのは、自分自身の予測ですのでそれほど意味のある行為ではありませんが。

それぞれに関して予測値と正解の相関係数を算出します。

> # 学習用データで予測
>
> plot(real.rf)
> real.pred<-predict(real.rf , newdata=real.learn)
> cor(real.pred, real.learn$実質賃料)
[1] 0.9924784

> # 検証用データで予測
>
> real.pred<-predict(real.rf , newdata=real.test)
> cor(real.pred, real.test$実質賃料)
[1] 0.9678588

同じことを決定木でやった場合、
相関係数はそれぞれ0.9946105、0.940806となりました。

つまりRFは

  • 自分自身の予測に関しては、完璧ではない

  • 新しいデータに対しては、安定した結果を返すことができる

ということが言えます。

5. 予測変数の寄与率

先ほどrandomForest関数でinportance=trueとやったのが、
予測変数の寄与率を算出するためです。

> varImpPlot(real.rf)

グラフの左が精度を基準とした平均値です。
右が樹木を作成する際に計算されたジニ係数の平均値で、変数の重要度を表します。

6. 予測誤差

正解に対する予測誤差の幅は0~64.9%、中央値は4.25%(決定木は5.14%)でした。
どうやって出したかというと、予測の部分で使ったpredict関数の入れ物を実行します。

> real.pred

 2001      2002      2003      ...
 4.908311  4.641344  7.176658  ...

各物件の予測値が出るので、表計算ソフトに張り付けて、うにゃうにゃ(謎)します。

参考

下記のWebサイトが参考になりました。

書籍でキッチリ学ぶなら、下記の金明哲先生の本がおススメです。

Rによるデータサイエンス - データ解析の基礎から最新手法まで
金 明哲
森北出版
売り上げランキング: 72629

ちなみに金先生はJIN’S PAGEというHPをやっておられまして、
Rの学習の参考になります。

“差別化”につきる – マードック氏がGoogleのインデクスを拒否すると聞いて考えたこと

IT,インターネット | 月曜日 11月 16 2009 2:07 PM | コメント (2) Tags: , ,

メディア王MurdochがGoogleをやっつけてネット上の権力を検索から奪い取る方法

このTCの記事がすごく面白かったので、考察してみます。

前後の事情も含めた記事要約

新聞とか雑誌をメインにするメディア大手のニューズコーポレーションという会社があり、タイムズとかウォールストリート・ジャーナルといったニュースサイトを運営しています。
IT化の波に伴い、それらのメディアは苦境に立たされています。

そこで会長のルパート・マードック氏がGoogleのインデクスを拒否して、サイトを有料化しようとしています。

この件に関して、MahaloのCEO Jason Calacanisが述べたところによれば

MurdochはGoogleによるインデクシングを拒絶するだけでなく、Bingに有料で独占的にインデクシングさせるべきだ

そうすることで、Googleが苦境に立つだけでなく、

これまで検索エンジン側にあまりにも偏っていた‘ネット権力’みたいなものが、コンテンツサイト側にもやや、もしくは大幅に、傾くことになる

検索エンジンの現状

これは十分有り得るシナリオだと思います。

というのはよく言われていることですが、検索エンジンの「精度」「スピード」といった質的な観点では既にGoogle以外でも満足いくレベルのものを提供しています。

じゃあGoogleが使われ続けている理由は何かというと、「慣れ」「ブランド」「Gmailなど他のサービス」など色々言えると思いますが、端的に言えば

両者のサービスの品質が優劣つけがたいということになると、戦う前からGoogleの勝利は確定したようなものだ。

検索エンジン対決―Bing vs. Googleを実例で比較してみた

ということだと思います。
つまり「乗り換えるべき理由がみあたらないから、使い続ける」ということです。

コンテンツの逆襲

では本当に検索エンジンを乗り換えるべき理由はないのか。
「コンテンツ」という要素があります。

それはTwitterがBing、Googleにフィードを売った(無料じゃない!)ことでも分かりますし、さらに遡ると韓国NaverがUGCでGoogleを寄せ付けないこともそうです。

コンテンツの有無が、検索エンジンの競争要因になる。
そうなればパワーバランスがコンテンツ側に傾くのは、当然のことです。

重要なのは“差別化”

メディア企業の「人々にメディアを渇望させる能力」は、インターネット(Apple)によって打ち砕かれた。
それはメディアビジネスの利益の源泉であったが、完膚なきまでに破壊された。


インターネットはメディアの稀少性を作り出すこの能力…流通チャネルを自分で持ちそれらを狭くコントロールする行為…を破壊する。それどころか、それはあまりにも大々的な破壊なので、メディア企業が利益を得るためのもっとも基本的な仕組みが危機にさらされているといえる。

(原文)
The internet disrupts this ability to create media scarcity. It is such a huge disruption, in fact, that it threatens the fundamental profit engine of the media business.

For The Future Of The Media Industry, Look In The App Store

コメント欄で頂いた、より良い訳を載せました。感謝。)

この主張は本質をついていると感じましたが、さらにいえばなぜコンテンツがAppleによって安価に横並びにされているかというと、「差別化できていない」の一言につきます。

高価だろうが、アクセスが面倒だろうが、「価値があって、他にないもの」に人はお金を払います。
と、いうか嫌々でもお金を払わざるを得ません。
それしかないので。

そんなにオリジナルで価値があるものは中々ありませんが。

そしてライバルが存在し、差別化要因がないと横並びにされ立場が弱くなるのは、コンテンツだけではありません。
検索エンジンだろうがプラットフォームだろうが同じことです。

マードック氏の記事を読んで、そんなことを考えました。

追記

こんな記事もありました。
Microsoftは新聞社に対Google戦争の軍用金を支援してBingの味方にするつもり

モバイルインターネットが今年34%増:女性、10代、高齢者のおかげ

IT,インターネット | 金曜日 10月 2 2009 8:37 AM | コメント (2)

tsuruakiさんのtweetで翻訳希望とのことだったので、英語の勉強がてら翻訳しました。
誤訳あったらすいません。

モバイルインターネットが今年34%増:女性、10代、高齢者のおかげ

苦境に立たされている格付け会社、ニールセンはインターネットの興味深い事実をいくつか発表した。
大きな発見は昨年に比べ、モバイルからのインターネットが34%増えたことであり、
またそれは女性、10代、そして高齢者が増加の大部分を締めている、ということだ。

モバイルインターネット:もはや20台男性だけの場所ではない。

それでは、モバイルインターネットで人々は何を見ているんんだろう?
女性はPeople.comとか、その他セレブの無意味なものばかりだ。
残念ながら、女性はそんなゴミのようなものを読む。

一方で男性は、これに尽きる。GIZMODO!
彼らは(当然)Maximとかスポーツも好きだ。
私はDrudgeがトップ10に入っているのが非常に嬉しい。
おそらく私はDrudgeのモバイルアクセスの10%を占めているだろう。

概して、ここにはぶっ飛んだものはない。
トップ10のどこにもTwitterが入っていないが、しかしそれはおそらくこういうことだ。
Twitterはこの春までは爆発していなかった。
それまでは、そこにいるのはTechCrunchの観客だけだった。

より詳しいことが書いてある、Women, Teens, and Seniors Help Fuel 34% Mobile Web Spike | Nielsen Wireにはトップ10の詳細などが載ってます。

価格比較サイトの風雲児「コネコネット」のオタク力について考えてみた

coneconet

上記のようなコネコネットの記事があったので、考察し、事業アイディアを出してみました。
それにしても「風雲児」とはなんでしょうか。

特徴は“オタクスタッフ”?

コネコネットの特徴は

サイト作成、商品を掲載する事業者への営業は、各分野で知識を持つ社員が当たる。
ワインソムリエ、元ミュージシャンに元ゴルフライター、コミュニティサイトを運営しオフ会(サイトで知り合った同士が実際に集う親睦会)まで開いてしまうフィギュアオタク、等々。
こうした社員がオフィスで肩を並べ、PCパーツやらフィギュアなど各人が精通した分野を「専門家」として担当している。

引用部にあるように「スタッフ自身が特定分野のオタクである」ということ。
これは扱い領域の広い価格比較サイト事業者には珍しく、どちらかといえば高級ホテルの一休.comのような専門サイト事業者に近い気がします。
専門サイト事業者には、リアルビジネスでその分野に関わっていた方が多く転職されていますので。

ただ、

「オタクと呼ばれるほど商品知識が豊富なユーザーが見れば、サイト制作にどれだけ力を入れているかわかるはず」(柴田健一副社長)。

とはいうものの、イマイチ具体的な差別化ポイントがピンときません。

唯一思い浮かぶのは、下記のようなスタッフ発、All Aboutチックな読み物コンテンツです。

これは確かに価格.com、ECナビとは一線を画している気がします。

価格比較サイト毎の特徴

そもそも価格比較サイトというのは、基本的には情報提供者だと思います。
ユーザーさんがベストなECをするための情報(価格、スペック、クチコミ、ショップ評価etc)を提供するのが主な役割です。

今の勢力図をみると、情報提供(とブランド力)で一歩リードしているのが価格.comです。
それに対して、ECナビはポイント付与による女性会員の囲い込みという、別のアプローチをとっています。

コネコネットの場合は、両者の間に位置します。
ECナビのようにポイントプログラムもありますが、一番に掲げているのは専門性の追求という点で、価格.com寄りと言えます。

各サービスの特徴を、表にまとめると下記のようになります。
情報は全てネット上に転がっているものです。

情報提供 ポイントプログラム
価格.com ショップによる価格情報とクチコミに強み なし(CCCとの資本提携でTポイントが導入されるという巷の噂もある)
ECナビ ロボットで商品データを構築しているが、クチコミは少ない ポイント交換プラットフォーム「PeX」などポイント周りが充実
コネコネット オタク社員の強みを活かして、オタクユーザーを獲得する戦略 現金還元サイト「小判」との連携によるポイントプログラムあり

私が柴田啓社長だったら

*柴田啓社長というのは、コネコネットを運営するベンチャーリパブリックの社長です。

私のような阿呆がかなり失礼な物言いかとは思いますが、誰も気にしていないと思うので、低レベルな2つのアイディアを垂れ流してみます。

1.スターを取り込むことで、ブランディングを実現する

コネコネットは「オタクスタッフがオタクユーザーを取り込み、専門的な情報を集める」という戦略に立っています。
オタクユーザーの気持ちになってみたのですが、生半可なオタクスタッフには取り込まれたいとは思いません。

そこで考えたのが、各分野のスター、例えばワインならソムリエ田崎真也クラスを何らかの形でサイト運営に関わって貰います。
それこそワイン専門サイトみたいなものです。

そもそも価格.comの強みは「最安情報や豊富なレビューなど、ベストなECをする手助けをしてくれる」という安心感、ブランド力だと思います。
それに対して、各分野のスターが関わるというのは、外部による権威付けという別のブランディング方法だと言えます。
田崎真也が運営に関わるショップであれば、ワインにおいてベストな買い物ができるという安心感があります。

田崎真也の読み物コンテンツがあるのもいいのですが、ブランディングの観点からいえば、もっと踏み込んで「田崎真也がプロデュースするサイト」の方が望ましいです。
ワインだけでなく全分野にその戦略を適用すれば、コネコネットというのは商品を推薦する情報提供サイトの集まり、ということになります。

つまり「コネコネット=スターが運営する情報サイトの集合体」ということです。
スターのギャラという点で、実現性が眉唾ものですが。

2.スタッフの専門性を利用し、電話でのQ&Aサービスを立ち上げる

これはさらにコスト高かも知れません。

上にスタッフの方の、冷蔵庫選び方講座がありました。
しかし実際ユーザーさんは講座全ての情報を必要としているわけではなく、網羅的であるが故にパンチが弱くなるきらいがあります。
そこで、いっそのことユーザーさんが聞きたいことを、スタッフに聞けるサービスがあればいいのではないでしょうか。

ユーザーさんの利便性を考えれば、できれば電話で提供したいところです。
こうなるともはや価格比較サイトという枠組みは無視して、専門情報提供者というところをスタートにしています。
人件費がコスト高とはいっても、アメリカにはスタッフが答える形の人力検索ChaChaなどがあります。

まだ未開拓の分野だけに、誰からどうやってお金をとるか、どのようなスタッフを雇うかなど設計が面倒ですけどね。

電子書籍市場におけるAmazon,Sony,Appleの争い

IT,インターネット | 金曜日 8月 14 2009 12:28 AM | コメント (0) Tags: , , ,

amazon-kindle

各社の戦略が興味深い、電子書籍市場です。

リードするAmazonが独自仕様を貫くのに対して、Sonyが業界標準仕様で対抗し、さらにAppleまで本格参入します。

AmazonのKindleは、音楽業界におけるAppleになれるのでしょうか。

参考記事:
Sony Plans to Adopt Common Format for E-Books

記事の要約

今年始めから136.2%の拡大、6月には$1400万の売上を記録した電子書籍市場。

売上の大部分はAmazonのKindle。
同社の戦略は「Kindleの本をできる限り多くのハードウェアで入手可能にすること」(Bezos氏)。

巻き返しをはかるSonyは、オンラインストアで売る本をePubフォーマット(業界標準仕様)に対応させる。
つまりSonyの電子書籍リーダー以外でも読める、というオープン戦略をとる。

また、Appleもタブレットコンピュータで電子書籍リーダー機能を提供するとみられており、出方次第でAmazonはそのクローズ戦略を考え直す必要がありそう。

考察

電子書籍業界は「ハードウェアの重要度が低い」ことで、特徴付けられるのではないでしょうか。

iPodと違い、ハードウェアとしての電子書籍リーダーを必要とする人は多くはないです。
ユーザーの鞄の中のスペース争いをするとしたら、多機能で電子書籍リーダー機能を含む可能性のあるネットブックやタブレットコンピュータに負けます。

Amazonはそれを承知で、ソフトウェアKindleをiPhoneやPalm向けに提供しようとしていますが、この時点でiPod—iTunesレベルの垂直統合は不可能です。
垂直統合ができない以上、Amazonはソフトウェア提供者でしかなく、ソフトウェアのみでSony他競合に対して圧倒的な優位性を築くのは難しいはず。

この記事では「Appleがオープン戦略をとれば、Amazonも従わざるを得ない」という論調ですが、むしろクローズで成功する可能性が(少ないけど)ある企業はAppleだけな気がします。

次ページへ »