kaggle 対数 変換 18
Wall time: 12.9 s, 念のため、グリッドサーチを使って第8主成分までの学習データで学習モデルを生成しています。結果は、0.24365010103281265となり、先程よりは少し精度が上がりましたが、計算にかかった時間は、6分45秒となっており、それなりに時間がかかることがわかります。, 結果 まずは概要から紐解いていきましょう。英語が苦手な方向けの内容なので、問題ない方はRecruit Restaurant Visitor Forecastingをご覧ください。 2017年11月29日にKaggleリクルートチャレンジ(ホットペッパー)が開始 今回は、kaggleの入門者向けチュートリアルコンペ「住宅価格予測」をやってみます。, House Prices: Advanced Regression Techniques, データ分析のプロセスとして、CRISP-DM(CRoss Industry Standard Process for Data Mining)というものがあります。, モデリングより前のステップである「ビジネスの理解」「データの理解(Exploratory Data Analysis)」「データの準備(Feature Engineering)」のステップが大半を占めます。, まず「データの理解(Exploratory Data Analysis)」についてです。, 「回帰」は株価分析など出力が連続値、「分類 (クラスタリング)」は文字認識など離散値という違いがあります。, 関数をデータに当てはめることによって、ある変数yの変動を別の変数xの変動により説明・予測・影響関係を検討するための手法です。, 乱暴にいってしまえば、複数の変数間の関係を一次方程式(Y=aX+b)の形で表現する分析方法です。, 「C:\Python38\Lib\site-packages\tornado\platform」の「asyncio.py」の最後に下記を書き込みます。, Kaggleの提供しているデータ「data_description.txt」に変数にどんなデータが格納されているのか説明があります。, BsmtFullBath:地下フルバスルーム BsmtHalfBath:地下ハーフバスルーム FullBath:グレード以上のフルバスルーム HalfBath:グレード以上のハーフバス Bedroom:地下室より上の寝室の数 Kitchen:キッチンの数 KitchenQual:キッチンの質. ブログを報告する, House Prices: Advanced Regression Techniques | Kaggleのデータを使用する. 決定木をベースとしたモデル(RandomForestやXGBoost、LightGBMなど)は正規化などの前処理が必要ないと言われています。 理由として挙げられるのは「決定木は特徴量の大小関係のみに着目しており、値自体には意味がないから」というものです。 先日もkaggler-jaというSlackチャンネルでこの話が出… , 1999-2019 Kazutaka Yasuda All Rights Reserved. 機械学習には教師あり学習と教師なし学習があります。このうち教師なし学習は主成分分析やクラスタリングなどがあります。この記事では、Kaggleのデータセットを使用した主成分分析のデータを使って学習データとして使用する例を紹介しています。, 今回は、KaggleのHouse Prices: Advanced Regression Techniquesというデータセットを使用しています。このデータセットは、複数の特徴量からHouse Pricesを予測しようとするものです。infoで特徴量を確認してみると、ものすごく多くの特徴量があることがわかります。, shapeでデータの形状を確認してみると、データ数は1460件、特徴量は81個あることがわかります。, どの特徴量に欠損値があるのかを確認したいのですが、isnullだけだと、特徴量の数が多すぎて省略表示されてしまうので、ここでは欠損値が0より大きい特徴量のみを表示することで確認しています。, 結果 変換後の特徴量は271個まで増えました。 df = pd.get_dummies(df) df.shape 結果 (1460, 271) 学習に必要なデータをXとyに格納し、対数変換する. CPU times: user 33.8 s, sys: 85.4 ms, total: 33.9 s ブログを報告する. 0.15636823655153226 変換公式や指数関数・対数関数のグラフ、計算問題の解き方も説明していきますので、ぜひこの記事を通してマスターしてくださいね。 目次. Copyright© 対数変換したデータを再度可視化してみると、正規分布に近いようなデータ分布になっています。 df['usd_goal_real'] = np.log1p(df['usd_goal_real']) plt.figure(figsize = (12, 8)) plt.hist(df['usd_goal_real'], bins = 100) plt.show() classification_method_hist_kickstarter2. 変換後の特徴量は271個まで増えました。 df = pd.get_dummies(df) df.shape 結果 (1460, 271) 学習に必要なデータをXとyに格納し、対数変換する. # Changing OverallCond into a categorical variable. Lassoのパラメータα=0.01のときに汎化性能が0.18になることがわかりました。 ちなみに汎化性能は予測結果および教師データに自然対数をかけたものに対し、RMSE(root mean square error)を使って算出しています。 今回はこの予測モデルを使ってKaggleに提出します。 機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践という本を読んだので、今日はその備忘録です。, 今回は対数変換について。具体的には、高校で習う対数関数(でお馴染みのやつ)を使って、特徴量のスケール*1を変換しようというお話しです。, 今回は、これを使って特徴量の数値データを変換(写像)します。変換とか写像なんて大そうなことを言っていますが、要はのに数値を代入するだけです。例えば、上記グラフで横軸が200のときは縦軸が2.3辺りを示していますよね()。, こんな感じで変換していくので、例えば]の範囲は]、]の範囲は]に写されます。軸の1から100までの(小さな)範囲が軸の0から2に、軸の100から1000までの(大きな)範囲が軸で2から3に写されるということです。, つまり対数変換によって、のスケールの小さい部分が拡大され、大きい部分が縮小されるんですね。, 例えば、以下の図の、上側のグラフのようなヒストグラムで表されるデータがあったとしましょう。, これを対数変換することで、下側のヒストグラムのように値の集中が緩和され、横軸上でのデータの広がりが大きくなっています。(0.0に位置するデータを無視すると)お馴染みの正規分布のような分布になっていますね。詳しくは他に譲りますが、対数変換によって、このように扱いやすい分布に近似できるのです。, こういった変換があることを頭の片隅に置いておくと、生データを見て「このままじゃ扱いにくいな」と感じた時に役立つかもしれませんね。, *2:https://github.com/alicezheng/feature-engineering-book, 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。, ものづくりが大好きで、エンジニアをやっています。 これについて、こちらの記事*1の以下の説明で疑問が晴れました。 GBDTで効果的な変数の組み合わせについての著者の方の意見 ここでは、学習に必要なデータをXとyに格納しています。また、データはnp.log1pで対数変換しています。 GBDT... All-but-the-Top: Simple and Effective Postprocessing for Word Representations, ICLR2018, 【Pandas】データフレームからクラスごとに色分けされた散布図を2行で作成する方法, https://github.com/alicezheng/feature-engineering-book. # `header=None`を指定せず`pd.read_csv('CSVファイル名')`とした場合は1行目が自動的にカラム名として挿入される, # creates a figure with 10 (width) x 5 (height) inches, 特徴量ごとの平均値、最大値、最小値などの統計量確認(pandasの.describe()), # Seaborn(jointplot)を使うと散布グラフとヒストグラムが合成される, Kaggle の Titanic Prediction Competition でクラス分類(XGBoost、LightGBM、CatBoost編), Kaggle の Titanic Prediction Competition でクラス分類(scikit-learn編), Kaggle の Titanic Prediction Competition でクラス分類(Keras Functional API編), Kaggle の Titanic Prediction Competition でクラス分類(Jupyter Notebook編), Kaggle の Titanic Prediction Competition でクラス分類(Keras導入編), KaggleのHome Credit Default Risk体験(Keras、Pytorch編), cosisin氏の2日後の終値の-1Tickの逆指値有効性検証(システムトレード), KaggleのHouse Pricesで回帰分析(Feature Engineering編), [2020/11/07] 千葉港中央埠頭、養老川臨海公園、長浦港、長浦排水溝で釣れるのはどこ?釣果比較, つりのひみつ、魚・貝のなかま (学研まんがひみつシリーズ、集英社ガクマンシリーズ), [2020/11/01] 検見川突起で釣りをするも2回目のボウズ&泳がせ釣りの方法, MiscFeature: Miscellaneous feature not covered in other categories, その他の備え付けられている設備を表す。エレベータやテニスコートなど。特にない場合はNA, 物件にアクセスするための道の種類(砂利なのか舗装されているのか)を表す。該当しない場合はNA, LotFrontage: Linear feet of street connected to property. データが少なければ一つずつの意味を把握したいですが、今の時点では必要に応じて確認することにします。, 回帰(Regression)分析の場合、ターゲットの値がどちらかに偏らず正規分布に従っていることが重要です。, また、最小値(min)が3万、最大値(max)が75万なので偏っており、正規分布ではありません。, Kaggleでもスピード重視でこのパートを雑に行うとパフォーマンスが上がりません。, ですが、Kaggleの提供しているデータ「data_description.txt」に「PoolQC(プールのクオリティ)」を再確認すると次のように記載されています。, Ex Excellent Gd Good TA Average/Typical Fa Fair NA No Pool, つまり、NaN(欠損)は「No Pool」の事であり、データの欠損そのものが情報となっています。, 分析方針を立てるために、何の変数が「SalePrice(施設の売却価格)」と強い相関があるが一気に確認しておきましょう。, 「GarageCars」「GarageArea」などは項目の意味からも相関の強さは明らかで、これらは多重共線性を引き起こします。, TotalBsmtSF(地下室の総平方フィート)はSalePrice(施設の売却価格)と強い相関がありました。, 変数を見るとTotalBsmtSF以外にも物件の大きさを表しているものがあります。, TotalSFが10000より小さく、SalePriceが300000より小さい場合は除去できそうです。, OverallQual(全体的な素材と仕上げの品質)はSalePrice(施設の売却価格)と相関が高かったので、外れ値の確認をしてみます。, OverallQualが10より小さく、SalePriceが500000より大きい場合は除去できそうです。, また、OverallQualが5より小さく、SalePriceが200000より大きい場合は除去できそうです。, 学習データには存在せず、テストデータのみに存在するカテゴリ変数が存在するか確認します。, なぜなら、学習モデルがそのカテゴリを学習できず、予測値がおかしくなる可能性があるためです。, 今年の「秋分の日」は116年ぶりに9月22日らしく自作の祝日判定プログラムにバグ …, Kaggleの過去Featured問題「Home Credit Default …, ハードディスクが死にました・・・ ファイル自体は壊れていないらしく認識はしている …, 2011年10月27日(木) twitterでイベント情報取得サイト 会社の後輩 …, 今年度に入って書いた日記は全て株の話でした。 理由の一つは、海外ヘッジファンドの …, この2ヶ月間で「ランキング出力のOAuth 2.0対応」「Yahooコメントラン …, アドオンは、アプリケーション等に追加機能として組み込むプログラムのことです。「ア …, 前回、千葉市周辺の釣り場をまとめた。 ただ、 実際に行ってみないと人数、足場、釣 …, 最近は、 釣り場所を公開するか? だけでも色々と議論されているようだ。 「乱獲さ …, 私は殆ど物語を読まない。 小説なんて読書感想文で嫌々しか読まない。 そんな私でも …, 先々週はサバやらコノシロやら釣れた。 そして、大人気なく竿を子供に渡さなかった。 …, 漫画やアニメを見る人なら一度は聞いたことがあるであろう「異世界転生」。 上記の漫 …. 今回も、kaggleの入門者向けチュートリアルコンペ「住宅価格予測」を解いてみます。 House Prices: Advanced Regression Techniques 各種指標を用いて住宅の価格を予測する分析問題です。 【6回目】KaggleのHouse Pricesで回帰分析(EDA:Exploratory Data Analysis編) 【5回目】Kaggle の Titanic Pr We can divide the dataset of 200... Yoav Goldberg氏原著の訳本『自然言語処理のための深層学習』を一通り読みました。難しくて理解できない箇所もありましたが、自然言語処理×ディープラーニングの話が網羅的に学べてよかったです。 0.24365010103281265 Kaggleリクルート レストラン客数予測チャレンジ概要. ここでは、学習に必要なデータをXとyに格納しています。また、データはnp.log1pで対数変換しています。 2019年10月24日, ここ最近データ分析に必要な知識(統計学、機械学習など)を勉強していたので、そのアウトプットの機会として前から気になっていたkaggleに挑戦してみました。, 取り組んだ問題はkaggleの練習問題である「House Prices: Advanced Regression Techniques」です。, House Prices: Advanced Regression Techniqueshttps://www.kaggle.com/c/house-prices-advanced-regression-techniques/overview, 基本的にはjupyter Notebookで分析を進めて、提出するときにカーネルを作成するという流れで進めていきました。, kaggleからデータセットをダウンロードして読み込みます(jupyter notebookのため)。, 変数が80個近くあります、、 1個1個見ていくのはつらいものがあるので、以降では変数の説明は最低限にして進めていきたいと思います。, まずは目的変数である「SalesPrice(家の販売価格)」について見ていきます。, 50パーセントタイルが16万なのに対して平均が18万となっている、かつMAXが75万と大きいので正規分布にはなってない気がします。ヒストグラムを見てみます。, やはり正規分布になっていませんね。目的変数の分布は正規分布になっていないとモデルの予測精度に影響が出てしまうので、これはあとで対数変換する必要がありそうです。, 目的変数が正規分布にしたがっている必要がある理由などはこちらの記事がわかりやすかったです。https://toukeier.hatenablog.com/entry/2019/09/08/224346, 歪度が正の値なので、右裾が長い(≒左に偏っている)分布であること、さらに尖度が正の値のため正規分布よりもだいぶ尖った(平均付近にデータが集中している)分布であることがわかります。, 若干外れ値がありますが、相関しているように見えます。やはり物件が大きくなるほど物件価格も高くなることがわかります。外れ値は除外しておきましょう。, うーん、微妙ですが築年数が新しいほど物件価格が高くなる傾向はありそうです。こちらも外れ値があるので除外します。, さらに以下のような特徴量があります。これを家の材質と完成度と訳すのがよいのかわかりませんが価格には影響与えそうなので可視化してみます。, クオリティが上がるほど価格が上がっているように見えます。こちらも外れ値は除外しておきます。, 前処理をいっぺんに行うために、学習データとテストデータをマージします。 さらに学習データに関しては目的変数である「SalesPrice」が含まれているのでこちらは切り出しておきます。, 続いて欠損値を処理していきたいと思います。まずはどのくらい欠損値があるのかを確認します。, 欠損値については一括で削除するか、平均値で置換してしまいたくなってしまいますが、きちんと欠損値が多い変数が何を表すものか見てみます。, 欠損値が多い変数に関しては、データが欠損しているというわけではなく、欠損=そもそもその設備がないことを表しているようですね。次に欠損値がある変数のデータ型を確認します。, floatとobjectですね。float型の場合は0、objectの場合は”None”で置換することにしましょう。ただし、隣接した道路の長さ(LotFrontage)に関しては同じ地区と他の物件と同じと思われるので、同じ地区の中央値をとることにします。, さきほどはカテゴリ変数を処理しましたが、続いては数値変数です。数値変数は基本はそのままモデルの入力に使えますが、データ上は数値であっても値の大きさや順番に意味のないものはカテゴリ変数として扱うべきです。もう一度データの定義を見てみると、以下の変数は数値変数ではなくカテゴリ変数として扱ったほうが良さそうです。, 探索的データ分析のフェーズで目的変数であるSalesPriceが正規分布になっていないことがわかりました。こちらを正規分布に変換します。, 同様に説明変数に関しても正規分布にしたがっていないものは対数変換していきます。各説明変数に対して歪度を計算し、0.5よりも大きい場合は対数変換することにします。, 歪度について https://bellcurve.jp/statistics/course/17950.html, 説明変数の場合は対数変換を一般化したBox-Cox変換を使用してみます。Box-Cox変換については以下の記事がわかりやすいです。https://qiita.com/dyamaguc/items/b468ae66f9ce6ee89724, ちなみにBox-Cox変換は0以下の値をとる変数には使用できないため、各変数の最小値を見てみます。, おっと、、負の値はないですが、0が含まれる変数がありますね、、、今回はBox-Cox変換ではなく、0以下の値を持つ変数にも適用可能なYeo-Johnson変換を使いたいと思います。, 同じくSalesPriceを予測する「Zillow Prize: Zillow’s Home Value Prediction」で、物件の面積を部屋数で割った1部屋当たりの面積という特徴量を追加したことで精度が上がった、ということがあったそうなので今回も追加してみます。, Zillow Prize: Zillow’s Home Value Predictionhttps://www.kaggle.com/c/zillow-prize-1, カテゴリ変数は多くのモデルでそのまま分析に用いることができません。そのため、カテゴリ変数をエンコーディングしていきます。, 学習データには存在せず、テストデータのみに存在するカテゴリ変数が存在するとモデルがそのカテゴリを学習できず、予測値がおかしくなる可能性があります。テストデータのみに存在するカテゴリ変数が存在しないかを確認しましょう。, 学習データの中に数が0となっているカテゴリ変数はないようですのでそのまま進めていきます。, カテゴリ変数のエンコーディング方法はさまざまありますのが、今回はone-hot-encodingによってハンドリングします。one-hot-encodingでは、各カテゴリ変数を(0,1)の二値変数をそれぞれ作成します。これらの二値変数は「ダミー変数」と呼ばれます。, pandasのget_dummies関数でone-hot-encodingを行います。, one-hot-encodingをしたことで列数が増えています。列数が増えてしまうことがone-hot-encodingのデメリットなので、それが問題になる場合は他のハンドリング方法を検討する必要がありますが、ここではそのまま進めていきます。, 前処理とエンコーディングが終わったのでデータを学習データとテストデータに分割しておきます。, モデルの評価用に学習データを学習に使用するデータと評価用データ(バリデーションデータ)に分割します。, 最近、kaggleで人気だと言われているGBDT(勾配ブースティング木)でモデルを作成します。GBDTはランダムフォレストと勾配ブースティング(Gradient Boosting)を組み合わせたアンサンブルです。GBDTには以下の特徴があります。, 実際にはカーネルで作成して、commitするとoutputの欄に作成されたcsvが表示されるのでそこから提出します。, 大手インターネット企業で働いていましたが、データサイエンティストを目指して転職。現在は外資コンサルでデータサイエンティスト(コンサルタント?)として働いています。, https://www.kaggle.com/c/house-prices-advanced-regression-techniques/overview, https://toukeier.hatenablog.com/entry/2019/09/08/224346, https://bellcurve.jp/statistics/course/17950.html, https://qiita.com/dyamaguc/items/b468ae66f9ce6ee89724, MiscFeature: Miscellaneous feature not covered in other categories, LotFrontage: Linear feet of street connected to property, MSSubClass: Identifies the type of dwelling involved in the sale.
バビロニア マーリン 復活, 京 大 東田式 頭がよくなる数学パズル, 阪急阪神ホールディングス インターン 優遇, 部屋が 焦げ臭い 料理, 七 つの 大罪 国, シマノ 変速機 交換, カミラ カベロショーン メンデス, 運動会 スローガン 四字熟語, ミニ財布 レディース 革, 花梨 英語 読み方, タバコ おまけ 2020, 子供 似顔絵 男の子, 旭川 気温 過去 最低, ハイマー キャンピングカー ブログ, 新学習指導要領 評価 3観点 音楽, 親戚 贈り物 手紙, 英語 訛り 特徴, 5時から9時まで ドラマ 配信, ワード 日付 自動 解除, ルージュの伝言 ピアノ 楽譜 ドレミ, 夏 車中泊 夜, 三菱 色鉛筆 ユニカラー 100色, 七 つの 大罪 メリオダス かみ ちぎり, シティーハンター 香 恋人, 可愛い文字 ひらがな 無料, 大切な友達 ピアノ ハ長調, 靴 臭い 洗う, Jr 領収書 宛名, エブリイワゴン Da17w シートカバー, エクセル フリーフォーム 曲線, 水族館 誕生日 サプライズ,
Discussion ¬