仕事中のサイド プロジェクト用に、過去のローン、その収益率、およびそれらを借りた人々に関するデータを含む比較的小さな .CSV ファイル (最大 150,000 行) があります。ローンを組んでいる人のどの特性が最高の収益率と相関しているかを調べる必要があります。各行には、個人のクレジット スコア、月収、ローン期間などの数値データと、ローンが必要な目的などの質的データが含まれています。各エントリには合計 23 のフィールドがあり、フィールドごとに最大 2 ~ 10 の値が可能です。
私が最初に考えたのは、.CSV を SQLite にドロップしてから、各フィールドのすべての可能な順列をクエリし、結果から最高の収益率を選択することでした。ただし、クエリあたり .2 ミリ秒でも、計算を完了するのに約 400 年かかることに気付きました。これは明らかに機能しません。私が考えたもう 1 つの解決策は、たとえば、過去のローンの中で最も収益性の高い 10% を選択し、それらが最も頻繁に共有する特徴を見つけることでした。しかし、これは「たまたま」完済した非常にリスクの高いローンの特性を返すだけであり、新しいローンの引き受けを検討する際に選択するのに最も効果的な特性であるとは限りません。
私が考えることができる最も合理的な解決策は、値の範囲 (収入など) を持つことができるフィールドを取得し、バイナリ検索のようなものを実行することです。たとえば、収入を上位 50% と下位 50% に分割し、 ROR が最も高いグループの半分に、ROR が最も高いグループが含まれているとは限りません。最高のROR、およびb)この再帰的なチェックは、他の値の順列ごとにやり直す必要があり、それでも非常に高価になります.
このような問題はかなり一般的であり、標準的な解決策が存在すると思いますが、どこから探し始めればよいかわかりません。この問題にはどのような解決策が適切ですか? それについてもっと読むにはどこに行けばよいですか?
私の好みは Python でのソリューションですが、その仕事により適した別のツールがあれば、それも受け入れます。これがトピックから外れている場合は申し訳ありませんが、他にどこに質問すればよいかわかりません.1週間半回答なしでCrossValidatedに放置した後、削除してここに再投稿しました.