一般的な MapReduce データマイニングアルゴリズム: 平均と分散

一般的な MapReduce データマイニングアルゴリズム: 平均と分散

平均と分散のマップ削減

一連の数値の平均と分散の式は誰にとっても明らかだと思います。マップ関数とリデュース関数の設計方法については、計算式から始めることができます。n 個の数値、つまり a1、a2....an があるとすると、平均 m=(a1+a2+...an) / n、分散 s= [(a1-m)^2+(a2-m)^2+....+(an-m)^2] / n となります。

分散式を S=[(a1^2+.....an^2)+m^m*n-2*m*(a1+a2+....an) ] / n に展開します。これに基づいて、マップ エンドの入力を (key, a1) に、出力を (1, (n1, sum1, var1)) に設定できます。n1 は各ワーカーによって計算された数値の数を表し、sum1 はこれらの数値の合計 (たとえば、a1+a2+a3...)、var1 はこれらの数値の二乗の合計 (たとえば、a1^2+a2^2+...) です。

この情報を受け取った後、reduce 側は直ちにすべての入力 n1、n2... を加算して n を取得し、sum1、sum2... を加算して sum を取得し、平均 m=sum/n を計算し、var1、var2... を加算して var を取得し、分散 S=(var+m^2*n-2*m*sum)/n を計算し、reduce 出力は (1,(m,S)) になります。

アルゴリズムコードは、mrjob の実装に基づいています (https://pythonhosted.org/mrjob/、機械学習実践の第 15 章)

  1. mrjob.job から MRJob をインポートします
  2. クラス MRmean(MRJob):
  3. def __init__(self, *args, **kwargs):
  4. super(MRmean, self).__init__(*args, **kwargs)
  5. 自己入力カウント= 0  
  6. 自己入力合計= 0  
  7. 自己.inSqSum = 0  
  8. def map(self, key, val): # ちょうど2つの引数が必要
  9. Falseの場合: 譲歩
  10. inVal =浮動小数点数(val)
  11. 自己入力カウント += 1
  12. self.inSum += inVal #各要素の合計
  13. self.inSqSum += inVal*inVal #各要素を2乗する
  14. def map_final(self):
  15. mn =自己.inSum / 自己.inCount
  16. mnSq =自己.inSqSum / 自己.inCount
  17. yield (1, [self.inCount, mn, mnSq]) #出力をマップしますが、ここではmn = sum1 /mn、 mnsq = var1 /mn です。
  18. def Reduce(自己、キー、パックされた値):
  19. cumVal = 0.0 ; cumSumSq = 0.0 ; cumN = 0.0
  20. for valArr in packedValues: #ストリーム入力から値を取得するマップ側の出力を解析する
  21. nj =浮動小数点数(valArr[0])
  22. cumN += nj
  23. cumVal += nj*float(valArr[1])
  24. cumSumSq += nj*float(valArr[2])
  25. 平均= cumVal /cumN
  26. var = (cumSumSq - 2*平均*cumVal + cumN*平均*平均)/cumN
  27. yield (mean, var) #meanとvarの出力を出力します。
  28. defステップ(self):
  29. 戻り値 ([self.mr( mapper = self .map, mapper_final = self .map_final,\
  30. レデューサー= self .reduce,)])
  31. __name__ == '__main__' の場合:
  32. MRmean.run()
オリジナルリンク: http://www.cnblogs.com/kobedeshow/p/3600328.html

<<:  SVM のマップ削減データマイニングアルゴリズム

>>:  トイレに座ってアルゴリズムを見る: クイックソート

ブログ    
ブログ    
ブログ    

推薦する

もう一つの機械学習モデル説明ツール: Shapash

シャパシュとはモデルの解釈可能性と理解可能性は、多くの研究論文やオープンソース プロジェクトの焦点と...

...

...

強化学習はアプリケーションにおける戦略の「最適解」を見つける

現在、AI システムは、さまざまなパターン認識や予測分析タスクを実行するために業界で一般的に使用され...

オピニオン: 人工知能の失敗を考察する7つの方法

がんの検出から就職面接の実施者の決定まで、AI システムは多くのことを人間よりも速く、正確に、確実に...

南洋理工大学華中科技大学などの最新研究:完全自動化された「即脱獄」、大型モデルだけが大型モデルを倒せる! NDSS

今年、ネットユーザーから「おばあちゃんの抜け穴」と揶揄された大規模言語モデルの「脱獄」法が大人気とな...

DeepGlint: 顔認識の最新の進歩と産業グレードの大規模な顔認識の実践に関する議論

[[380229]] 1. 顔認識の背景紹介簡単に言えば、顔認識の問題は、2 つの顔が与えられたとき...

これはオートエンコーダーとRNNの両方である。DeepMindの科学者は拡散モデルを8つの観点から分析する。

最も人気のある AI ペイント ツールの 1 つである Stable Diffusion を試したこ...

顔認識は道徳的および倫理的な懸念を引き起こします。あなたの顔は監視されていますか?

顔認識システムは私たちの都市に多くの利便性をもたらしました。しかし、多くの国では顔認識に対する抵抗が...

人工知能におけるコンピュータビジョンとは

人工知能(AI)には、「学習意欲を持つインテリジェントエージェント」の開発が伴います。さまざまなアク...

ChatGPTはついにウェブを検索できるようになり、コンテンツは2021年9月以前のものに限定されなくなりました

米国時間9月28日水曜日、人工知能研究企業OpenAIは、同社のチャットボットChatGPTがMic...

AI はどのようにして人間の会話の内容を認識するのでしょうか?マイクロソフト研究チームがお伝えします

[[280027]]この記事はLeiphone.comから転載したものです。転載する場合は、Leip...

速度は数十倍に向上。たった1枚の写真と1つの文章だけで、Googleの新しいモデルは20秒で顔を変えることができる。

以前、Googleとボストン大学の研究者は、DreamBoothと呼ばれる「パーソナライズされた」テ...

AIがバリアフリー時代へ:手話認識・翻訳の応用が意味するものとは?

人々の印象では、AIは「多数派」に属する技術カテゴリーであると私は信じています。いわゆる多数とは、第...

グラフィカルな説明 | RSAアルゴリズムとは

[[339878]]この記事はWeChatパブリックアカウント「Backend Technology...