最初にサンプルが多すぎますか? 5つのサンプリングアルゴリズムを数分で実行できます

最初にサンプルが多すぎますか? 5つのサンプリングアルゴリズムを数分で実行できます

データサイエンスはアルゴリズムの研究です。この記事では、データを処理するための一般的なサンプリング手法をいくつか紹介します。

[[274956]]

1. 単純無作為抽出

ある集合が集団から選択され、その集合の各メンバーが選択される確率が等しいとします。

次のコードは、データセットから 100 個のサンプル ポイントを選択する方法を示しています。

  1. サンプルdf = df.sample(100)

2. 層別抽出法

[[274957]]

選挙で各候補者の平均得票数を推定したいとします。そして、その国に 3 つの町があるとします。

町Aには100万人の労働者がおり、町Bには200万人の労働者がおり、町Cには300万人の退職者がいます。

すべての有権者からランダムに抽出した 60 人が町の特徴にうまく適合しない可能性があり、その結果、データに偏りが生じ、推定値に重大な誤差が生じる可能性があります。

逆に、町 A、町 B、町 C からそれぞれ 10、20、30 のランダム サンプルを抽出した場合、同じサンプル数であれば、この方法を使用した推定結果の誤差は小さくなります。

これは Python を使用すると簡単に実行できます。

  1. sklearn.model_selection から train_test_split をインポートします
  2. X_train、X_test、y_train、 y_test = train_test_split (X、y、
  3. 階層化=y、
  4. テストサイズ= 0.25 )

3. 池のサンプリング

[[274958]]

一度だけ反復される、数が不明なアイテムの大きなストリームがあると仮定します。データ サイエンティストは、各アイテムが均等に抽選される確率になるように、アイテムのストリームからアイテムをランダムに選択するアルゴリズムを作成できます。このステップをどのように達成するのでしょうか?

無限のアイテムのストリームから 5 つのオブジェクトを抽出しなければならないとします。この場合、各オブジェクトが抽出される確率は等しくなります。

  1. randomdefジェネレータ(max)をインポートします:
  2.  
  3. = 1  
  4. 数値<  最大:  
  5. 数 += 1
  6. 利回り数
  7.  
  8. # ストリームジェネレーターとして作成
  9. ストリーム=ジェネレータ(10000)
  10.  
  11. # 川から貯留層サンプルを採取する
  12. 5 
  13. 貯水池= []
  14. iの場合、enumerate(stream)の要素:
  15. i+1 < = kの場合:
  16. リザーバー.append(要素)
  17. それ以外:
  18. 確率= k /(i+1)
  19. ランダム.ランダム() <  確率:  
  20. # ストリーム内の項目を選択し、すでに選択されている k 個の項目のうち 1 つを削除します
  21. 貯蔵庫[random.choice(range(0,k))] = 要素
  22.  
  23. 印刷(リザーバー)
  24. ------------------------------------
  25. [1369, 4108, 9986, 828, 5589]

サンプルでは、​​各要素がアイテムのストリームから抽出される確率は等しいことが数学的に証明できます。

どうやってやるんですか?

数学に関しては、小さな問題から始めるのが常に役立ちます。

したがって、3 つの項目のみを含むデータ ストリームから 2 つの項目を抽出したいとします。

池には十分なスペースがあるので、項目 1 をリストに追加できます。同様に、池にはまだ十分なスペースがあるので、項目 2 もリストに追加できます。

項目3を見てみましょう。ここからが面白いところです。アイテム 3 が引かれる確率は 2/3 です。

次に、アイテム 1 が抽選される確率を見てみましょう。

項目 1 が選択される確率は、項目 3 が選択される確率に、データ ストリーム内の他の 2 つの項目の候補として項目 1 がランダムに選択される確率を掛けたものに等しくなります。つまり、次のようになります。

  1. 2 /3*1/ 2 = 1/3

したがって、アイテム 1 を引く確率は次のようになります。

  1. 1–1 / 3 = 2/3

データ サイエンティストは、プロジェクト 2 にまったく同じパラメータを使用し、それをデータ フロー内の他のプロジェクトに適用できます。

したがって、各アイテムが選択される確率は同じです:2/3または一般にk/n

4. ランダムアンダーサンプリングとランダムオーバーサンプリング

実際、不均衡なデータセットは非常に一般的です。

再サンプリングは、極端に不均衡なデータセットを処理するために広く使用されている手法です。これは、多数派クラスから一部のサンプルを除外すること (アンダーサンプリング)、および/または少数派クラスからさらにサンプルを追加すること (オーバーサンプリング) を指します。

まず、不均衡なデータの例をいくつか作成します。

  1. sklearn.datasets から make_classification をインポートします
  2.  
  3. X, y =分類する(
  4. n_classes = 2 class_sep = 1.5 重み= [0.9, 0.1]、
  5. n_informative = 3 n_redundant = 1 flip_y = 0
  6. n_features = 20 n_clusters_per_class = 1
  7. n_samples = 100 ランダム状態= 10  
  8.  
  9. X = pd.データフレーム(X)
  10. X['ターゲット'] = y

ランダム オーバーサンプリングとアンダーサンプリングは、次の方法を使用して実行できるようになりました。

  1. num_0 =長さ(X[X['target']==0])
  2. num_1 =長さ(X[X['target']==1])
  3. 印刷(num_0,num_1)
  4.  
  5. # ランダムアンダーサンプル
  6.  
  7. アンダーサンプリングされたデータ= pd .concat([ X[X['target']==0].sample(num_1) , X[X['target']==1] ])
  8. print(len(アンダーサンプリングされたデータ))
  9.  
  10. # ランダムオーバーサンプル
  11.  
  12. オーバーサンプリングされたデータ= pd .concat([ X[X['target']==0] , X[X['target']==1].sample(num_0, replace = True ) ])
  13. print(len(オーバーサンプリングされたデータ))
  14.  
  15. ------------------------------------------------------------
  16. 出力:
  17. 90 10
  18. 20
  19. 180

5. 不均衡学習を用いたアンダーサンプリングとオーバーサンプリング

Imbalanced-learn (imblearn) は、不均衡なデータセットを解決するための Python パッケージです。

アンダーサンプリングとオーバーサンプリングにはいくつかの方法があります。

(1)Tomek Linksを用いたアンダーサンプリング:

Imbalanced-learn が提供する方法の 1 つは、2 つの異なるクラスのサンプル内の最も近い近傍を参照する Tomek Links です。

このアルゴリズムでは、大多数のクラス サンプルが最終的に Tomek リンクから削除され、分類器の決定境界が改善されます。

  1. imblearn.under_sampling から TomekLinks をインポート
  2.  
  3. tl = TomekLinks ( return_indices = True ratio = 'majority' )
  4. X_tl、y_tl、 id_tl = tl.fit_sample(X、y)

(2)SMOTEアルゴリズムを用いたオーバーサンプリング

SMOTE アルゴリズム (Synthetic Minority Oversampling Technology) は、既存のサンプルに最も近い近傍の中から少数クラスのサンプルの新しいサンプルを人工的に合成します。

  1. imblearn.over_sampling から SMOTE をインポートします
  2.  
  3. smote = SMOTE (比率= '少数派' )
  4. X_sm、 y_sm = smote.fit_sample (X、y)

Imblearn パッケージには、アンダーサンプリング (Cluster Centroids、NearMiss など) とオーバーサンプリング (ADASYN および bSMOTE) のための他の多くの方法があります。

結論

アルゴリズムはデータサイエンスの生命線です。

サンプリングはデータサイエンスにおける重要なトピックです。適切なサンプリング戦略は、プロジェクト全体を前進させるのに役立つ場合があります。間違ったサンプリング戦略は間違った結果につながる可能性があります。したがって、サンプリング戦略は慎重に選択する必要があります。

<<:  データサイエンスにおける強力な思考

>>:  相関関係は因果関係ではない。ディープラーニングによりAIは「10万のなぜ」を問うことができる

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

人工知能の時代において、Web フロントエンドは何ができるのでしょうか?

私は最近、クローラーを使用してページのスナップショットを取得し、ページの互換性の包括的なテストを実施...

...

DeepMind: ビッグモデルのもう一つの大きな欠陥は、正しい答えが事前にわかっていなければ推論を自己修正できないことだ。

大規模言語モデルのもう一つの重大な欠陥が DeepMind によって明らかにされました。 LLM は...

2021年のAIに関する10の大胆な予測

2020年は忘れられない年です。今年に入って、新型コロナウイルスの感染拡大に伴い、人工知能(AI)が...

GAN はたった 1 枚の画像でトレーニングできます。 Adobe が画像生成方法を改善 | オープンソース

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

Adobe は GAN をステッチされたモンスターに変え、1024 解像度の全身ポートレートを空中から作り出した

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

トランスフォーマーの簡易版がここにあります、ネットユーザー:今年の論文

Transformer アーキテクチャは、ディープラーニング分野における最近の多くの成功の原動力であ...

AI を人間の価値観に合わせるのはなぜ難しいのでしょうか?

何十年もの間、私たちは自分たちのイメージに合った人工知能を開発しようと努めてきました。一方で、私たち...

2018年: 人工知能の世界における8つのトレンド

​​ [[206934]]​​人工知能(AI)が私たちの仕事や生活に徐々に浸透してきていることは否定...

...

中国の「マインドショッピング」技術がマスク氏の脳コンピューターインターフェースに挑戦!ネットユーザー:手を切断することが斬首にエスカレート

心で買い物をすることを想像したことがありますか?最近、タオバオはマインドショッピングと呼ばれるブラッ...

ブロックチェーンを使用して AI スマートエコノミーを構築するにはどうすればよいでしょうか?

人工知能(AI)は、機械によって発揮される知能であるという点で人間の知能とは異なります。しかし、直接...

...

ファーウェイの天才少年Zhihuiは、かわいいロボットを自作し、5時間でオープンソース化し、GitHubで317個のスターを獲得した。

前回ブドウに縫い目をつけた「完全自社開発」のアイアンマンロボットアーム「ダミー」を覚えていますか? ...