K-クラスタリングとはどういう意味ですか? K-means クラスタリングは、最も人気があり、広く使用されている教師なし学習モデルです。データをクラスタリングすることで機能するため、クラスタリングとも呼ばれます。教師あり学習モデルとは異なり、教師なしモデルではラベル付きデータは使用されません。 このアルゴリズムはラベルを予測することを目的としたものではありません。データセットをより深く理解し、ラベルを付けることが重要です。
k-means クラスタリングでは、データセットをさまざまなグループにクラスタ化します。 k平均法クラスタリングアルゴリズムの仕組み (1)最初のステップは、いくつかの点をランダムに初期化することです。これらの点はクラスターの重心と呼ばれます。 上の画像では、赤と青の点がクラスターの重心です。 任意の数のクラスター重心を選択できます。ただし、クラスターの重心の数はデータ ポイントの合計数よりも少なくする必要があります。 (2)2番目のステップはクラスター割り当てステップである。このステップでは、各緑色のポイントを反復処理する必要があります。ポイントが赤いポイントに近いか青いポイントに近いかに応じて、どちらか一方に割り当てる必要があります。 つまり、緑の点は、青のクラスターの重心に近いか赤のクラスターの重心に近いかに応じて、赤または青に色付けされます。 (3)次のステップはクラスターの重心を移動することです。ここで、赤いクラスターの重心に割り当てられたすべての赤い点の平均を取り、赤いクラスターの重心をその平均に移動する必要があります。青いクラスターの重心に対しても同じことを行う必要があります。 これで、新しいクラスターの重心ができました。 2 番 (クラスター割り当て手順) に戻る必要があります。ポイントを新しいクラスターの重心に再配置する必要があります。その後3回目を繰り返します。 下の図に示すように、両方のクラスター重心が適切な位置にくるまで、手順 2 と 3 を数回繰り返す必要があります。 ご覧のとおり、すべての緑色の点を、それらに割り当てられたクラスターの重心によって単純に色分けしました。青いクラスターの重心は青いクラスターの中心にあり、赤いクラスターの重心は赤いクラスターの中心にあります。 アルゴリズムを開発していくと、これが少し明確になります。これについてはさらに詳しく議論します。 アルゴリズムの開発 このアルゴリズムに使用するデータセットは、Coursera の Andrew Ng の機械学習コースから取得しました。以下は、k-means アルゴリズムを開発するためのステップバイステップのガイドです。 (1)必要なパッケージとデータセットをインポートする
データセットには 2 つの列しかありません。視覚化しやすいため、2 つの注目データセットを使用しました。視覚的に見るとアルゴリズムが理解しやすくなります。ただし、同じアルゴリズムは多次元キューブにも適用されます。 プロセス中に他の配列も処理するため、DataFrame df1 を Numpy 配列に変換します。
ここで、上で説明した 3 つの手順を実行します。 (2)最初のステップは、重心をランダムに初期化することです。 データセットから 3 つのポイントをランダムに初期化します。まず、0 からデータセットの長さまでの 3 つの数字を選択します。
出力:
これら 3 つの数値をインデックスとして使用し、それらのインデックスのデータ ポイントを取得します。
出力:
これら 3 つの点が初期の重心となります。 2D配列に変換しました。なぜなら、この形式の方が私にとって馴染み深いからです。
出力:
(3)クラスター割り当てステップを実装する。 このステップでは、データセット内のすべてのデータ ポイントを反復処理します。 データポイントはデータの行を表す データの行を見て、このデータがどのようにクラスターに割り当てられるかを見てみましょう。 3 つの重心すべてのデータ距離を計算します。そのデータ ポイントは、最短距離の重心に割り当てられます。 ご覧のとおり、2 点間の距離を多数計算する必要があります。距離を計算する関数を開発しましょう。
各データ ポイントを重心に割り当てる関数を開発します。 「centroids」配列には 3 つの値しかありません。したがって、0、1、2 の 3 つのインデックスがあります。各データ ポイントにこれらのインデックスの 1 つを割り当てます。
この関数は、データ ポイントをクラスターに割り当てます。この関数を使用して、各データ ポイントの重心を計算してみましょう。
部分出力:
総出力は非常に長いです。したがって、ここでは出力の一部を示します。出力の最初の重心は 2 です。これは、重心リストのインデックス 2 に割り当てられることを意味します。 (4)最後のステップは、データポイントの平均値に応じて重心を移動することです。 このステップでは、各重心のすべてのデータ ポイントの平均を取得し、重心をその平均に移動します。 たとえば、インデックス 2 の重心に割り当てられたすべてのポイントの平均を計算し、重心 2 を平均に移動します。インデックス 0 と 1 の重心に対しても同じ操作が実行されます。 これを実行する関数を定義しましょう:
これらはすべて開発する必要がある機能です。 先ほど説明したように、このクラスター割り当てプロセスを繰り返し、重心が適切な位置にくるまで重心を複数回移動する必要があります。 この問題では、このプロセスを 10 回繰り返すことを選択しました。これがどのように機能するかを視覚的に示せるように、各反復の後に重心とデータをプロットし続けます。
5 回の反復後、重心は最適な位置に設定されます。したがって、それ以降は立場を変えることはありません。 次元削減を試す前に、上記のコードをすべて実行して、十分に学習させることをお勧めします。 そうしないと、圧倒されてしまうかもしれません。また、アルゴリズムについては詳しく説明したので、ここでは簡単に説明します。 次元削減 このアルゴリズムの使用例を少なくとも 1 つ説明したいと思います。非常に便利な使用例の 1 つは次元削減です。 画像について考えてみましょう。画像内に異なるピクセルが多すぎる可能性があります。どのようなコンピュータービジョンの問題でも、画像のサイズを縮小できれば、デバイスはそれをはるかに速く読み取ることができるようになります。そうではありませんか? 今開発したアルゴリズムを使用して、画像のサイズを縮小できます。 これを説明するためにカエルの写真を使います: > 著者による画像 この写真をノートブックと同じフォルダにアップロードしました。これをインポートしてみましょう:
出力:
配列の形状を確認します。
出力:
配列全体を 255 で割って、すべての値が 0 から 1 になるようにします。 次に、それを 155*201 x 3 に再形成して 2D 配列にします。なぜなら、2次元配列のすべての関数は以前に開発済みだからです。
上記のように、さまざまなピクセル値が存在します。これを減らして 10 ピクセルの値だけを保持します。 10個のランダムなインデックスを初期化しましょう。
ここで、前の例のように重心を見つけます。
出力:
さて、「im」も配列に変換します。
データは準備完了です。これで、クラスタリング プロセスに進むことができます。しかし今回は視覚化は行いません。データがもはや 2 次元ではないためです。したがって、視覚化は容易ではありません。
これで重心が更新されました。
出力:
これが最後のステップです。これら 10 点のみを保持します。 get_centroids も印刷すると、クラスターの割り当てが表示されます。 ここで、配列 'im' 全体を反復処理し、データを対応するクラスター重心値に変更します。こうすることで、これらの重心値のみが得られます。 元の配列を変更するのではなく、コピーを作成してそこで変更を加えたいと思います。
最初に画像のサイズを変更して 2 次元配列にしたことを覚えています。今度はそれを元の形に戻す必要があります。
ここでは、違いを示すために、元の画像と縮小した画像を並べてプロットしています。
> 著者による画像 ご覧のとおり、画像のサイズが大幅に縮小されました。カエルみたいですね!でもコンピューターの方がずっと速く読み取れますよ! 結論は この記事では、k-means クラスタリングの仕組みと、k-means クラスタリング アルゴリズムをゼロから開発する方法について説明しました。このアルゴリズムを使用して画像サイズを縮小する方法についても説明しました。別の画像を試してください。 この記事で使用したデータセットへのリンクはこちらです。 https://github.com/rashida048/Machine-Learning-With-Python/blob/master/kmean.xlsx コードは次のとおりです: https://github.com/rashida048/Machine-Learning-With-Python/blob/master/k_mean_clustering_final.ipynb |
<<: 初心者にも優しい!楽しくて簡単に始められる AI プロジェクト 10 選 (Python ソース コード付き)
>>: AI列車に乗ってみよう!マーケティングに人工知能を活用する3つの方法
水中の海洋生物を研究する場合、動物たちにとって不自然に見えて怖がらせないような装置を使うと役に立つで...
[[390958]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
人力の60倍の速さで作業する送電線検査画像「認識者」、ベテラン並みの監視ビデオ「品質検査員」、さまざ...
数十または数百の層を持つニューラル ネットワークの応用は、ディープラーニングの重要な機能の 1 つで...
少し前、The Register紙はIBMの内部情報筋が、ワトソン・ヘルス部門が従業員の約50%から...
[[438117]]人工知能は、よりスマートで、より便利で、より安全な方法でお金を投資、アクセス、...
2018 年 5 月 25 日、一般データ保護規則 (GDPR) が欧州連合全域で発効し、組織による...
1月7日の最大のニュースの一つは、Google DeepMindの創設者デミス・ハサビス氏が率いるG...
デジタルインテリジェンスは経営上の意思決定を促進し、驚くべき成果をもたらします名前が示すように、デー...
人工知能(AI)は急速に、そしてシームレスに生活の一部となったため、私たちの多くは、それが社会にどれ...
この論文では、現実世界の意思決定タスクにおける Auto-GPT エージェントの包括的なベンチマーク...
AIが「コーダー」に取って代わるという現実はまだ実現していないが、その逆を行い、コーダーを使ってA...
認知技術は世界最大の課題を解決するために使用されています。この記事では、企業が認知 AI をどのよう...
脳にAIチップを埋め込むことで、てんかん発作をいつでも予測し、制御できるようになります。これは、我が...