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

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

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

推薦する

...

検索アルゴリズムはあなたの指先にあります: GitHubには最大のオープンソースアルゴリズムライブラリがあります

[[433085]]アルゴリズムは本質的に、1 つ以上の入力を受け入れ、内部計算とデータ操作を実行...

NLP における新たなマイルストーン!清華大学ヤオクラスの卒業生がKEARをリリース:人間を超える初の常識質問応答システム

[[443046]]人間はAIよりも常識があるとは言えなくなりました!最近、マイクロソフトの黄雪東と...

2020 年のソフトウェア開発における 6 つの画期的なトレンドは何ですか?

[[313570]] 1. ブロックチェーンブロックチェーンは、間違いなく IT 業界で最も議論さ...

バーチャルシンガー、AIの背後にある見えざる手が音楽の未来を握っているのか?

19 世紀以前、人々が集まるときには、人生の物語を語り、感情や考えを伝えるために、常に最も原始的な...

人気は過ぎ去り、ユーザーの関心は低下しました。データによると、ChatGPTのトラフィックは6月に初めて減少しました。

7月6日、ChatGPTの人気が衰えの兆しを見せていると報じられた。分析会社Similarwebの...

自動運転車のためのモデルベースのエンドツーエンドの深層強化学習戦略

実際の運転シナリオでは、観察と相互作用を通じて、インテリジェント運転車は知識を蓄積し、予測できない状...

あなたのデータは本当に安全ですか?ハッカーが機械学習を使ってデータを盗む7つの方法

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

規制がなければ、AIは金融危機を引き起こす可能性がある

人工知能の影響はビジネス界のほぼすべての側面に広がっており、金融業界も例外ではありません。金融業界の...

AIは追いつこうと努力しているが、5Gはカーブで追い越しつつある。トランプ氏が不安にならないわけがない。

[[263771]] 5Gの進歩に伴い、コスト面でも速度面でも、中国の5Gなしでは5Gを推進するの...

AppleとFacebookはなぜAIとフェイクニュースに関して異なる意見を持っているのでしょうか?

[[236525]]諺にもあるように、「聞いて信じる、見て信じる」です。しかし、AI技術の発展によ...

元アップル社員によって設立されたアルトマンは、同社初のAIハードウェアに投資し、ChatGPTへのアクセスをサポートした。

次に購入する電話はなぜ携帯電話であるべきなのでしょうか?ご覧のとおり、首輪にクリップするこの小さなガ...

...

自己知能ネットワークに向けた大規模モデル技術の応用展望を探る

OpenAIは2022年11月に会話型大規模言語モデルChatGPTをリリースしました。これは、非常...