Allstateの保険金請求の重倧床の予枬。 卒業生の卒業プロゞェクト

こんにちは、こんにちは ビッグデヌタスペシャリストプログラムの第4セットであるKirill Danilyukの卒業生が圌の研究を共有し、コヌスの1぀で最終プロゞェクトずしお実斜したした。 すべおのドキュメントず説明は圌のgithubにありたす。 ここで圌の報告曞の翻蚳を提䟛したす。 泚意-ロングラむド。



Allstateの保険金請求の重倧床の卒業プロゞェクト予枬



パヌト1.プロゞェクトの説明



プロゞェクトの抂芁



デヌタ関連の分野で働く倚くの人々は、デヌタサむ゚ンスコンテストをホストするプラットフォヌムであるKaggleを知っおいたす。 珟圚、Kaggle には60䞇人を超えるデヌタサむ゚ンティストず倚くの有名䌁業が参加しおいたす。 䌚瀟は問題を説明し、品質指暙を蚭定し、問題解決に圹立぀デヌタセットを公開し、参加者は䌚瀟が提起した問題を解決する独自の方法を芋぀けたす。



このKaggleコンペは、個人の生呜保険および財産保険の分野で最倧の米囜公開䌁業であるAllstateによっお提䟛されおいたす。 Allstateは珟圚、保険金請求のコスト重倧床を予枬する自動方法を開発しおおり、Kaggleコミュニティにこの問題を解決するための新しいアむデアず新しいアプロヌチを瀺すよう呌びかけおいたす。



同瀟は、保険金請求凊理サヌビスの品質の向䞊を目指しおおり、保険金請求の費甚を数倀で掚定した䞖垯各䞖垯は匿名の蚘号のベクトルで衚されたすで発生した事故に関する䞀連のデヌタを公開しおいたす。 私たちの仕事は、新しい䞖垯の保険金請求の可胜性を予枬するこずでした。



Kaggleには、このタスクに関連する他のデヌタセットもいく぀かありたす。



• Allstate Insurance Prediction Competition-被保険車䞡の特性に基づいお保険料を予枬するために蚭蚈された以前のAllstate競争。 この競争のデヌタセットは、保険分野に突入する機䌚を提䟛したす。



• 火灜損倱評䟡競争 -保険契玄を策定するために、予想される火灜損倱を予枬するためにLiberty Mutual Groupが開催する競争。 これは、保険業界の予枬問題を解決するアプロヌチの理解を深めるのに圹立った保険業界のデヌタセットのもう1぀の䟋です。



それずは別に、初期デヌタセットは高床に匿名であるこずに泚意しおください機胜名ず倀の䞡方の点で。 この偎面は、特性の意味の理解を耇雑にし、倖郚゜ヌスからのデヌタセットを充実させるこずを困難にしたす。 競争の参加者は、゜ヌスデヌタを充実させ解釈するためにさたざたな詊みをしたしたが、その詊みの成功には議論の䜙地がありたす。 䞀方、このデヌタセットには、トレヌニングデヌタに远加情報が残っおいる堎合に発生するデヌタリヌクがないようです。 そのような情報は、タヌゲット倉数ず匷く盞関し、䞍合理に正確な予枬に぀ながる可胜性がありたす。 最近、かなりの数のKaggleコンテストがこのようなリヌクに苊しんでいたす。



問題の声明



Allstateの顧客の保険金請求に関する蚘録を含むデヌタセットを自由に䜿甚できたす。 各゚ントリには、カテゎリ属性ず連続属性の䞡方が含たれおいたす。 タヌゲット倉数は、この保険金請求によっお匕き起こされる損倱の数倀掚定です。 すべおの暙識は可胜な限り匿名で䜜成されたす。暙識の実際の名前たたはその本圓の意味はわかりたせん。



私たちの目暙は、䞎えられた属性倀に基づいお将来の損倱を正しく予枬できるモデルを構築するこずです。 明らかに、これは回垰タスクです。タヌゲット倉数は数倀です。 たた、教垫ずのトレヌニングのタスクでもありたす。タヌゲット倉数はトレヌニングデヌタセットで明確に定矩されおおり、テストセットの各レコヌドの倀を取埗する必芁がありたす。



Allstateはデヌタのクリヌニングず前凊理に優れた仕事をしたした。提䟛されたデヌタセットは非垞に高床にクリヌニングされ、少し远加凊理を行った埌教垫ず䞀緒に倚数のトレヌニングアルゎリズムに転送できたす。 デヌタ調査専甚のレポヌトの䞀郚で芋るように、Allstateのタスクでは、特に新しい機胜を生成したり、既存の機胜を前凊理したりするこずはできたせん。 䞀方、このデヌタセットは、さたざたな機械孊習アルゎリズムずアンサンブルの䜿甚ずテストを促進したす-ちょうど卒業プロゞェクトに必芁なものです。



Allstateプロゞェクトに次のアプロヌチを適甚したした。



1.デヌタセットを調べ、デヌタ、機胜、およびタヌゲット倉数の意味を理解し、デヌタ内の単玔な関係を芋぀けたす。 この手順は、 Data Discovery Notebookファむルで実行されたす。

2.必芁なデヌタ前凊理を実行し、いく぀かの異なる機械孊習アルゎリズムXGBoostおよび倚局パヌセプトロンをトレヌニングしたす。 基本的な結果を取埗したす。 これらのタスクは、 XGBoostおよびMLPファむルで解決されたす。

3.モデルを構成し、各モデルの結果に顕著な改善を達成したす。 このステップは、XGBoostおよびMLPファむルにも実装されおいたす。

4.基本予枬子ずしお以前のモデルを䜿甚しお、モデルを重ね合わせる積み重ねる手法を䜿甚しおアンサンブルを孊習させたす。 最終結果を取埗したす。これは以前の結果よりもはるかに優れおいたす。 このステップは、 Stacking Notebookファむルに実装されおいたす。

5.結果を簡単に話し合い、トヌナメントの順䜍で最終的な䜍眮を評䟡し、それを改善するための远加の方法を芋぀けたす。 結果に぀いおは、このレポヌトずStacking Notebookファむルの最埌の郚分で説明したす。



指暙



Kaggleプラットフォヌムでは、競合䌚瀟が競合他瀟が競合できる指暙を明確に定矩する必芁がありたす。 Allstateは、このようなメトリックずしおMAEを遞択したした。 MAE平均絶察誀差は、予枬倀ず真の倀を盎接比范する非垞にシンプルで明癜なメトリックです。









このメトリックは指定されおいるため、倉曎できたせん 競争条件の䞀郚です。 それにもかかわらず、私はそれがこのタスクに適しおいるず考えおいたす。 たず、MAEはMSEや暙準誀差ずは異なり゚ミッションの䞍正確な掚定に察しお倧きなペナルティを䞎えたせんデヌタセットには、異垞に高い損倱倀を持぀耇数の゚ミッションがありたす。 第二に、MAEは簡単に理解できたす。゚ラヌ倀は、タヌゲット倉数自䜓ず同じ次元で衚珟されたす。 䞀般的に、MAEはデヌタサむ゚ンスの初心者にずっお優れた指暙です。 簡単に蚈算でき、理解しやすく、誀解しにくいです。



パヌト2.分析



デヌタ探玢



このステップの完党な抂芁に぀いおは、 デヌタ怜出ファむルを参照できたす。



トレヌニングセット党䜓は、uid倉数を䜿甚しおむンデックス付けされた188318個の芁玠で構成されたす。 デヌタを操䜜するためのむンデックスには、远加情報は含たれたせん。 これは、いく぀かの欠損倀を含む「1」で始たる単玔な番号付けです。 予枬のためのむンデックスなしでテストセットを䜿甚するこずはありたせん結果をKaggleに送信する必芁がありたすが、テストデヌタセットがトレヌニングず同じように線成されおいるこずに泚意しおください。 明らかに、トレヌニングずテストのサンプルは、sklearnパッケヌゞのtrain_test_splitなど、分割手順によっお同じデヌタセットから取埗されたした。



プロゞェクトのこの郚分の䞻な結果は次のずおりです。



•デヌタセットには130の異なる属性が含たれたすidむンデックスずタヌゲット損倱倉数を陀く。 デヌタセットのサむズを考えるず、これは非垞に合理的な数の機胜です。 ここで「次元の呪い」に出くわすこずはほずんどなかったでしょう。



•116のカテゎリ蚘号、14の数倀。 ほずんどの機械孊習アルゎリズムはカテゎリ倉数を正しく凊理できないため、おそらくこれらの116の機胜をコヌディングする必芁がありたす。 このようなコヌディングの方法ず、それらの違いに぀いおは埌で説明したす。



•デヌタセット党䜓に単䞀の欠損倀はありたせん。 この事実は、Allstateが高床な前凊理でデヌタを提䟛し、アクセスしやすく䜿いやすくしたこずを確認するだけです。



•ほずんどのカテゎリ属性72たたは62はバむナリはい/いいえ、男性/女性ですが、それらの意味は単に「A」および「B」ず曞かれおいるため、意味をたったく掚枬できたせん。 3぀の暙識には3぀の異なる意味があり、12の暙識には4぀の異なる意味がありたす。



•数倀蚘号は既に0から1の範囲でスケヌリングされおおり、それらすべおの暙準偏差は0.2に近く、平均倀は0.5のオヌダヌです。したがっお、これらの蚘号に぀いおは、その倀に぀いお掚枬するこずはできたせん。



•どうやら、LabelEncoderたたは同様の手順を䜿甚しお数倀に倉換される前に、䞀郚の数倀属性がカテゎリ化されおいたようです。



•さたざたな兆候のヒストグラムを䜜成するこずにより、それらのいずれも正芏分垃法則に埓わないこずを確認できたす。 このデヌタの分垃の非察称性を枛らすこずはできたすがscipy.stats.mstats.skew> 0.25の堎合、そのような倉換の埌でも、正垞に近い分垃は倱敗したす。



•タヌゲット倉数も正芏分垃ではありたせんが、正芏分垃に近い単玔な察数倉換になりたす。



•タヌゲット倉数には、異垞に高い倀非垞に重倧なむンシデントを持぀いく぀かの倖れ倀が含たれおいたす。 理想的なケヌスでは、モデルがそのような倖れ倀を識別しお正しく予枬できるようにしたいず思いたす。 同時に、十分な泚意を払わなければ、簡単に再トレヌニングできたす。 明らかに、ここで䜕らかの劥協が必芁です。



•トレヌニングサンプルずテストサンプルのデヌタ分垃は類䌌しおいたす。 これは、トレヌニングサンプルずテストサンプルぞの分割の理想的な特性です。これにより、亀差怜蚌が倧幅に簡玠化され、トレヌニングデヌタセットの亀差怜蚌を䜿甚しおモデルの品質に関する情報に基づいた決定を行うこずができたす。 これにより、Kaggleコンテストぞの参加が倧幅に簡玠化されたしたが、卒業プロゞェクトの実斜には圹立ちたせん。



•いく぀かの連続的な特城は匷く盞関しおいたす盞関行列は䞋の図1に瀺されおいたす。 これにより、このデヌタセットにデヌタベヌスの倚重共線性が生じ、線圢回垰モデルの予枬力が倧幅に䜎䞋する可胜性がありたす。 この問題の䞀郚は、L1たたはL2正則化を䜿甚しお解決できたす。



画像

図1連続フィヌチャの盞関行列



抂芁の芖芚化



このデヌタセットの重芁な機胜-高床な匿名性、デヌタ前凊理-を瀺すために、1぀の芖芚化を瀺したす。



以䞋は、contずしおマヌクされた14の連続特性のヒストグラムです。 図からわかるように 1、デヌタ分垃には耇数のピヌクがあり、分垃密床関数はガりス分垃に近くありたせん。 デヌタの非察称係数を枛らすこずはできたすが、正芏化アルゎリズム Box-Cox倉換などを䜿甚しおも、このデヌタセットにはほずんど効果がありたせん。



画像

図2連続フィヌチャの棒グラフ



cont2の兆候は特に興味深いものです。 この症状はカテゎリヌに由来する可胜性が高く、幎霢たたは幎霢カテゎリヌを反映しおいる可胜性がありたす。 残念ながら、私はこの症状の調査には参加したせんでした。私のプロゞェクトには圱響がありたせんでした。



デヌタ分析のアルゎリズムず方法



このセクションは、 XGBoostノヌトブックずMLPノヌト ブックの 2぀のドキュメントでさらに詳しく説明されおいたす。



XGBoost。 私がプロゞェクトに興味を持っおいる理由の1぀は、朚、特にXGBoostをブヌストする方法を詊す機䌚です。 事実、このアルゎリズムは、そのスケヌラビリティ、柔軟性、印象的な予枬力により、倚くのKaggle競技䌚の䞀皮の暙準的なスむスナむフになりたした。



XGBoostは、珟圚の教垫よく定矩されたトレヌニングデヌタセットずタヌゲット倉数ず同様の教垫によるタスクの指導に適しおいたす。 以䞋に、XGBoostアルゎリズムの原理を説明したす。



XGBoostは、本質的にブヌスティングのバリ゚ヌションです。教垫トレヌニングのバむアスず分散を枛らすために䜿甚される機械孊習のアンサンブルメタアルゎリズムず、匱いモデルをより匷力なモデルに倉える䞀連の機械孊習アルゎリズムです。 出兞 りィキペディア 圓初、ブヌスティングのアむデアは、PACおそらくほが正しいモデルでのランダムな掚枬よりもわずかに良い結果を䞎える「匱い」孊習アルゎリズムを、任意の「匷い」孊習アルゎリズムに「匷化」できるかどうかに぀いお、KearnsずValiantによっお提起された質問に根ざしおいたす粟床。 出兞 ブヌスティングの簡単な玹介 Yoav FreundずRobert E. Schapire。 この質問に察する肯定的な回答は、倚くのブヌスティングアルゎリズムの開発に぀ながったRESchapireの蚘事The Power of Weak Learningで䞎えられたした。



ご芧のずおり、ブヌスティングの基本原則は、匱孊習アルゎリズムの䞀貫した䜿甚です。 埌続の各匱いアルゎリズムは、モデル党䜓のバむアスを枛らし、匱いアルゎリズムを匷力なアンサンブルモデルに結合しようずしたす。 AdaBoost匱孊習アルゎリズムに適応する適応型ブヌスティング、LPBoost、募配ブヌスティングなど、ブヌスティングアルゎリズムず方法にはさたざたな䟋がありたす。



特に、XGBoostは、募配ブヌスティングスキヌムを実装するラむブラリです。 募配ブヌスティングモデルは、他のブヌスティング方法を䜿甚する堎合ず同様に、段階的に構築されたす。 このブヌスティング方法は、匱孊習アルゎリズムを䞀般化しお、任意の埮分可胜な損倱関数蚈算可胜な募配を持぀損倱関数の最適化を可胜にしたす。



XGBoostは、䞀皮のブヌスティングずしお、スパヌスデヌタの操䜜に適した、オリゞナルの決定朚ベヌスの機械孊習アルゎリズムが含たれおいたす。 理論に基づいた手順により、朚のトレヌニングでさたざたな芁玠の重みを操䜜できたす。 出兞 XGBoostスケヌラブルなツリヌブヌスティングシステム Tianqi Chen、Carlos Guestrin



XGBoostアルゎリズムには倚くの利点がありたす。



•正則化。 倚局パヌセプトロンモデルに特化したセクションで瀺されるように、他のアルゎリズムを䜿甚するず、再トレヌニングされたモデルを簡単に取埗できたす。 XGBoostは、このプロセスを構成するための䞀連のオプションずずもに、信頌性が高く、すぐに䜿甚できる正芏化ツヌルを提䟛したす。 これらのパラメヌタヌのリストには、ガンマさらなるツリヌ分割に必芁な損倱関数の最小削枛、アルファL1正則化の重み、ラムダL2正則化の重み、max_depth最倧ツリヌ深床、min_child_weightすべおの重みの最小合蚈が含たれたす子䟛に必芁な芳察。



•䞊列および分散コンピュヌティングの実装。 他の倚くのブヌスティングアルゎリズムずは異なり、ここでのトレヌニングは䞊行しお実行できるため、トレヌニング時間が短瞮されたす。 XGBoostは非垞に高速です。 前述の蚘事の著者によるず、 「システムは1台のコンピュヌタヌで既存の䞀般的な゜リュヌションよりも10倍以䞊高速で実行され、分散環境たたはメモリ制限環境で数癟䞇のコピヌに拡匵できたす。」



•組み蟌みの盞互怜蚌。 クロス怜蚌は、結果ずしお埗られるモデルの品質を評䟡するための前提条件であり、XGBoostの堎合、それず連携するプロセスは非垞にシンプルで理解しやすいものです。



MLP 私たちが構築しおいる2番目のモデルは、完党に接続された盎接分垃ニュヌラルネットワヌクたたは倚局パヌセプトロンです。 最終目暙は、基本的なリグレッサのアンサンブルスタッキングを構築するこずなのでそしお、最初のリグレッサのタむプ-XGBoostを決定したした、そうでなければデヌタセットを調べる䞀般化アルゎリズムの別の「タむプ」を芋぀ける必芁がありたす。



これは、䞀般化されたれロレベルアルゎリズムが「スペヌスをカバヌする」べきだず蚀うずきです。 Wolpert、䞀般化オヌバヌレむ。



レむダヌず各レむダヌ内の芁玠を远加するこずにより、ニュヌラルネットワヌクはデヌタ内の非垞に耇雑な非線圢関係をキャプチャできたす。 普遍近䌌定理は、盎接䌝播ニュヌラルネットワヌクがナヌクリッド空間の任意の連続関数を近䌌できるず述べおいたす。 したがっお、倚局パヌセプトロンは非垞に匷力なモデリングアルゎリズムです。 倚局パヌセプトロンは簡単に再トレヌニングの察象ずなりたすが、この芁因の圱響を枛らすために必芁なすべおのツヌルを自由に䜿甚できたすニュヌロン掻性化のランダムシャットダりンドロップアりト、L1-L2正則化、パケット正芏化バッチ正芏化など たた、いく぀かの同様のニュヌラルネットワヌクをトレヌニングしお、それらの予枬を平均化するこずもできたす。



ディヌプラヌニングコミュニティは、人工ニュヌラルネットワヌクに基づいおモデルをトレヌニングおよび評䟡するための高品質な゜フトりェアを開発したした。 私のモデルは、Googleが開発したテン゜ルコンピュヌティングラむブラリであるTensorFlowに基づいおいたす。 モデルの構築を簡玠化するため、TensorFlowずTheanoの高レベル倖郚むンタヌフェむスであるKerasを䜿甚するこずにしたした。これは、ニュヌラルネットワヌクの構築ずトレヌニングに必芁なほずんどの暙準操䜜を匕き受けたす。



GridSearchおよびHyperopt。 これらのメ゜ッドは、モデルの遞択ずハむパヌパラメヌタヌの構成に䜿甚されたす。 GridSearchはパラメヌタヌのすべおの可胜な組み合わせを培底的に怜玢したすが、Hyperoptはパラメヌタヌ空間から特定の分垃で特定の数の候補を遞択するか、ベむゞアン最適化の圢匏を䜿甚したす。 これらの䞡方の遞択方法ずずもに、盞互怜蚌手法を䜿甚しおモデルのパフォヌマンスを評䟡したす。 モデルの蚈算の耇雑さに応じお、3぀たたは5぀の郚分でk分割亀差怜蚌を䜿甚したす。



オヌバヌレむモデルスタッキング。 2぀のモデルXGBoostおよび倚局パヌセプトロンの予枬を組み合わせお、メタリグレッサヌを䜿甚しお最終予枬を䜜成したす。 この方法はスタッキングず呌ばれ、Kaggleで頻繁に䜿甚されたす倚くの堎合、過床に。 スタッキングのアむデアは、トレヌニングセットをk個の郚分に分割し、各ベヌスリグレッサをk-1個の郚分でトレヌニングし、残りの郚分で予枬を行うこずです。 その結果、タヌゲット倉数の実際の倀を保持しながら、リグレッサヌの予枬フォヌルド倖を含むトレヌニングサンプルを取埗したす。 次に、各リグレッサヌの予枬をメタモデルのサむンずしお䜿甚し、真の倀をタヌゲットサむンずしお䜿甚しお、このデヌタでメタモデルをトレヌニングしたす。



トレヌニングされたメタモデルの堎合、テストサンプルのリグレッサの予枬倉数を入力し、トレヌニングされたモデルが各リグレッサの特性誀差を考慮に入れる最終予枬を取埗したす。 このステップの実装に぀いおは、 Stacking Notebookファむルで詳しく説明されおいたす。



結果を評䟡するための基準



最初の結果はAllstateによっお蚭定されたした。ランダムフォレストのアンサンブルモデルをトレヌニングし、MAE = 1217.52141の結果を埗たした。 この結果は、単玔なXGBoostモデルでも簡単に超えるこずができ、ほずんどの参加者が成功したした。



たた、モデルを教えたずきに自分自身にいく぀かの基準を蚭定したした。 䞀番䞋の行は、このクラスの単玔なモデルのパフォヌマンスでした。 XGBoostの堎合、この結果はMAE = 1219.57に蚭定されおおり、最適化たたはハむパヌパラメヌタヌ蚭定なしで50本の朚の単玔なモデルによっお達成されおいたす。 暙準のハむパヌパラメヌタヌ倀 Analytics Vidhyaの蚘事で掚奚 を取埗し、少数のツリヌを残しお、この初期結果を埗たした。



倚局パヌセプトロンの堎合、ReLUアクティベヌション機胜、暙準りェむトの初期化、およびAdam GDオプティマむザヌMAE = 1190.73を䜿甚しお、隠れ局128に少数の芁玠を含む2局モデルのパフォヌマンスが基本結果ずしお遞択されたした。



この卒業プロゞェクトでは、すべおの結果が再珟可胜であるべきだず理解しおいるため、耇雑なベヌスラむンモデルを避けたした。 私もこのKaggleコンペティションに参加しおいたすが、コンペティションで䜿甚されおいるすべおのモデルほずんどが組み合わせであり、倚数のアルゎリズムを䜿甚をトレヌニングするには、間違いなく読者からの時間がかかりすぎたす。 Kaggleコンテストでは、MAE = 1100の結果を䞊回るこずを望んでいたす。



パヌト3.方法論



デヌタの前凊理



このデヌタセットはすでに十分に準備され、前凊理されおいるこずを既に述べたした。たずえば、連続蚘号は間隔[0,1]にスケヌリングされ、カテゎリ蚘号は名前が倉曎され、倀は数倀に倉換されたした。 実際、前凊理の芳点では、実行できる䜙地はあたりありたせん。 ただし、正しいモデルをトレヌニングできるように、ただいく぀かの䜜業を行う必芁がありたす。



タヌゲット倉数の前凊理



タヌゲット特性には、回垰モデルの品質を䜎䞋させる可胜性のある指数分垃がありたす。 ご存知のように、回垰モデルは、タヌゲット倉数が正芏分垃しおいる堎合に最適に機胜したす。



この問題を解決するには、タヌゲット倉数損倱に察数倉換np.logtrain ['loss']を適甚するだけです。



画像

図3察数倉換前埌のタヌゲット倉数の分垃のヒストグラム



結果を改善するこずができたす。いく぀かの逞脱した芳枬倀は、メむンの分垃ベルの巊偎にありたす。 これらの倖れ倀を取り陀くために、損倱倉数のすべおの倀を右に200ポむント損倱+ 200シフトし、それらから察数を取るこずができたす。



カテゎリヌ倉数のコヌディング



ほずんどの機械孊習アルゎリズムは、カテゎリヌ倉数を盎接䜿甚できたせん。 XGBoostも䟋倖ではないため、カテゎリ倉数を数倀に倉換する必芁がありたす。 ここでは、ラベル゚ンコヌディングたたはワンホット゚ンコヌディングの2぀の暙準戊略のいずれかを遞択できたす。 䜿甚する戊略は重芁なポむントですが、ここではいく぀かの芁因を考慮する必芁がありたす。



盎接コヌディングワンホット゚ンコヌディングは、カテゎリ属性を操䜜する基本的な方法です。 スパヌスマトリックスを生成したす。新しい列はそれぞれ、1぀の属性の1぀の可胜な倀を衚したす。 116個のカテゎリ倉数があり、cat116は326個の倀をずるため、膚倧な数のれロを持぀スパヌス行列を取埗できたす。 これにより、トレヌニング時間が長くなり、メモリコストが増加し、結果が䜎䞋するこずさえありたす。 盎接コヌディングの別の欠点は、カテゎリの順序が重芁な堎合の情報の損倱です。



䞀方、 ラベル゚ンコヌディングは 、0からクラス1の数たでの倀のみが含たれるように、入力列を単玔に正芏化したす 。 倚くの回垰アルゎリズムでは、これは良い戊略ではありたせんが、XGBoost はそのような倉換を非垞にうたく凊理できたす。



XGBoostの堎合、LabelEncoderを䜿甚しお入力を正芏化したす。 倚局パヌセプトロンの堎合、ダミヌ倉数を䜜成する必芁があるため、ここでの遞択はワンホット゚ンコヌディングです。



モデルの実装ず改善



前述のように、機械孊習を実装するための方法論は2぀のセクションに分けられたす。



•基本モデルれロレベルモデルのトレヌニング、調敎、および亀差怜蚌XGBoostず、これらの2぀のモデルでは少し異なる予備デヌタ準備を既に実行したずいう仮定の䞋での倚局パヌセプトロン。 違いは、属性の゚ンコヌド盎接゚ンコヌドたたはラベル゚ンコヌドず残念ながら倚局パヌセプトロンモデルのタヌゲット倉数の察数倉換がない堎合です。 このパヌトの結果は2぀の調敎されたモデルになり、その結果は確立された基準を満たしたす。



•レベル1モデル、぀たりオヌバヌレむモデルのトレヌニングず怜蚌。このセクションの結果は、以前にトレヌニングした基本的なれロレベルモデルのそれぞれよりも優れた結果を提䟛する新しいメタモデルになりたす。



次に、各セクションの詳现な抂芁を説明したす。



セクション1.れロレベルモデルトレヌニング、チュヌニング、クロス怜蚌



XGBoostモデルトレヌニング方法
Analytics VidhyaのXGBoostチュヌニングガむドの適合バヌゞョン



1.パラメヌタヌnum_boost_round = 50、max_depth = 5で浅くシンプルなモデルをトレヌニングしたしょう。 MAE = 1219.57。そのような結果を䞋限ずしお蚭定し、モデルを調敎するこずでそれを改善したす。



2。ハむパヌパラメヌタヌの最適化を促進するために、XGBoost䞊に構築された独自のクラスXGBoostRegressorを実装したす。このクラスは、抂しお、モデルが機胜するために必芁ではありたせんが、scikit-learnで実装されたGridSearchCVグリッド怜玢を䜿甚する堎合、倚くの利点を提䟛したす独自の損倱関数を䜿甚し、最倧化する代わりにこの関数を最小化できたす。



3.孊習速床ず、グリッド䞊での以降の各怜玢に含たれるツリヌの数を決定しお修正したす。私たちのタスクは最短時間で良い結果を埗るこずであるため、少数のツリヌず高い孊習速床を配眮したすeta = 0.1、num_boost_round = 50。



4。パラメヌタヌmax_depthおよびmin_child_weightを蚭定したす。これらのハむパヌパラメヌタヌを䞀緒に構成するこずをお勧めしたす。 max_depthの増加は、モデルの耇雑さを増加させたすそしお再蚓緎の可胜性を増加させたす。同時に、min_child_weightは正則化パラメヌタヌずしお機胜したす。次の最適なパラメヌタヌを取埗したすmax_depth = 8、min_child_weight = 6。これにより、MAE = 1219.57からMAE = 1186.5に結果が改善されたす。



5.ガンマ、正則化パラメヌタヌを構成したす。



6.各ツリヌcolsample_bytree、subsampleで䜿甚されるトレヌニングの兆候ず芁玠の数の比率を構成したす。次の最適な構成を取埗したすsubsample = 0.9、colsample_bytree = 0.6、結果をMAE = 1183.7に改善したす。



7。 , ( num_boost_round) eta. . 200 , eta=0.07 MAE=1145.9.



Grid Search 4 ( ):



画像

4: max_depth–min_child_weight colsample-subsampling



:



1.簡単なものから始めお、単䞀の隠れ局2局、ReLUアクティベヌション関数、および募配降䞋法を実装するAdamオプティマむザヌで基本モデルを構築したしょう。このような浅いモデルは再トレヌニングが困難で、すぐに孊習しお適切な初期結果が埗られたす。倉䜍ず分散の間の劥協点に関しお、それらは倉䜍モデルですが、それらは安定しおおり、そのような単玔なモデルに察しおたずもな結果MAE = 1190.73を䞎えたす。



2. k-fold cross-validationを䜿甚しお、より深いモデルのパフォヌマンスを枬定し、再トレヌニングを芖芚化したす。 3局モデルをトレヌニングし、簡単に再トレヌニングする傟向があるこずを瀺したす。



3。3局モデルに正則化を远加したすニュヌロンのシャットダりンドロップアりトず早期停止早期停止。埌続の手動テスト甚にいく぀かの可胜な構成を定矩したす。これらの構成は、非衚瀺芁玠の数ずニュヌロンをオフにする確率が異なりたす。これらのモデルをトレヌニングし、盞互怜蚌によっお埗られた結果を怜蚎および比范し、最適なものを遞択したす。実際、このアプロヌチでは、改善は埗られたせん。2局モデルず比范した結果は悪化するだけです。このような結果は、倚局パヌセプトロンの正則化に察する手動のそしおそれにより䞍正確なアプロヌチによっお匕き起こされる可胜性がありたす。レむダヌの劥圓な蒞着匷床を決定するだけですが、遞択した匷床が最適であるずいう保蚌はありたせん。



4。Hyperoptを導入しお、自動化されたよりむンテリゞェントな方法でハむパヌパラメヌタヌのスペヌスを怜玢したす評䟡Parzenアルゎリズムのツリヌであるtpe.suggestを䜿甚したす。さたざたなニュヌロンの損倱、局の構成、隠れた芁玠の数を含むハむパヌパラメヌタヌの倚数の構成で、Hyperoptのいく぀かの反埩を実行したす。最埌に、adadeltaオプティマむザヌ、パケット正芏化バッチ正芏化、およびニュヌロンの損倱を䌎う4局アヌキテクチャヌ3぀の隠れ局を䜿甚するのが最適であるこずがわかりたす。



倚局パヌセプトロンの



画像

最終アヌキテクチャ 図5倚局パヌセプトロン

の最終アヌキテクチャ亀差怜蚌に関するこのモデルの結果は次のずおりです。MAE= 1150.009。



セクション2.第1レベルモデルのトレヌニング



これたでに、れロレベルモデルXGBoostず倚局パヌセプトロンのトレヌニングず調敎を行っおきたした。このセクションでは、真の倀がわかっおいるれロレベルモデルのクロス怜蚌で䜜成された予枬からのデヌタセットず、メタモデルの品質の最終評䟡に䜿甚されるれロレベルモデルの予枬のテストサンプルをコンパむルしたす。



モデルのアンサンブルを構築するプロセスを完党に理解するには、このファむルを参照しおください。



私が䜿甚したアンサンブル構築方法論を以䞋に説明したす。



• ステップ1.遅延デヌタセットの新しいトレヌニングず生成。結果をKaggleに送信せず、「リヌダヌボヌドを砎る」こずもしないため、トレヌニングサンプルをトレヌニングずテストの2぀の郚分に分ける必芁がありたす。トレヌニングサブサンプルは、k分割パヌティションを䜿甚した亀差怜蚌のれロレベルモデルの予枬を生成するために䜿甚されたすが、遅延デヌタセットは、2぀のれロレベルモデルずメタモデルのパフォヌマンスの最終評䟡にのみ䜿甚されたす。



• ステップ2パヌティション分割。トレヌニングセットをk個の郚分に分割したす。これは、れロレベルモデルのトレヌニングに䜿甚されたす。



• ステップ3盞互怜蚌の予枬。K-1パヌツで各れロレベルモデルをトレヌニングし、残りのパヌツの予枬を䜜成したす。すべおのKパヌツに察しおこのプロセスを繰り返したす。最埌に、テストサンプル党䜓タグもありたすの予枬を取埗したす。



• ステップ4サンプル党䜓のトレヌニング。トレヌニングデヌタセット党䜓で各れロレベルモデルをトレヌニングし、テストセットの予枬を取埗したす。埗られた予枬から新しいデヌタセットを䜜成したす。各笊号は、れロレベルモデルの1぀の予枬です。



• ステップ5第1レベルモデルのトレヌニング。レベル1モデルのマヌクずしおトレヌニングセットの察応するマヌクを䜿甚しお、クロス怜蚌䞭に取埗した予枬の第1レベルモデルをトレヌニングしたす。その埌、れロレベルモデルの予枬のデヌタの組み合わせセットを䜿甚しお、第1レベルモデルの最終予枬を取埗したす。



最初のレベルのモデルずしお、線圢回垰を遞択したす。メタモデルは簡単に再トレヌニングされたすそしお、率盎に蚀っお、競争では、メタモデルずしおの単玔な線圢回垰よりもうたく機胜したせんでした。このオヌバヌレむは非垞にうたく機胜し、結果が倧幅に改善されたした。非衚瀺のデヌタセットでれロレベルモデルず最終的なアンサンブルモデルを盞互怜蚌した埌、次の結果が埗られたした。



MAE  XGBoost: 1149.19888471 MAE   : 1145.49726607 MAE   : 1136.21813333
      
      





モデルの重耇MAE = 1136.21の結果は、アンサンブルの最高のモデルの結果よりも顕著に優れおいたす。 もちろん、この結果はさらに改善できたすが、このプロゞェクトでは、モデルの予枬胜力を高めるこずずトレヌニング時間を短瞮するこずの間で劥協したす。

説明この結果セットは、盞互怜蚌ではなく、遅延遞択で蚈算されたした。 したがっお、クロスバリデヌションで埗られた結果を遅延デヌタセットの結果ず盎接比范する暩利はありたせん。 ただし、保留䞭のデヌタセットには、予想どおり、デヌタセット党䜓の分垃に近い分垃がありたす。 これが、オヌバヌレむがパフォヌマンスを本圓に改善したず䞻匵できる理由です。



補足ずしお、れロレベルモデルがオヌバヌレむにどのような重みを付けたのかを知るこずは興味深いでしょう。 線圢回垰では、最終予枬は単玔に重みず初期予枬の線圢結合です。



 PREDICTION = 0.59 * XGB_PREDICTION + 0.41 * MLP_PREDICTION
      
      





パヌト4.結果



モデルの評䟡ず怜蚌



結果を評䟡するために、デヌタセットのさたざたなサブセットで最終モデル個々およびアンサンブルをトレヌニングおよび怜蚌したす。 したがっお、モデルの安定性、および初期トレヌニングサンプルに関係なく安定した結果を埗るこずができるかどうかを確認できたす。 これらの目暙を達成するために、 Stacking Notebookドキュメントからmodules / stacker.pyクラスぞのモデルのオヌバヌラップを䞀般化したす。これにより、異なるsidでモデルの評䟡手順をすばやく呌び出すこずができたすモデルが互いにわずかに異なるように。



5぀の異なるsidを䜿甚しお、れロおよび最初のレベルのモデルをトレヌニングし、結果を衚に曞き蟌みたす。 次に、pd.describeメ゜ッドを䜿甚しお、各モデルの集蚈パフォヌマンス統蚈を取埗したす。 ここで最も特城的なメトリックは、平均平均ず暙準偏差stdです。



ご芧のずおり、モデルは非垞に安定しおおり暙準偏差が䜎い、アンサンブルは垞に他のどのモデルよりも優れおいたす。 その最䜎の結果は、最良の個々のモデルの最高の結果よりも優れおいたすMAE = 1132.165察MAE = 1136.59。



もう1぀の説明モデルを慎重にトレヌニングしお怜蚌しようずしたしたが、ただ気付かないたた情報挏えいの䜙地があるかもしれたせん。 すべおのモデルは、1぀のそのようなリヌクによっお匕き起こされる可胜性のある結果の改善を瀺しおいたすただし、5぀のモデルのみをトレヌニングしたした。パラメヌタヌseed = 0は、単に悪い結果を䞎える可胜性がありたす。 それでも、最終的な結論は匕き続き有効です。 さたざたなSIDでトレヌニングされた耇数のオヌバヌレむを平均するず、最終結果が向䞊したす。



正圓化



基本的な結果は次のずおりです。MAE= 1217.52AllstateのランダムフォレストモデルおよびMAE = 1190.73MAE単玔倚局パヌセプトロン。 最終モデルでは、最初の結果が7.2 、 5.1改善されたした2番目。



これらの結果の重芁性を枬定するために、各基本結果を前のセクションで取埗した結果の衚に远加し、基本結果が異垞ず呌ばれるかどうかを調べたす。 そのため、ベヌスラむンの結果を排出量ずみなすこずができる堎合、最終結果ずベヌスラむンの結果の差は倧きくなりたす。



このテストを実行するために、異垞ず異垞倀の怜出に䜿甚されるIQR四分䜍範囲を蚈算できたす。 次に、3番目のデヌタ倉䜍倀Q3を蚈算し、匏Q3 + 1.5 * IQRを䜿甚しお、結果の䞊限を蚭定したす。 この制限を超える倀は倖れ倀ず芋なされたす。 このテストを実斜するず、䞡方の基本的な結果が倖れ倀であるこずがわかりたす。 したがっお、オヌバヌレむモデルはベヌスコントロヌルポむントをはるかに超えおいるず蚀えたす。



 for baseline in [1217.52, 1190.73]: stacker_scores = list(scores.stacker) stacker_scores.append(baseline) max_margin = np.percentile(stacker_scores, 75) + 1.5*iqr(stacker_scores) if baseline - max_margin > 0: print 'MAE =', baseline, ' .' else: print 'MAE = ', baseline, '  .'
      
      





出力では次のようになりたす。



 MAE = 1217.52  . MAE = 1190.73  .
      
      





パヌト5.結論



自由圢匏の芖芚化



詳现から抜象化し、プロゞェクト党䜓を芋おみたしょう。 XGBoostず倚局パヌセプトロンの2぀の䞻芁モデルをトレヌニングおよび最適化したした。 最も単玔なモデルから、調敎された、より安定した耇雑なモデルたで、倚くのステップを螏んでいたす。 その埌、レベル1モデルの線圢回垰予枬、線圢回垰を䜜成し、スタッキング手法を䜿甚しおれロレベルモデルの予枬を結合したした。 最埌に、スタッキングのパフォヌマンスを怜蚌し、5぀のバリ゚ヌションをトレヌニングしたした。 これら5぀のモデルの結果を平均するず、最終結果はMAE = 1129.91になりたした。



画像

図6結果を改善するための重芁なステップ



もちろん、れロレベルにもっず倚くのモデルを含めるこずも、それらのアンサンブルをより耇雑にするこずもできたす。 可胜な方法の1぀は、いく぀かの完党に異なるアンサンブルをトレヌニングし、それらの予枬をたずえば、線圢結合ずしお新しいレベルのレベル2で結合するこずです。



完了した䜜業の分析



問題の完党な解決策

このプロゞェクトのアむデアは、新しい特性の䜜成を必芁ずしないデヌタセットを䜿甚するこずでした。 そのようなデヌタセットを持぀こずは非垞に玠晎らしいです、なぜなら これにより、デヌタの前凊理やアルゎリズムの倉曎ではなく、アルゎリズムずその最適化に集䞭できたす。 もちろん、XGBoostずニュヌラルネットワヌクの動䜜をテストしたかったので、遞択したデヌタセットは、他のKaggle参加者の結果ず比范しお、モデルの品質の優れた基本的な評䟡を䞎えるこずができたした。



プロゞェクトで提瀺された脆匱なモデルを䜿甚しおも、基本結果がかなり過剰になり、 7.2増加したした 。 基本結果を最終結果ず比范し、最終結果が実際に倧幅な改善であるこずを確認したした。



難しさ



このプロゞェクトは簡単ではありたせんでした。 新しい属性の䜜成、次元の削枛、デヌタの匷化など、デヌタセットに察する特別なたたは創造的なアプロヌチは瀺したせんでしたが、Kaggleに必芁なモデルの蚈算の耇雑さは予想よりも高くなりたした。



Allstate Claims Severityの䞻な問題は、コンピュヌティングの再珟性でした。 それを保蚌するために、倚くの予備的な芁件を満たす必芁がありたした結果を埗るプロセスは明確であり、蚈算-決定論的たたは少なくずも限られた倉動でであり、珟代の機噚で合理的な時間に再珟可胜でなければなりたせんでした。 その結果、既存のモデルの耇雑さを倧幅に削枛し、いく぀かの手法を完党に排陀したしたたずえば、XGBoostおよび倚局パヌセプトロンのバギング手法を陀倖したしたが、これらのモデルをバギングした埌、著しく良い結果が埗られたした。



このプロゞェクトは、䞻にAmazon Web Servicesむンフラストラクチャで行われたした。マルチレむダヌパヌセプトロンNVIDIA Tesla K80 GPU、12 GB GPUメモリのGPUコンピュヌティングを䜿甚したp2.xlargeむンスタンスず、XGBoost36 vCPU、 60 GBのメモリ。 私のプロゞェクトには、重い蚈算を必芁ずするいく぀かのセクションがありたす。



•グリッドで怜玢。 XGBoostセクション内のすべおのグリッドを反埩凊理するには、倚くの時間がかかりたす。 通垞のコンピュヌタヌでは、XGBoostに必芁なすべおの蚈算に1〜2時間かかる堎合がありたす。

•倚局パヌセプトロンモデルの盞互怜蚌。 残念ながら、倚局パヌセプトロンのトレヌニングで亀差怜蚌を加速する魔法の方法はありたせん。 亀差怜蚌は、モデルの品質を評䟡するための信頌できる方法です。それを避けるべきではありたせんが、十分な時間を確保する必芁がありたす。

•ハむパヌパラメヌタヌの最適化。 これは間違いなくすべおの蚈算の䞭で最も難しい郚分です。 Hyperoptのさたざたな組み合わせを怜玢し、Hyperoptを䜿甚しお適切な組み合わせを芋぀けるには䜕時間もかかりたす。

•倚局パヌセプトロンずXGBoostの盞互怜蚌予枬の生成。



結果を再珟する最良の方法は、事前にトレヌニングされたモデルを最初に実行し、次に最も簡単なモデルのいく぀かを再集蚈するこずです。



機胜匷化



プロゞェクトには、将来の改善のための十分な䜙地が残されおいたす。 以䞋では、他にどのような改善方法を䜿甚できるかを考えたす。



デヌタの前凊理



1.最初に倚局パヌセプトロンのモデルで䜜業を開始し、その埌初めおタヌゲット倉数の察数を䜿甚する手法を発芋したした。 その結果、私の倚局パヌセプトロンは察数倉換なしで蚓緎されたした。 もちろん、タヌゲット倉数を察数化し、すべおの倚局パヌセプトロンモデルを再トレヌニングできたす。



2.タヌゲット倉数を倉換する有望な方法は、200ポむント右にシフトするこずですすべおの倀に200を远加したす。 このようなシフトを行っおから察数を取るず、タヌゲット倉数の分垃密床関数の巊偎にある倖れ倀が取り陀かれたす。 したがっお、分垃を正芏に近づけたす。



XGBoost



1.ツリヌを远加し、同時にetaパラメヌタヌを枛らしお、より掗緎されたXGBoostモデルをトレヌニングしたす。 私の䜜業モデルでは、28000本の朚ずeta = 0.003を䜿甚したす。これは、グリッド怜玢手順を䜿甚しお決定されたした。



2. num_boost_roundの代わりにearly_stopping_roundsを䜿甚しお、孊習を停止し、モデルの過剰適合を回避したす。 この堎合、etaを小さな数に蚭定し、num_boost_roundを非垞に倧きく蚭定したす最倧10䞇。 この堎合、怜蚌サンプルを準備する必芁があるこずを理解する必芁がありたす。 その結果、モデルのトレヌニング甚デヌタが少なくなり、パフォヌマンスが䜎䞋する可胜性がありたす。



3.ハむパヌパラメヌタヌの他の倀でグリッド怜玢を開始したす。 0ず0.5の間のcolsample_bytreeの倀をテストできるずしたしょう。倚くの堎合、良い結果が埗られたす。 ここでの考え方は、ハむパヌパラメヌタヌの空間にいく぀かの局所的な最適倀があり、それらのいく぀かを芋぀ける必芁があるずいうこずです。



4.異なるハむパヌパラメヌタヌでトレヌニングされた耇数のXGBoostモデルを組み合わせたす。 これを行うには、モデルの結果を平均化し、ブレンドおよびスタックしたす。



倚局パヌセプトロン



1.バギング手法を䜿甚しお、同じモデルの耇数の倚局パヌセプトロンを平均化したす。 モデルは確率論的であるためたずえば、ニュヌロンの損倱=ドロップアりトを䜿甚するため、バギングにより䜜業がスムヌズになり、予枬胜力が向䞊したす。



2.より深いネットワヌクアヌキテクチャ、他の芁玠構成、およびハむパヌパラメヌタヌ倀を詊しおください。 募配降䞋法に埓っお動䜜する他のオプティマむザヌをテストし、レむダヌの数、各レむダヌの芁玠の数を倉曎できたす-Hyperoptのすべおの力は私たちの手にありたす。



3.既知の手法を䜿甚しお、いく぀かの異なる倚局パヌセプトロンを組み合わせたす たずえば、2局、3局、および4局のニュヌラルネットワヌクをトレヌニングしたす。 これらのモデルは、さたざたな方法でデヌタ空間をカバヌし、ベヌスラむンの結果よりも改善されたす。



盞互怜蚌



3぀の郚分に分割する単玔な盞互怜蚌を䜿甚する代わりに5぀の郚分に分割を䜿甚するこずもありたす、10の郚分に盞互怜蚌するこずができたす。 このような盞互怜蚌は、Kaggle競技に適しおいたすが、ほが確実に結果が向䞊したすトレヌニングデヌタが増えたす。



スタッキング



1.れロレベルモデルをさらにアンサンブルに远加できたす。 たず、より倚くの倚局パヌセプトロンずXGBoostモデルを単玔にトレヌニングできたすが、それらは互いに異なる必芁がありたす。 たずえば、これらのモデルをさたざたなデヌタのサブセットでトレヌニングできたす。䞀郚のモデルでは、さたざたな方法でデヌタを前凊理損倱できたす。 次に、完党に異なるモデルを導入できたす。LightGBM、k個の最近傍アルゎリズム、因数分解マシンFMなどです。



2.別のアむデアは、新しいオヌバヌレむレむダヌずしお2番目のレむダヌを远加するこずです。 その結果、2レベルのスタッキングが埗られたす。れロレベルのリグレッサヌL0があり、フォヌルド倖予枬ではいく぀かの異なる第1レベルのメタモデルL1をトレヌニングしたす。 次に、メタモデル予枬L2の線圢結合を取埗し、最終グレヌドを取埗したす。



3. PCA-デヌタマむニングに぀いおラップトップで考慮された䞻芁コンポヌネントの方法を䜿甚しおみおください。 ここにいく぀かのアむデアがありたす。 たず、取埗したコンポヌネントをフォヌルドアりト予枬ず混合するこずができたす。この予枬では、メタモデルに远加情報を远加するために線圢回垰L1がトレヌニングされたす。 第二に、すべおの暙識から重量の倧きいもののみを遞択でき、残りはノむズずしお砎棄されたす。 これは、結果のモデルの品質を向䞊させるのにも圹立ちたす。



プロゞェクト党䜓が実行された構成の説明、 ここ



All Articles