1. ロジスティック回帰 ロジスティック回帰。まず線形回帰から始めます。線形回帰の出力は実用的な意味を持つ連続値です。しかし、線形回帰では分類問題を正確かつ確実に分割することはできません。そこで、サンプルが特定のカテゴリに属する確率を出力で表すロジスティック回帰というアルゴリズムを設計しました。ロジスティック回帰の成功は、非常に大きくなる可能性があるθTXの元の出力範囲をシグモイド関数を通じて(0,1)にマッピングし、それによって確率推定を完了することにあります。シグモイド関数のイメージを以下に示します。 2次元空間でのロジスティック回帰の直感的な理解は、シグモイド関数の特性であり、これにより、判定閾値を平面上の判定境界にマッピングできます。もちろん、特徴が複雑になるにつれて、判定境界はさまざまな外観を持つ可能性がありますが、2種類のサンプルポイントをより適切に分離し、分類問題を解決できます。ロジスティック回帰パラメータを解く従来の方法は、勾配降下法です。コスト関数を凸関数として構築した後、偏微分方向(最も速く降下する方向)に沿って毎回小さなステップを踏み、N 回の反復後に最低点に到達します。 Scikit-Learn を使用してデータに対してロジスティック回帰分析を実行しました。 まず、特徴スクリーニングが行われます。特徴スクリーニングには多くの方法があり、主にScikit_Learnのfeature_selectionライブラリに含まれています。より簡単な方法は、F検定(f_regression)を使用して各特徴のF値とp値を与え、変数をスクリーニング(F値が大きい特徴またはp値が小さい特徴を選択)することです。次に、再帰的特徴除去(RFE)や安定性選択などの新しい方法があります。その後、選択した特徴を使用してロジスティック回帰モデルを構築できます。 再帰的特徴除去の主な考え方は、モデル(SVM や回帰モデルなど)を繰り返し構築し、最良(または最悪)の特徴(係数に基づいて選択可能)を選択し、選択した特徴を脇に置いて、残りの特徴に対してこのプロセスを繰り返すことで、すべての特徴を走査することです。 このプロセスで機能が削除される順序が機能ランキングです。 したがって、これは最適な特徴サブセットを見つけるための貪欲アルゴリズムです。 Scikit-Learn は、特徴の除去に使用できる RFE パッケージと、クロス検証を通じて特徴をランク付けするために使用できる RFECV を提供します。 コード経験
2. 決定木 決定木: ツリー構造です (バイナリ ツリーまたは非バイナリ ツリーになります)。各非リーフ ノードは機能属性のテストを表し、各ブランチは特定の値の範囲内のこの機能属性の出力を表し、各リーフ ノードはカテゴリを格納します。決定木を使用して決定を行うプロセスは、ルート ノードから開始し、分類する項目内の対応する特徴属性をテストし、その値に応じて出力ブランチを選択してリーフ ノードに到達し、リーフ ノードに格納されているカテゴリを決定結果として使用することです。 決定木の構築: 属性選択基準を使用して、タプルを異なるクラスに分割するのに最適な属性を選択します。いわゆる決定木構築とは、各特徴属性間の位相構造を決定するために属性選択測定を実行することです。意思決定ツリーを構築する際の重要なステップは、属性を分割することです。いわゆる分割属性は、特定の特性属性の異なる区分に従って、特定のノードで異なるブランチを構築することです。その目的は、各分割サブセットを可能な限り「純粋」にすることです。可能な限り「純粋」であるということは、分割されたサブセットに分類される項目が同じカテゴリに属するようにすることを意味します。属性を分割するケースは 3 つあります。
決定木を構築する上で重要なことは、属性選択測定を実行することです。属性選択測定は選択分割基準です。これは、特定のクラス ラベル付きトレーニング セット D のデータを個々のクラスに「最適」に分割するヒューリスティックな方法です。これにより、トポロジ構造と分割ポイント split_point の選択が決定されます。 属性選択メトリック アルゴリズムは多数ありますが、一般的にはトップダウンの再帰分割統治法とバックトラックなしの貪欲戦略が使用されます。 コード経験
3. ニューラルネットワーク 人工ニューラルネットワーク (ANN) 人工ニューラル ネットワーク (ANN) は、1980 年代から人工知能の分野で研究のホットスポットとなっています。人間の脳の神経ネットワークを情報処理の観点から抽象化し、シンプルなモデルを構築し、異なる接続方法に応じて異なるネットワークを形成します。工学や学術の世界では、単にニューラル ネットワークまたは準ニューラル ネットワークと呼ばれることがよくあります。ニューラル ネットワークは、多数の相互接続されたノード (またはニューロン) で構成される計算モデルです。各ノードは、活性化関数と呼ばれる特定の出力関数を表します。各 2 つのノード間の接続は、接続を通過する信号の重み値 (重みと呼ばれます) を表します。これは、人工ニューラル ネットワークのメモリに相当します。ネットワークの出力は、ネットワークの接続方法、重み値、活性化関数によって異なります。ネットワーク自体は、通常、自然界の何らかのアルゴリズムまたは関数の近似値ですが、論理的な戦略の表現である場合もあります。 Keras の紹介 Keras: Python ベースのディープラーニング ライブラリ Keras は高レベルのニューラル ネットワーク API です。Keras は純粋な Python で記述されており、Tensorflow、Theano、CNTK バックエンドに基づいています。 Keras は迅速な実験をサポートするために誕生し、アイデアを素早く結果に変換できます。 共通モジュールの紹介: 1. オプティマイザー パッケージ: keras.optimizers: これは、SGD、Adagrad、Adadelta、RMSprop、Adam などの最適化方法を選択するために使用されます。 2.目的 パッケージ: keras.objectives このモジュールは主にニューラルネットワークに損失関数、つまりターゲット関数を追加する役割を担っています。 これは、最適化に使用されるエラーの形式を定義します。 mean_squared_error/mse: 平均二乗誤差 平均絶対誤差 / mae: 絶対誤差 mean_absolute_percentage_error / mape: 平均絶対パーセンテージ差 平均二乗対数誤差 / msle: 対数誤差 スクエアヒンジ ヒンジ binary_crossentropy: logloss とも呼ばれます。 categorical_crossentropy: この目的関数を使用するには、ラベルをバイナリ配列の形式で設定する必要があります。 3.モデル パッケージ: keras.models これはKerasのメインモジュールであり、さまざまなコンポーネントを組み立てるために使用されます。 keras.modelからSequentialをインポート model = keras.models.Sequential() はニューラルネットワークを初期化します model.add(......)#アセンブリのメソッドを追加 4.レイヤー パッケージ: keras.layers このモジュールは主に、コア層、畳み込み層など、さまざまなタイプを含むニューラル ネットワーク層を生成するために使用されます。 keras.layersからDenseをインポート model.add(Dense(input_dim=3,output_dim=5)#隠し層を追加 5. 初期化 パッケージ: keras.initializations このモジュールは主にモデル パラメータ (重み) を初期化する役割を担います。初期化方法には、uniform、lecun_uniform、normal、orthogonal、zero、glorot_normal、he_normal などがあります。 model.add(Dense(input_dim=3,output_dim=5,init='uniform')) #初期化(uniform)で隠し層を追加 6.アクティベーション パッケージ: keras.activations、keras.layers.advanced_activations (新しい活性化関数) このモジュールは主に、線形、シグモイド、ハードシグモイド、tanh、ソフトプラス、relu、ソフトプラス、LeakyReLUなどの活性化関数やその他の新しい活性化関数をニューラル層に追加する役割を担っています。 Keras のシーケンシャル モデル Keras のコアデータ構造は「モデル」であり、これはネットワーク層を整理する方法です。 Keras の主なモデルは、一連のネットワーク層が順番に並んだスタックである Sequential モデルです。より複雑なモデルの構築方法を学ぶには、機能モデルもご覧ください。 シーケンシャルモデルは次のとおりです。
.add() を介していくつかのネットワーク レイヤーを積み重ねると、モデルが形成されます。
モデルの構築が完了したら、.compile() メソッドを使用してモデルをコンパイルする必要があります。
モデルをコンパイルする際には、損失関数とオプティマイザーを指定する必要があります。必要に応じて、損失関数を自分でカスタマイズすることもできます。 Keras のコアコンセプトは、シンプルで使いやすく、ユーザーが Keras を完全に制御できるようにすることです。ユーザーは独自のモデルやネットワーク レイヤーをカスタマイズしたり、必要に応じてソース コードを変更したりすることもできます。
モデルがコンパイルされた後、トレーニング データに対してバッチで一定数の反復処理を実行してネットワークをトレーニングします。
もちろん、トレーニングのために手動でデータのバッチをネットワークに送信することもできます。この場合、model.train_on_batch(x_batch, y_batch)を使用する必要があります。 次に、1 行のコードを使用してモデルを評価し、モデルのインジケーターが要件を満たしているかどうかを確認します。
あるいは、モデルを使用して新しいデータに関する予測を行うこともできます。
質問応答システム、画像分類モデル、ニューラルチューリングマシン、または word2vec 単語埋め込みをそれほど速く構築できます。ディープラーニングの基本的な考え方はシンプルです。私たちもシンプルにしましょう。 コード経験
図からわかるように、テスト サンプルは 34 個、正しい予測は 26 個、予測精度は 76.4% です。予測精度が低いのは、ニューラル ネットワークのトレーニングに必要なサンプル数が多いためであり、ここではトレーニング データが少ないことが原因です。 ここでのケースは比較的単純であり、過剰適合の問題は考慮されていないことに注意する必要があります。実際、ニューラル ネットワークの適合能力は非常に強力であり、過剰適合が発生しやすくなります。 「ペナルティ項」を追加する従来の方法とは異なり、ニューラル ネットワーク (特にディープ ニューラル ネットワーク) のオーバーフィッティングを防ぐ一般的な方法は、一部のニューラル ネットワーク ノードをランダムにスリープ状態にすること、つまりドロップアウトすることです。ドロップアウトについては、http://mp.weixin.qq.com/s/OB3xBKWHH1lAo-yBdlJVFg の記事を参照してください。 参考文献: 1. http://blog.csdn.net/han_xiaoyang/article/details/49123419 2. https://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html 3. Pythonによるデータ分析とマイニングの実践 4. http://www.coin163.com/it/x7874130266141340969 5. http://keras-cn.readthedocs.io/en/latest/ |
>>: 2030年までに、人工知能のせいで世界中で8億人が失業するでしょう!ビル・ゲイツの失業者へのアドバイス
大規模言語モデル (LLM) とビジュアル グラウンデッド モデル (VFM) の出現により、大規模...
[[348520]]建設現場は、人々とピースが適切なタイミングで組み合わさる必要がある巨大なパズルの...
動物を愛し、動物保護に尽力する世界中の人々にとって、今日は特別な日、「世界動物の日」です。毎年10月...
ニューラル ネットワークが優れた画家であることは周知の事実です。スケッチを風景画に変えたり、異なるス...
2019年WeChatオープンクラスPROで、WeChat AIチームが開発したインテリジェント対話...
オンライン学習によって引き起こされる壊滅的な忘却問題を解決するために、北京大学などの研究機関は、勾配...
テスラのロボットに関しては、まず主要なタイムラインを確認しましょう。実際、テスラのロボットの構想は1...
人工知能 (AI)、機械学習 (ML)、ディープニューラルネットワーク (DNN) は、金融業界のビ...
すべてのテクノロジーが期待通りの成果を上げたり、当初の約束を果たしたりするわけではありません。技術進...
51CTOウェブサイトコンテンツ調査に参加するにはクリックしてくださいマット・アセイ編纂者:Qia...
少し前に、「ピーター」と「トニー」という名前の二人の英語教師が人々の注目を集めました。彼らはあらゆる...