個人財務 データストリームの要素数を見つける方法 - ダミー

データストリームの要素数を見つける方法 - ダミー

ビデオ: Microsoft Ignite 2019 Vision Keynote 日本語同時通訳版 2024

ビデオ: Microsoft Ignite 2019 Vision Keynote 日本語同時通訳版 2024
Anonim

Bloomフィルタはストリームから到着するオブジェクトを追跡できますが、そこに存在するオブジェクトの数はわかりません。 1で満たされたビットベクトルは(ハッシュの数と衝突の確率に応じて)同じアドレスでハッシュされているオブジェクトの真の数を隠すことができます。特定のウェブサイトのページを何人の別個のユーザが見たか、または異なる検索エンジンのクエリの数を知りたい場合など、様々な状況において、オブジェクトの異なる数を知ることは有用である。すべての要素を格納し、その中に重複を見つけることは、特にストリームから来る何百万もの要素では機能しません。ストリーム内の別個のオブジェクトの数を知りたければ、依然としてハッシュ関数に頼る必要がありますが、アプローチには数字のスケッチが必要です。

<! - 1 - >

スケッチ

は、近似を取ることを意味します。つまり、不正確ではありませんが、完全に間違った値ではありません。近似値は実際の値がそれほど遠すぎないので許容できます。このスマートなアルゴリズムでは、確率と近似に基づく HyperLogLog は、ストリームから生成された数の特徴を観察します。 HyperLogLogは、コンピュータ科学者ナイジェル・マーティンとフィリップ・フラホレの研究から得られたものです。 Flajoletは、 Flajolet-Martin (またはLogLogアルゴリズム)の初期アルゴリズムを、より強力なHyperLogLogバージョンに改良しました。これは <! - 2 - >

ハッシュは、ストリームから受け取ったすべての要素を数値に変換します。
  1. アルゴリズムは、数値をコンピュータが使用する基本2の数値標準であるバイナリに変換します。
  2. このアルゴリズムは、2進数の最初の0の数と、それが見る最大数のトラックをカウントします。これは
  3. n です。アルゴリズムは、nを使用してストリーム内で受け渡される個別要素の数を推定する。異なる要素の数は2 ^ n
  4. です。 <! - 3 - > たとえば、文字列の最初の要素は
という語です。

アルゴリズムは整数値にハッシュし、結果を01101010としたバイナリに変換します。数字の先頭には1つのゼロしか表示されないため、アルゴリズムはそれを末尾のゼロの最大数として記録します。アルゴリズムは、バイナリ相当語が11101011と01101110である単語 parrot と Wolf を見て、nは変更しません。しかし、単語 cat が合格すると、出力は00101110になるので、nは2になります。別個の要素の数を推定するために、アルゴリズムは2 ^ n、つまり2 ^ 2 = 4を計算します。図はこのプロセスを示しています。 先行ゼロのみを数えます。 アルゴリズムのトリックは、ハッシュが(Bloomフィルタのように)均等に分布したランダムな結果を生成している場合、バイナリ表現を見ることで、一連のゼロが現れる確率を計算することができるということです。 1つの2進数が0になる確率は2の1であるため、0のシーケンスの確率を計算するには、0のシーケンスの長さの1/2倍の確率を掛けます:

50% 00 999で始まる数字に対して0 999 25%(1/2 * 1/2)の確率で始まる数に対して(1/2)確率を計算する。 k零で始まる数の000(9)(1/2)^ k確率で始まる5%(1/2 * 1/2 * 1/2)の確率。同じ番号)

HyperLogLogで見られる数字が少ないほど、不正確さが大きくなります。異なるハッシュ関数を使用してHyperLogLog計算を何度も使用し、各計算からの回答を平均化すると、精度が向上しますが、ハッシュに何度も時間がかかり、ストリームが高速です。代わりに、同じハッシュを使用できますが、ストリームをグループに分割します(たとえば、到着順序に基づいて到着するように要素をグループに分けるなど)。グループごとに、末尾のゼロの最大数を追跡します。最後に、各グループの個別要素の見積もりを計算し、すべての見積もりの​​算術平均を計算します。このアプローチは確率的な平均化であり、アルゴリズムをストリーム全体に適用するよりも正確な推定値を提供します。

データストリームの要素数を見つける方法 - ダミー

エディタの選択

自転車の点検チェックリスト - ダミー

自転車の点検チェックリスト - ダミー

すぐに自転車の点検をするために数分。あなたの自転車を一時的に与えることは、あなたの次の乗り心地の安全性、快適性、そして楽しさを高めることができます。乗車準備の一環として、次の手順に従ってください:車輪のクイックリリースレバーを開閉して、確認します。

必須サイクリング用具 - ダミー

必須サイクリング用具 - ダミー

あなたはバイクの乗り心地をさらに楽しくするために何百万ものものを買うことができます。自転車用に必要なアクセサリーをいくつかご紹介します。ヘルメット:ヘルメットを着用することはオーストラリアとニュージーランドの法律です。

自転車の範囲を閲覧可能 - ダミー

自転車の範囲を閲覧可能 - ダミー

あなたはサイクリングをすることに決めましたが、その重要なキットを欠いている - バイク!あなたが望む自転車のタイプを正確に知っていない限り、良いアドバイスは、あなたの時間を費やして、自転車で何をするのか、どこに乗るのかを本当に考えてみることです。

エディタの選択

アプリとプライバシー - ダミーを特定する

アプリとプライバシー - ダミーを特定する

Spotifyアプリケーションに登録すると、あなたの個人的な詳細の一部にアクセスする。たとえば、Top10アプリを使用してプレイリストを公開するには、既存のFacebookアカウントにリンクする必要があります。このプロセス中、Facebookはあなたに特定の種類の共有を許可するかどうか尋ねます。

モバイル対応携帯電話を識別する - ダミー

モバイル対応携帯電話を識別する - ダミー

SpotifyモバイルはiPhoneで最も人気がありますが、優れたAndroidバージョン(basks Androidマーケットの5つ星評価のうち5つの評価では5位に入っています)が急速に追いついています。

特集 - ダミー

特集 - ダミー

スポットメイキングは、モバイルでも、あらゆる音楽への普遍的な即時アクセスを可能にしますデバイスまたはデスクトップコンピュータ。 Facebookは人々が古い友達と再会して新しい友達を作るのを助け、Spotifyの助けを借りて青春の歌を再発見し、友人や検索を通じて新鮮な音楽を発見しました。

エディタの選択

IOSアプリケーションでオブジェクト指向設計を使用する方法 - ダミー

IOSアプリケーションでオブジェクト指向設計を使用する方法 - ダミー

IOSは、動作がオブジェクトに関連付けられているプログラムを設計するさまざまな方法です。説明するために、紅茶とスープの作り方を検討することを検討してください。しかし、即座に代わりに活動に飛び込んではいけません。探偵が犯罪現場に入るように行動してください。

IOSアプリケーションでハイレベル抽象化を使用してビデオを再生する方法 - ダミー

IOSアプリケーションでハイレベル抽象化を使用してビデオを再生する方法 - ダミー

このセクションでは、MPMoviePlayerViewControllerクラスの高レベル抽象化を使用してiOSアプリケーションでビデオを再生する方法を説明します。 - (IBAction)playVideo:(id)sender {MPMoviePlayerViewController * moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL];このコードは、ビデオビューコントローラ内のTTTVideoViewControllerファイルからです。 [self presentMoviePlayerViewControllerAnimated:moviePlayer];}シンプルさ自体!必要なのはURLです。

IOSアプリケーションでJavaスクリプトオブジェクト表記を使用する方法 - ダミー

IOSアプリケーションでJavaスクリプトオブジェクト表記を使用する方法 - ダミー

JavaScript Object Notation (JSON)はiOSアプリのデータを表現する上で事実上の標準になっています。 JSONを使用して、Web上でデータを転送したり、長期保存データを保存および取得するためのフォーマットとして使用することができます。 JSONは、人間が読める形式であり、マシンが理解しやすい形式です。 JSONのデータは1つにまとめることができます...