ビッグデータとアルゴリズムについて言えば、これらを知っておくことはあなたにとって大きな利益となるでしょう

ビッグデータとアルゴリズムについて言えば、これらを知っておくことはあなたにとって大きな利益となるでしょう

この記事では、ビッグデータ アルゴリズムを理解するプロセスをまとめます。本文は、アルゴリズムに関する私自身の認知プロセスとビッグデータ アルゴリズムに関する私の理解という 2 つの部分から構成されています。

このブログを書く理由はたくさんありますが、一般的には次のようになります。

  • アルゴリズムについては混乱していましたが、少し手がかりが得られたので記録を残しておきます。
  • 考えを明確に整理し、アルゴリズム学習のための 1 ~ 2 年の計画を立てます。これは単なる導入です。

アルゴリズムというと、誰もが古典的なアルゴリズムと機械アルゴリズムしか思い浮かびません。さらに、興味深いアルゴリズム、特に大量のデータ問題を解決するためのアルゴリズムがたくさんあります。これらは見落とされがちですが、これらはビッグデータアルゴリズムと見なされていると思います。

[[209097]]

0x01 認知プロセス

1. アルゴリズムは役に立たない

入社当初は、ビッグデータエンジニアはHadoopをインストールしてMRプログラムを書いて、クラスターを運用・保守するだけでいいと思っていました。アルゴリズムがとても重要なのですが、業務の中では何も感じませんでした。

長い間、私はアルゴリズムは面接で人を区別するのに役立つ単なる知識であると信じていました。 (考えてみると、この見方は間違っていません。ほとんどの開発作業では、自分で書いたアルゴリズムは必要ありません。)

2. 古典的なアルゴリズムの魅力

しばらくビッグデータ運用に携わった後、スケジューリングシステムを最適化するというタスクを受け取りました。経験豊富なGimと協力して、スケジューリングシステムを再構築する計画を設計しました。その過程で、グラフ理論に関する多くの知識ポイントを復習しました。それ以来、アルゴリズムに非常に興味を持ち、止められなくなりました。その後、ツリー関連のコンテンツを再学習し、2-3ツリー、AVLツリー、赤黒ツリーなどのデータ構造を自分で実装しました。

実際、私が興味を持った主な理由の 1 つは、これらのものが基本的にコンピュータ システム全体を構築しているという発見です。たとえば、ファイルシステムやデータベースのインデックスなどです。これらを学べば、将来仕事を失うことはないと感じます。

3. 機械学習がすべて

その後、機械学習が一気に普及し、世の中に残ったアルゴリズムは機械学習アルゴリズムと非機械学習アルゴリズムの2種類だけになりました。私の周りのデータ開発関係の友人や同級生は皆、機械学習に転向したいと言っています。筆者も例外ではなく、このトレンドに追随する準備を始めている。しかし、私には使い道がなく、あまり興味もありませんでした。ある日、機械学習の勉強に疲れたら、息抜きにLinuxをいじりたい、とふと思いつきました。そこで、機械学習への転向を一旦諦めました。将来的には、おそらくかなり広範囲にそれを使用するつもりですが、今のところは全面的に頼るつもりはありません。

機械学習に続いて、2017 年にはディープラーニングの波が到来しました。

4. ディープラーニングは新たな波

私が最も感動したのは、2017 年 5 月に人工知能プラットフォーム アーキテクトの募集要項を見たことです。具体的な要件は、データ プラットフォームの要件に加えて、ディープラーニング プラットフォームの要件がいくつかありました。

このとき、波が来たときに、その波に背を向けるのではなく、受け入れるという選択をすることができると感じるでしょう。そこで、深く多くのことを学び、基本的な理解を得て、今後何をする必要があるのか​​を大まかに知ることができました。 (半年後には、ほとんどすべて忘れてしまいました)

5. 興味深いアルゴリズムがたくさんある

作業が進むにつれて、システムは多くのパフォーマンスボトルネックに遭遇しました。機密情報の暗号化、クラスター ファイルの圧縮、負荷分散戦略の選択など、一連の調整を行って対処する必要がありました。このとき、暗号化アルゴリズム、圧縮アルゴリズム、負荷分散アルゴリズムの原理を詳細に研究する必要がありました。

これらのアルゴリズムはこれまでも存在していましたが、今日のビッグデータ シナリオでも依然として大きな役割を果たすことができます。

6. 分散アルゴリズム

これまで、私は自分が行っている仕事に少し罪悪感を感じていました。MR の作成とクラスターの管理以外には、技術的な内容が深いものは何もないように感じていました。私が誇れるのは、各システムのアーキテクチャとそれらに対する私の知識だけでした。 その後、偶然 Mooc でクラウド コンピューティングの原理に関するコースを発見し、この分野に非常に興味を持つようになりました。

学んでいくうちに、この分野は非常に複雑であることがわかりました。私たちは、多くのコンテンツを含むこれらの分散アルゴリズムと呼んでいます。

  • 2PC や Gossip のようなプロトコルは数多くあり、DHT、Paxo、Raft のようなアルゴリズムや、いくつかの複雑な原則も数多くあります。

まだ勉強を始めたばかりなので、詳しい学習計画は後ほど立てる予定です。

7. ビッグデータ アルゴリズムとは具体的に何ですか?

私は仕事や勉強の中で非常に多くのアルゴリズムに遭遇してきましたが、しばらく考えた後、ビッグデータのアルゴリズムはどのようなものか疑問に思いました。

古典的なアルゴリズムは別として、圧縮アルゴリズムと暗号化アルゴリズムは常に存在してきました。

では、機械学習はどうでしょうか。私はいつも何かがおかしいと感じています。機械学習はビッグデータを使用しますが、ビッグデータでさまざまな問題を解決することを目的としているわけではありません。実際のビッグデータの問題を解決するには、依然としてビッグデータアルゴリズムが必要です。

分散アルゴリズムは、完全に分散アルゴリズムとして考えられているわけではありません。ビッグデータ エンジニアは皆、分散システムを使用していますが、解決する問題のシナリオは多少異なります。分散アルゴリズムでは、クロックや一貫性などの問題を解決する必要があります。ビッグデータ シナリオのアルゴリズムは多少異なります。

それでは、ビッグデータのシナリオにおける問題点は何かを考える必要があります。

ビッグデータシナリオの問題点

最も顕著な特徴はデータ量が多いことであり、このデータの処理が大きな問題になるという問題をもたらします。 Hadoop は画期的なプロジェクトであり、それを超えて解決すべきシナリオがいくつかあります。

ユニーク ビジター (UV) 統計などのコレクション内の個別要素の数は、SQL では count(distinct user_id) として記述されます。ここに 1,000 億のデータ ポイントがあると仮定すると、それらを非常に高速に計算する必要があり、多少の不正確さは許容されます。どうすればよいでしょうか。

つまり、多くのシナリオでは、ある程度の精度を犠牲にして結果を素早く計算することになります。これらのアルゴリズムには幅広い応用シナリオがあります。たとえば、Redis は Hyperloglog を使用してカーディナリティ統計を実行します。

このアルゴリズムのグループは、ビッグデータ アルゴリズムの一部であると思います。コンテンツは豊富で、Bitmap、Roaring Bitmap、Hyperloglog など、特にこのことについて語る特別なブログもあります。

0x02 アルゴリズムスキルの概要

ここで簡単にまとめ、ビッグデータ エンジニアが習得し、精通し、理解する必要があると思われるアルゴリズムをいくつか示します。実際、それらの多くは仕事で頻繁に遭遇します。

学習の優先順位は?

これらのアルゴリズムを学ぶ優先順位をどのように決めるべきでしょうか? この点については冷静に考えるつもりはありません。私自身もかなり混乱しています。どれがより重要かは一概には言えません。しかし、本当に学びたいのであれば、参考資料はいくつかあります。

基本的なデータ構造とアルゴリズムについては、特に説明する必要がありません。これらは、習得すべき基本的なスキルです。

暗号化、圧縮、スケジューリングなどの他のアルゴリズムについては、詳細に学習する必要がなければ、急いで学習する必要はありません。使用するときに理解するだけで十分です。

エンジニアリング志向の学生は、分散アルゴリズムとビッグデータアルゴリズムをできるだけ早く学ぶことをお勧めします。仕事でプログラムを書くときに使用しなくても問題ありません。早めに学んでおいても害はありません。これらのアルゴリズムは、多くのビッグデータ コンポーネントの中核をなしています。

データマイニング関連のアルゴリズムは、データマイニングに従事する人にとっては絶対に学ぶべきものです。データ開発からデータマイニングに転向する人は、明確なキャリアチェンジの計画があれば、深く学び始めることができます。様子見の状態であれば、まずは自分の仕事に関連性の高いアルゴリズムをいくつか触ってみて、プロジェクトの機会があればすぐに始めることができます。

0XFF 要約

プログラムを書くときにアルゴリズムを書く必要はまったくないのではないかと思うこともありますが、アルゴリズム的思考が私に大きな利益をもたらすことは認めざるを得ません。

<<:  テックネオテクノロジーサロ​​ン - 第17号 - クラウド時代のネットワーク境界管理の実践

>>:  金融を専攻する学生は人工知能をどのように学ぶべきでしょうか?

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

推薦する

...

Googleが検索エンジンアルゴリズムを調整:HTTPSサイトのランキングが上昇

[[117728]] Googleは公式ブログで、検索エンジンのアルゴリズムを調整し、HTTPS暗号...

高度な脅威検出における人工知能技術の応用

高度な持続的脅威は、その多様な形態、持続性、対立、隠蔽を特徴とし、現在、大手企業が脅威監視において直...

製造および自動化アプリケーション向けの人工知能技術の選び方

人工知能 (AI) の定義は、産業オートメーションにおける生産と、研究室外の日常生活では大きく異なり...

データ + 進化的アルゴリズム = データ駆動型進化的最適化?進化的アルゴリズムと数学的最適化

データ駆動型進化的最適化とは何ですか? それは単なるデータ + 最適化アルゴリズムですか? データ駆...

...

...

賢くなる方法: 神経科学にヒントを得た人工知能

[[201067]]私はデイビッド・マーが「神経科学のチューリング」のような存在だといつも感じていま...

2021年以降、AIが研究技術を向上させる4つの方法

研究テクノロジーは、現代のビジネス環境に人工知能と機械学習を適用するための優れた方法を提供します。 ...

Fooocus: シンプルで強力な安定した拡散 WebUI

Stable Diffusion は強力な画像生成 AI モデルですが、通常は多くのチューニングと...

...

米国は人工知能戦争への準備を強化している

海外メディアの報道によると、米国は「防衛パートナーシップ計画」を基盤として、人工知能戦争への備えを同...

オープンソース!香港中文大学、MIT、復旦大学が初のRNA基礎モデルを提案

タンパク質分野とは異なり、RNA 分野の研究では十分な注釈付きデータが不足していることがよくあります...