一般的な 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 のマップ削減データマイニングアルゴリズム

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

ブログ    
ブログ    

推薦する

マイクロソフト中国CTO: AIを祭壇から外してください

[[257901]]まとめ明らかに、中国における人工知能に関する誇大宣伝は、当初の意図から逸脱してい...

...

...

GoogleはDeepMind AIを使用して何千もの新しい素材を分析および予測しました

IT Homeは11月30日、GoogleのDeepMindが人工知能(AI)を使って200万以上の...

人工知能の時代に人権と民主主義をどう守るか

人工知能 (AI) システムは近年急速に普及しており、特に 2023 年には大規模言語モデル (LL...

...

...

Horizo​​nの最新作! Sparse4D v3: エンドツーエンドの 3D 検出および追跡タスクのさらなる改善 (SOTA が 2 倍!)

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

新たな方向性! DeepMindは知的生物の出現を促進する人工生命フレームワークを提案

最近、DeepMind の研究者たちは、知的生物の出現を促進するように設計された人工生命フレームワー...

ブラックテクノロジー界の「魏英洛」は人の表情を読むのが得意

[51CTO.comよりオリジナル記事] 今ではAIでも人の表情を読んだり、心を理解したり、感情を分...

TSN タイムセンシティブネットワークテクノロジーの簡単な分析

産業インテリジェンスの継続的な発展に伴い、産業インターネットは産業インテリジェンス発展のための重要な...

ビットコインマイニング技術: 分散データストレージ、ピアツーピア伝送、コンセンサスメカニズム、暗号化アルゴリズム...

1. 説明ブロックチェーンは、オープンなデータ操作、改ざん不可能、追跡可能性、国境を越えた分散化な...

GPT-4.5がリーク、3Dビデオをサポート、価格は6倍に上昇?ウルトラマンが自ら反応

GPT 4.5 に重大なリークの疑い: 1 つは、新しいモデルには新しいマルチモーダル機能が搭載され...

「CNNの父」ヤン・ルカン氏:人工知能には脳がなく、そのIQは犬ほど高くない

ビッグデータダイジェスト制作ディープラーニングの三大巨頭の一人として知られるヤン・ルカン氏は、常に楽...