0

機械学習モデルをトレーニングするには、現在のユーザーと以前のユーザーのバランスの取れた数で構成されるユーザーのサンプルを取得する必要があります。データベースは、テーブルall_usersとformer_usersで構成されています。

不均衡なサンプル(100レコード)の場合、次のクエリは目的の列を持つレコードを返します。

SELECT t1.user_property1, t2.user_property2, t3.valid_to FROM additional_info t1 LEFT JOIN all_users t2 ON t1.user_ID = t2.user_ID LEFT JOIN former_users t3 ON t1.user_ID = t3.user_ID ORDER BY random() LIMIT 100

バランスの取れたサンプルを取得するには、テーブルformer_usersに格納されているユーザーの半分のレコードと、同時にテーブルformer_usersにないテーブルall_usersの半分のレコードが必要です(そうでない場合、サンプルはバランスが取れていません)。

誰かが知っていますか、テーブルadditional_infoからの追加のプロパティに沿ってテーブルall_usersとformer_usersからバランスの取れたランダムサンプルを取得するための最も便利な方法は何ですか?

ありがとうございました!

4

2 に答える 2

1

次のことをしました:

(SELECT t1.user_property1, t2.user_property2, t3.valid_to FROM additional_info t1 LEFT JOIN all_users t2 ON t1.user_ID = t2.user_ID INNER JOIN former_users t3 ON t1.user_ID = t3.user_ID ORDER BY random() LIMIT 50)
UNION
(SELECT t1.user_property1, t2.user_property2, NULL FROM additional_info t1 LEFT JOIN all_users t2 ON t1.user_ID = t2.user_ID WHERE t1.user NOT IN (SELECT user_ID FROM former_users) ORDER BY random() LIMIT 50)

しかし、より良い解決策を探していました。

于 2012-10-02T19:52:29.857 に答える
1

あなたが行うことを検討するかもしれないことの1つは次のとおりです。

Query 1 - SELECTS random non-former users joined to additional_info with a LIMIT of 50
Query 2 - SELECTS random former users joined to additional_info with a LIMIT of 50

その結果を UNION で結合します

(Query 1) UNION (Query 2)

これにより、合計 100 ユーザーで、両方の基準に対してランダムな結果が得られます。

于 2012-10-02T16:52:24.060 に答える