この記事では、ビッグデータ アルゴリズムを理解するプロセスをまとめます。本文は、アルゴリズムに関する私自身の認知プロセスとビッグデータ アルゴリズムに関する私の理解という 2 つの部分から構成されています。 このブログを書く理由はたくさんありますが、一般的には次のようになります。
アルゴリズムというと、誰もが古典的なアルゴリズムと機械アルゴリズムしか思い浮かびません。さらに、興味深いアルゴリズム、特に大量のデータ問題を解決するためのアルゴリズムがたくさんあります。これらは見落とされがちですが、これらはビッグデータアルゴリズムと見なされていると思います。
0x01 認知プロセス 1. アルゴリズムは役に立たない 入社当初は、ビッグデータエンジニアはHadoopをインストールしてMRプログラムを書いて、クラスターを運用・保守するだけでいいと思っていました。アルゴリズムがとても重要なのですが、業務の中では何も感じませんでした。 長い間、私はアルゴリズムは面接で人を区別するのに役立つ単なる知識であると信じていました。 (考えてみると、この見方は間違っていません。ほとんどの開発作業では、自分で書いたアルゴリズムは必要ありません。) 2. 古典的なアルゴリズムの魅力 しばらくビッグデータ運用に携わった後、スケジューリングシステムを最適化するというタスクを受け取りました。経験豊富なGimと協力して、スケジューリングシステムを再構築する計画を設計しました。その過程で、グラフ理論に関する多くの知識ポイントを復習しました。それ以来、アルゴリズムに非常に興味を持ち、止められなくなりました。その後、ツリー関連のコンテンツを再学習し、2-3ツリー、AVLツリー、赤黒ツリーなどのデータ構造を自分で実装しました。 実際、私が興味を持った主な理由の 1 つは、これらのものが基本的にコンピュータ システム全体を構築しているという発見です。たとえば、ファイルシステムやデータベースのインデックスなどです。これらを学べば、将来仕事を失うことはないと感じます。 3. 機械学習がすべて その後、機械学習が一気に普及し、世の中に残ったアルゴリズムは機械学習アルゴリズムと非機械学習アルゴリズムの2種類だけになりました。私の周りのデータ開発関係の友人や同級生は皆、機械学習に転向したいと言っています。筆者も例外ではなく、このトレンドに追随する準備を始めている。しかし、私には使い道がなく、あまり興味もありませんでした。ある日、機械学習の勉強に疲れたら、息抜きにLinuxをいじりたい、とふと思いつきました。そこで、機械学習への転向を一旦諦めました。将来的には、おそらくかなり広範囲にそれを使用するつもりですが、今のところは全面的に頼るつもりはありません。 機械学習に続いて、2017 年にはディープラーニングの波が到来しました。 4. ディープラーニングは新たな波 私が最も感動したのは、2017 年 5 月に人工知能プラットフォーム アーキテクトの募集要項を見たことです。具体的な要件は、データ プラットフォームの要件に加えて、ディープラーニング プラットフォームの要件がいくつかありました。 このとき、波が来たときに、その波に背を向けるのではなく、受け入れるという選択をすることができると感じるでしょう。そこで、深く多くのことを学び、基本的な理解を得て、今後何をする必要があるのかを大まかに知ることができました。 (半年後には、ほとんどすべて忘れてしまいました) 5. 興味深いアルゴリズムがたくさんある 作業が進むにつれて、システムは多くのパフォーマンスボトルネックに遭遇しました。機密情報の暗号化、クラスター ファイルの圧縮、負荷分散戦略の選択など、一連の調整を行って対処する必要がありました。このとき、暗号化アルゴリズム、圧縮アルゴリズム、負荷分散アルゴリズムの原理を詳細に研究する必要がありました。 これらのアルゴリズムはこれまでも存在していましたが、今日のビッグデータ シナリオでも依然として大きな役割を果たすことができます。 6. 分散アルゴリズム これまで、私は自分が行っている仕事に少し罪悪感を感じていました。MR の作成とクラスターの管理以外には、技術的な内容が深いものは何もないように感じていました。私が誇れるのは、各システムのアーキテクチャとそれらに対する私の知識だけでした。 その後、偶然 Mooc でクラウド コンピューティングの原理に関するコースを発見し、この分野に非常に興味を持つようになりました。 学んでいくうちに、この分野は非常に複雑であることがわかりました。私たちは、多くのコンテンツを含むこれらの分散アルゴリズムと呼んでいます。
まだ勉強を始めたばかりなので、詳しい学習計画は後ほど立てる予定です。 7. ビッグデータ アルゴリズムとは具体的に何ですか? 私は仕事や勉強の中で非常に多くのアルゴリズムに遭遇してきましたが、しばらく考えた後、ビッグデータのアルゴリズムはどのようなものか疑問に思いました。 古典的なアルゴリズムは別として、圧縮アルゴリズムと暗号化アルゴリズムは常に存在してきました。 では、機械学習はどうでしょうか。私はいつも何かがおかしいと感じています。機械学習はビッグデータを使用しますが、ビッグデータでさまざまな問題を解決することを目的としているわけではありません。実際のビッグデータの問題を解決するには、依然としてビッグデータアルゴリズムが必要です。 分散アルゴリズムは、完全に分散アルゴリズムとして考えられているわけではありません。ビッグデータ エンジニアは皆、分散システムを使用していますが、解決する問題のシナリオは多少異なります。分散アルゴリズムでは、クロックや一貫性などの問題を解決する必要があります。ビッグデータ シナリオのアルゴリズムは多少異なります。 それでは、ビッグデータのシナリオにおける問題点は何かを考える必要があります。 ビッグデータシナリオの問題点 最も顕著な特徴はデータ量が多いことであり、このデータの処理が大きな問題になるという問題をもたらします。 Hadoop は画期的なプロジェクトであり、それを超えて解決すべきシナリオがいくつかあります。 ユニーク ビジター (UV) 統計などのコレクション内の個別要素の数は、SQL では count(distinct user_id) として記述されます。ここに 1,000 億のデータ ポイントがあると仮定すると、それらを非常に高速に計算する必要があり、多少の不正確さは許容されます。どうすればよいでしょうか。 つまり、多くのシナリオでは、ある程度の精度を犠牲にして結果を素早く計算することになります。これらのアルゴリズムには幅広い応用シナリオがあります。たとえば、Redis は Hyperloglog を使用してカーディナリティ統計を実行します。 このアルゴリズムのグループは、ビッグデータ アルゴリズムの一部であると思います。コンテンツは豊富で、Bitmap、Roaring Bitmap、Hyperloglog など、特にこのことについて語る特別なブログもあります。 0x02 アルゴリズムスキルの概要 ここで簡単にまとめ、ビッグデータ エンジニアが習得し、精通し、理解する必要があると思われるアルゴリズムをいくつか示します。実際、それらの多くは仕事で頻繁に遭遇します。 学習の優先順位は? これらのアルゴリズムを学ぶ優先順位をどのように決めるべきでしょうか? この点については冷静に考えるつもりはありません。私自身もかなり混乱しています。どれがより重要かは一概には言えません。しかし、本当に学びたいのであれば、参考資料はいくつかあります。 基本的なデータ構造とアルゴリズムについては、特に説明する必要がありません。これらは、習得すべき基本的なスキルです。 暗号化、圧縮、スケジューリングなどの他のアルゴリズムについては、詳細に学習する必要がなければ、急いで学習する必要はありません。使用するときに理解するだけで十分です。 エンジニアリング志向の学生は、分散アルゴリズムとビッグデータアルゴリズムをできるだけ早く学ぶことをお勧めします。仕事でプログラムを書くときに使用しなくても問題ありません。早めに学んでおいても害はありません。これらのアルゴリズムは、多くのビッグデータ コンポーネントの中核をなしています。 データマイニング関連のアルゴリズムは、データマイニングに従事する人にとっては絶対に学ぶべきものです。データ開発からデータマイニングに転向する人は、明確なキャリアチェンジの計画があれば、深く学び始めることができます。様子見の状態であれば、まずは自分の仕事に関連性の高いアルゴリズムをいくつか触ってみて、プロジェクトの機会があればすぐに始めることができます。 0XFF 要約 プログラムを書くときにアルゴリズムを書く必要はまったくないのではないかと思うこともありますが、アルゴリズム的思考が私に大きな利益をもたらすことは認めざるを得ません。 |
<<: テックネオテクノロジーサロン - 第17号 - クラウド時代のネットワーク境界管理の実践
>>: 金融を専攻する学生は人工知能をどのように学ぶべきでしょうか?
[[269826]] 「設計アーキテクチャだけを見れば、国産の人工知能チップは外国製のものより劣って...
[[330500]] 【51CTO.com クイック翻訳】ディープラーニング モデルのトレーニング...
多くのメディア記事では、「機械学習がXX業界に力を与える」という言葉を目にしますが、この「エネルギー...
人工知能業界の主要上場企業:現在、国内の人工知能業界の上場企業は主に百度(BAIDU)、テンセント(...
[[399013]]人間と魚の写真で訓練された AI は、初めて人魚の写真を見たときにどのように反応...
この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...
研究によると、人工知能は強力に聞こえますが、現在の高度な人工知能は、人間の 4 歳児が簡単に解決でき...
みなさんこんにちは、私はZhibinです〜今日は、GridSearch グリッド検索と K 分割相互...
ニューラル ネットワークの理解: ディープラーニングは長い間、解釈可能性が低いと考えられてきました。...
厳選記事 | 呉嘉楽翻訳 | 黄年校正 | フェン・チェン、ヤオ・ジアリンマイク・ボストック出典 |...
[[441326]]リンクリストの交差LeetCode の問題へのリンク: https://leet...
ピエロの写真を入力するだけです。このプログラムは、油絵の肖像画を一筆一筆描いていく画家のようなもので...
オープンソース AI アルゴリズム 新しいスーパーピクセル サンプリング、ネットワーク ディープ フ...