「グーグルの自動運転車やロボットは注目を集めているが、私たちの本当の未来は、コンピューターをより賢く、より人間らしくする技術、つまり機械学習にある。」 — エリック・シュミット(Google CEO) コンピューティングがメインフレームからパーソナル コンピューター、そしてクラウドへと移行するにつれ、私たちは人類史上最も重要な時期を迎えているのかもしれません。これが重要である理由は、私たちがこれまでに達成した成果ではなく、今後数年間に達成する進歩と成果のためです。 私にとって、今日最も興奮しているのは、コンピューティングの春をもたらしたコンピューティング技術とツールの普及です。データ サイエンティストとして、複雑なアルゴリズム計算を実行するデータ処理システムを構築し、1 時間あたり数ドルを稼ぐことができます。しかし、これらのアルゴリズムを習得するには数え切れないほどの日々と夜を要しました。 では、この記事から最も恩恵を受けるのは誰でしょうか? この記事は私がこれまでに書いた記事の中で最も価値のあるものかもしれません。 この記事を書く目的は、データサイエンスと機械学習に興味のある人がアルゴリズムを学習する手間を省くことです。この記事では機械学習の問題の例をいくつか挙げますが、これらの問題をどのように解決するかを考える過程でインスピレーションを得ることもできます。また、さまざまな機械学習アルゴリズムについての私の個人的な理解の一部を書き留め、R と Python での実行コードも提供します。この記事を読んだ後、読者は少なくとも行動を起こし、自分で機械学習プログラムを書いてみることができます。 ただし、この記事ではこれらのアルゴリズムの背後にある統計原理については説明しません。時には、練習から始めるのも良い学習方法です。これらの統計原理を理解したい場合、この記事はあなたには適していない可能性があります。 一般的に言えば、機械学習アルゴリズムには 3 つの種類があります。 1. 教師あり学習 教師あり学習アルゴリズムには、ターゲット変数 (従属変数) と、ターゲット変数を予測するために使用される予測変数 (独立変数) が含まれます。これらの変数を通じてモデルを構築し、予測変数の既知の値に対して、対応するターゲット変数の値を取得できます。モデルは、トレーニング データセットで所定の精度レベルに達するまで繰り返しトレーニングされます。 教師あり学習に属するアルゴリズムには、回帰モデル、決定木、ランダムフォレスト、K 最近傍アルゴリズム、ロジスティック回帰などがあります。 2. 教師なし学習 教師あり学習とは異なり、教師なし学習では、予測または推定する必要のあるターゲット変数はありません。教師なし学習は、一般的にオブジェクトを分類するために使用されます。特定の指標に従って顧客を分類するために広く使用されています。 教師なし学習に属するアルゴリズムには、相関ルール、K 平均法クラスタリング アルゴリズムなどがあります。 3. 強化学習 このアルゴリズムは、特定の決定を下すようにプログラムをトレーニングできます。プログラムは、状況において可能なすべてのアクションを試行し、さまざまなアクションの結果を記録し、決定を下すために最適なアクションを見つけようとします。 このカテゴリに属するアルゴリズムには、マルコフ決定プロセスが含まれます。 一般的な機械学習アルゴリズム 以下は、ほとんどのデータの問題を解決できる、最も一般的に使用される機械学習アルゴリズムです。 1. 線形回帰 2. ロジスティック回帰 3. 決定木 4. サポートベクターマシン (SVM) 5. ナイーブベイズ 6. K近傍法(KNN) 7. K平均法アルゴリズム 8. ランダムフォレスト 9. 次元削減アルゴリズム 10. 勾配ブーストとアダブーストアルゴリズム 1. 線形回帰 線形回帰では、連続変数を使用して現実世界の値(住宅価格、通話数、総売上など)を推定します。線形回帰アルゴリズムを使用して、独立変数と従属変数の間の最適な線形関係を見つけ、最適な直線をグラフィカルに決定できます。この最も直線に近い線が回帰直線です。この回帰関係は、Y=aX+b として表すことができます。 線形回帰を理解するためのシナリオを想像することができます。たとえば、5 年生の子供に、クラスメートの体重を聞かずに、軽いものから重いものの順に並べるように頼みます。この子は何をしますか?彼は選手たちの身長や体格を見て順番を決めたのかもしれない。それは線形回帰です!この子供は、身長と体格が何らかの形で人の体重に関係していると本当に信じています。そして、この関係は前の段落の Y と X の関係に似ています。 式Y=aX+bにおいて: Y - 従属変数 a - 傾斜 X - 独立変数 b切片 a と b は、従属変数の誤差の二乗和を最小化することによって得られます (最小二乗法)。 下の図では、得られた線形回帰方程式は y=0.2811X+13.9 です。この式により、身長に基づいて人の体重情報を得ることができます。 線形回帰には、単変量線形回帰と多変量線形回帰の 2 つの主なタイプがあります。単変量線形回帰には独立変数が 1 つだけありますが、多重線形回帰には複数の独立変数があります。多重線形回帰を当てはめる場合、多項式回帰または曲線回帰を使用できます。 Pythonコード #ライブラリのインポート #pandas、numpy などの他の必要なライブラリをインポートします… fromsklearn importlinear_model #トレーニングデータセットとテストデータセットを読み込む #特徴と応答変数を識別し、値は数値とnumpy配列でなければなりません x_train=入力変数値トレーニングデータセット y_train=ターゲット変数値トレーニングデータセット x_test=入力変数値テストデータセット #線形回帰オブジェクトを作成する 線形 =linear_model.LinearRegression() # トレーニングセットを使用してモデルをトレーニングし、スコアをチェックする 線形フィット(x_train,y_train) 線形スコア(x_train,y_train) #方程式の係数と切片 print('係数: \n',linear.coef_) print('切片: \n',linear.intercept_) #出力を予測する 予測=線形予測(x_test) Rコード #トレーニングデータセットとテストデータセットを読み込む #特徴と応答変数を識別し、値は数値とnumpy配列でなければなりません x_train <-入力変数値トレーニングデータセット y_train <-ターゲット変数値トレーニングデータセット x_test <-入力変数値テストデータセット x <-cbind(x_train,y_train) # トレーニングセットを使用してモデルをトレーニングし、スコアをチェックする 線形 <-lm(y_train ~.,データ =x) 要約(線形) #出力を予測する 予測=予測(線形、x_test) 2. ロジスティック回帰 名前に惑わされないでください。ロジスティック回帰は、実際には回帰アルゴリズムではなく分類アルゴリズムです。これは通常、既知の独立変数を使用して離散従属変数の値を予測するために使用されます (バイナリ値 0/1、はい/いいえ、真/偽など)。簡単に言えば、ロジスティック関数を当てはめてイベントの確率を予測します。したがって、確率値を予測し、当然、その出力値は 0 から 1 の間になります。 ここでも、このアルゴリズムを理解するために例を使うことができます。 あなたの友人があなたに質問に答えるように頼んだとします。起こり得る結果は 2 つだけです。答えが正しかったか、正していなかったかです。自分が最も得意とする分野を勉強するために、さまざまな分野の問題を解きました。したがって、この研究の結果は次のようなものになるかもしれません。10 年生の三角法の問題であれば、解ける可能性は 70% です。しかし、5 年生の歴史の問題であれば、正解できる確率は 30% しかないかもしれません。ロジスティック回帰では、このような確率結果が得られます。 数学に戻ると、イベント結果の対数オッズは、予測変数の線形結合によって説明できます。 オッズ= p/ (1-p) = イベント発生の確率 / イベント発生しない確率 ln(オッズ) = ln(p/(1-p)) ロジット(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3….+bkXk ここで、p は発生することを期待しているイベントの確率です。通常の回帰のように二乗誤差の合計を最小化するのではなく、観測されたサンプル値が発生する確率を最大化する特定のパラメータ値を選別することによってパラメータを推定します。 なぜ対数を取る必要があるのかと疑問に思うかもしれません。つまり、これはステップ関数を繰り返すための最良の方法です。この記事はこれに関するものではないので、この点については詳しく紹介しません。 Pythonコード #ライブラリのインポート fromsklearn.linear_model インポートLogisticRegression #トレーニングデータセットのX(予測子)とY(ターゲット)と、test_datasetのx_test(予測子)があると仮定します # ロジスティック回帰オブジェクトを作成する モデル = ロジスティック回帰() # トレーニングセットを使用してモデルをトレーニングし、スコアをチェックする モデル.fit(X,y) モデル.スコア(X,y) #方程式の係数と切片 print('係数: \n',model.coef_) print('切片: \n',model.intercept_) #出力を予測する 予測=モデル.予測(x_test) Rコード x <-cbind(x_train,y_train) # トレーニングセットを使用してモデルをトレーニングし、スコアをチェックする ロジスティック <-glm(y_train ~.,data =x,family='binomial') 要約(ロジスティック) #出力を予測する 予測=予測(ロジスティック,x_test) 伸ばす: モデルを最適化するために試すことができるアイデアをいくつか紹介します。 インタラクションの追加 特徴変数を減らす 正規化 非線形モデルの使用 3. 決定木 これは私が最も頻繁に使用するお気に入りのアルゴリズムです。これは教師あり学習に属し、分類問題を解決するためによく使用されます。驚くべきことに、これはカテゴリ変数と連続変数の両方で機能します。このアルゴリズムを使用すると、集団を 2 つ以上のグループに分割できます。グループは、母集団を区別できる最も重要な特性変数/独立変数に基づいてグループ化されます。詳細については、こちらの記事「Decision Tree Simplified」をお読みください。 上の図から、全体の人口は最終的に、ゲームをプレイしたかどうかに基づいて 4 つのグループに分けられたことがわかります。グループ化は、いくつかの特性変数に基づいて行われます。グループ化に使用される具体的な指標としては、ジニ係数、情報ゲイン、カイ二乗、エントロピーなどが挙げられます。 決定木がどのように機能するかを理解する最良の方法は、Jezzball ゲームをプレイすることです。これは Microsoft の古典的なゲームです (下の画像を参照)。このゲームの最終的な目的は、動く壁のある部屋の中にいて、壁を建てることでボールを使わずに部屋をできるだけ広いスペースに分割することです。 部屋を仕切るために壁を建てるたびに、実際には全体を 2 つの部分に分割していることになります。決定木も同様の方法を使用して、母集団をできるだけ多くの異なるグループに分割します。 さらに読む: 決定木アルゴリズムの簡易版 Pythonコード #ライブラリのインポート #pandas、numpy などの他の必要なライブラリをインポートします… fromsklearn インポートツリー #トレーニングデータセットのX(予測子)とY(ターゲット)と、test_datasetのx_test(予測子)があると仮定します # ツリーオブジェクトを作成する model =tree.DecisionTreeClassifier(criterion='gini')# 分類の場合、ここでアルゴリズムをジニまたはエントロピー(情報ゲイン)に変更できます。デフォルトではジニです。 # 回帰のための model = tree.DecisionTreeRegressor() # トレーニングセットを使用してモデルをトレーニングし、スコアをチェックする モデル.fit(X,y) モデル.スコア(X,y) #出力を予測する 予測=モデル.予測(x_test) Rコード ライブラリ(rpart) x <-cbind(x_train,y_train) #木を育てる fit <-rpart(y_train ~.,data =x,method="class") 要約(フィット) #出力を予測する 予測 = 予測(適合、x_テスト) 4. サポートベクターマシン (SVM) これは分類アルゴリズムです。このアルゴリズムでは、各データ ポイントを n 次元空間 (n は特徴の数) にプロットし、各固有値は対応する座標値のサイズを表します。人の身長と髪の長さという 2 つの特徴があるとします。これら 2 つの変数を 2 次元空間にプロットできます。グラフ上の各点には 2 つの座標値があります (これらの座標軸はサポート ベクトルとも呼ばれます)。 ここで、グラフ内で異なる点のグループを最大限に分離できる直線を見つける必要があります。両方のデータ セットで線に最も近いポイントは、線から最も遠いポイントになるはずです。 上の図では、黒い線が最適な分割線です。この線は、2 つのグループ (ポイント A とポイント B) の最も近いポイントから最も遠いためです。他の線では、必ずいずれかのポイントがこの距離よりも近くなります。このようにして、データ ポイントが線のどちら側に分布しているかに応じてデータを分類できます。 さらに読む: サポートベクターマシンの簡易版 このアルゴリズムは、n 次元空間での JezzBall ゲームとして考えることができますが、いくつか変更があります。 任意の角度で分割線/平面を描くことができます (クラシック ゲームでは垂直と水平のみ)。 このゲームの目的は、異なる色のボールを異なるスペースに分類することです。 ボールは動かない。 Pythonコード #ライブラリのインポート fromsklearn から svm をインポート #トレーニングデータセットのX(予測子)とY(ターゲット)と、test_datasetのx_test(予測子)があると仮定します # SVM分類オブジェクトを作成する model =svm.svc()# さまざまなオプションが関連付けられており、分類が簡単です。詳細についてはリンクを参照してください。 # トレーニングセットを使用してモデルをトレーニングし、スコアをチェックする モデル.fit(X,y) モデル.スコア(X,y) #出力を予測する 予測=モデル.予測(x_test) Rコード 図書館(e1071) x <-cbind(x_train,y_train) # フィッティングモデル フィット <-svm(y_train ~.,データ =x) 要約(フィット) #出力を予測する 予測 = 予測(適合、x_テスト) 5. ナイーブベイズ このアルゴリズムはベイズ理論に基づいた分類方法です。独立変数は互いに独立していると仮定します。つまり、ナイーブベイズは、ある特徴の存在が他の特徴から独立していると仮定します。たとえば、果物が赤くて丸く、直径が約 7 cm であれば、それはリンゴであると推測できます。これらの特徴の間には関係性がありますが、ナイーブ ベイズ アルゴリズムでは、果物がリンゴである確率を決定する際に、赤み、丸み、直径は互いに独立していると想定します。 ナイーブベイズモデルは構築が簡単で、大量のデータを分析する際に非常に効率的です。このモデルは単純ですが、多くの場合、非常に複雑な分類方法よりもうまく機能します。 ベイズ理論は、事前確率 P(c)、P(x)、条件付き確率 P(x|c) から事後確率 P(c|x) を計算する方法を示しています。アルゴリズムは次のとおりです。 P(c|x)は特徴xが与えられた場合の分類cの事後確率です。 P(c)はカテゴリcの事前確率です。 P(x|c)は、カテゴリcが特徴xを持つ確率です。 P(x)は特徴xの事前確率です。 例:次のトレーニング セットには、天気変数とターゲット変数「外出して遊ぶかどうか」が含まれています。今度は、天候条件に基づいて、人々をプレーする人とプレーしない人の 2 つのグループに分ける必要があります。全体のプロセスは次の手順で実行されます。 ステップ1: 既知のデータに基づいて頻度表を作成する ステップ 2: 各状況の確率を計算し、確率表を作成します。例えば、Overcast の確率は 0.29 で、この時間にプレイする確率は 0.64 です。 ステップ 3: ナイーブ ベイズを使用して、各気象条件下でのプレーと非プレーの事後確率を計算します。確率の高い結果が予測値となります。 質問:天気が晴れると、人々は遊びます。この記述は正しいでしょうか? 上記の方法を使用してこの質問に答えることができます。 P(はい | 晴れ)=P(晴れ | はい) * P(はい) / P(晴れ)。 ここで、P(晴れ | はい) = 3/9 = 0.33、P(晴れ) = 5/14 = 0.36、P(はい)= 9/14 = 0.64です。 すると、P (はい | 晴れ) = 0.33 * 0.64 / 0.36 = 0.60>0.5となり、確率値が大きくなることを意味します。 複数のカテゴリと複数の特徴がある場合でも、予測方法は同様です。ナイーブベイズは、テキスト分類や多クラス分類の問題によく使用されます。 Pythonコード #ライブラリのインポート sklearn.naive_bayes からGaussianNB をインポート #トレーニングデータセットのX(予測子)とY(ターゲット)と、test_datasetのx_test(予測子)があると仮定します # SVM分類オブジェクトを作成 model = GaussianNB() # ベルヌーイ・ナイーブ・ベイズのような多項式クラスには他の分布もあります。リンクを参照してください # トレーニングセットを使用してモデルをトレーニングし、スコアをチェックする モデル.fit(X,y) #出力を予測する 予測=モデル.予測(x_test) Rコード 図書館(e1071) x <-cbind(x_train,y_train) # フィッティングモデル フィット <-naiveBayes(y_train ~.,data =x) 要約(フィット) #出力を予測する 予測 = 予測(適合、x_テスト) 6. KNN(K近傍法) このアルゴリズムは分類問題と回帰問題の両方を解決できますが、業界では分類によく使用されます。 KNN は、まずすべての既知のデータを記録し、次に距離関数を使用して、既知のデータ内で未知のイベントに最も近い K 個のデータ グループを見つけ、最後にこれらの K 個のデータ グループ内で最も一般的なカテゴリに基づいてイベントを予測します。 距離関数には、ユークリッド距離、マンハッタン距離、ミンコフスキー距離、ハミング距離などがあります。最初の 3 つは連続変数に使用され、ハミング距離はカテゴリ変数に使用されます。 K=1 の場合、問題は最新のデータに基づく分類に簡略化されます。 KNN モデリングでは、K 値の選択が鍵となることがよくあります。 KNNは生活の中で広く使われています。たとえば、知らない人について知りたい場合は、その人の親しい友人や仲間から情報を得るかもしれません。 KNN を使用する前に、次の点を考慮する必要があります。 KNNは計算コストが高い すべての特徴は大きさが正規化される必要があります。そうしないと、大きさの大きい特徴の計算距離に偏りが生じます。 KNN を実行する前に、外れ値やノイズなどを除去するなど、データを前処理します。 Pythonコード #ライブラリのインポート fromsklearn.neighbors インポートKNeighborsClassifier #トレーニングデータセットのX(予測子)とY(ターゲット)と、test_datasetのx_test(予測子)があると仮定します # KNeighbors分類オブジェクトモデルを作成する KNeighborsClassifier(n_neighbors=6)# n_neighbors のデフォルト値は 5 です # トレーニングセットを使用してモデルをトレーニングし、スコアをチェックする モデル.fit(X,y) #出力を予測する 予測=モデル.予測(x_test) Rコード ライブラリ(knn) x <-cbind(x_train,y_train) # フィッティングモデル フィット <-knn(y_train ~.,データ =x,k=5) 要約(フィット) #出力を予測する 予測 = 予測(適合、x_テスト) 7. K平均法 これはクラスタリング問題のための教師なし学習アルゴリズムです。この方法では、特定の数のクラスター (K 個のクラスターを想定) を使用して、指定されたデータを分類するだけです。同じクラスター内のデータ ポイントは同じタイプであり、異なるクラスター内のデータ ポイントは異なるタイプです。 インクの染みから形を拾い出す方法を覚えていますか? K-means アルゴリズムのプロセスも同様で、クラスターの形状と分布を観察してクラスターの数を判断する必要があります。 K-means アルゴリズムはクラスターをどのように分割しますか? 各クラスターから K 個のデータ ポイントを重心として選択します。 各データ ポイントとそれに最も近い重心は同じクラスターに分割され、つまり K 個の新しいクラスターが生成されます。 新しいクラスターの重心を見つけて、新しい重心を取得します。 結果が収束するまで、つまり新しい重心が現れなくなるまで、2 と 3 を繰り返します。 Kの値を決定する方法: 各クラスター内のすべてのポイントから重心までの距離の二乗の合計を計算し、異なるクラスターからの距離の二乗の合計を合計すると、このクラスタリング ソリューションの総二乗の合計が得られます。 クラスターの数が増えると、総二乗和が減少することが分かっています。しかし、総二乗和を K に対してプロットすると、ある K 値より前では総二乗和が急速に減少しますが、この K 値を超えると減少幅が大幅に小さくなることがわかります。この値はクラスターの最適な数です。 Pythonコード #ライブラリのインポート fromsklearn.cluster からKMeansをインポート #トレーニングデータセットのX(属性)とtest_datasetのx_test(属性)があると仮定します # KNeighbors分類オブジェクトモデルを作成する k_means =KMeans(n_clusters=3,random_state=0) # トレーニングセットを使用してモデルをトレーニングし、スコアをチェックする モデル.フィット(X) #出力を予測する 予測=モデル.予測(x_test) Rコード ライブラリ(クラスター) fit <-kmeans(X,3)# 5 クラスター解 8. ランダムフォレスト ランダム フォレストは、決定木の集合体を表すおしゃれな名前です。ランダム フォレストには複数の決定木があります (そのため「フォレスト」と呼ばれます)。新しい観察結果を分類するために、各決定木はその特徴に基づいて分類を行います。ランダム フォレスト アルゴリズムは、最も多くの投票を得た分類を分類結果として選択します。 決定木を生成する方法: トレーニング セットに N 個のカテゴリがある場合、N 個のサンプルがランダムに繰り返し選択されます。これらのサンプルは、決定木を成長させるためのトレーニング セットを形成します。 M 個の特徴変数がある場合は、m << M の数を選択します。これにより、各ノードで m 個の特徴変数がランダムに選択され、ノードが分割されます。 m は森林形成全体にわたって一定のままです。 各決定木は、剪定なしで可能な限り最大限に分割されます。 決定木を比較し、モデルパラメータを調整することで、アルゴリズムの詳細を知ることができます。読者には以下の記事を読むことをお勧めします。 ランダムフォレスト入門 – 簡略版 CART モデルとランダム フォレストの比較 (パート 1) ランダムフォレストと CART モデルの比較 (パート 2) ランダムフォレストモデルのパラメータを調整する Pythonコード #ライブラリのインポート fromsklearn.ensemble からインポート RandomForestClassifier #トレーニングデータセットのX(予測子)とY(ターゲット)と、test_datasetのx_test(予測子)があると仮定します # ランダムフォレストオブジェクトを作成する モデル=ランダムフォレスト分類器() # トレーニングセットを使用してモデルをトレーニングし、スコアをチェックする モデル.fit(X,y) #出力を予測する 予測=モデル.予測(x_test) Rコード ライブラリ(ランダムフォレスト) x <-cbind(x_train,y_train) # フィッティングモデル 適合 <-randomForest(種~.,x,ntree=500) 要約(フィット) #出力を予測する 予測 = 予測(適合、x_テスト) 9. 次元削減アルゴリズム 過去 4 ~ 5 年で、利用可能なデータの量はほぼ指数関数的に増加しました。企業/政府機関/研究機関は、より多くのデータソースを持つだけでなく、より多くの次元でデータ情報を取得します。 たとえば、電子商取引会社は、個人情報、ウェブ閲覧履歴、個人的な好き嫌い、購入記録、フィードバック情報など、顧客に関するより詳細な情報を保有しています。彼らはあなたのプライベートな特徴に注目し、あなたが毎日行くスーパーマーケットの店員よりもあなたのことをよく知っています。 データ サイエンティストとして、私たちが手元に持っているデータには多くの特性があります。これらは、より強力で正確なモデルを構築するのに良いように思えますが、モデリングにおいては時には本当に難しい課題となることがあります。 1,000 個または 2,000 個の変数の中から最も重要な変数を見つけるにはどうすればよいでしょうか?この場合、次元削減アルゴリズムや、決定木、ランダムフォレスト、PCA、因子分析、相関行列、デフォルト値比などの他のアルゴリズムが問題の解決に役立ちます。 詳細については、「次元削減テクニックを学ぶ初心者向けガイド」をお読みください。 Pythonコード 詳細はこちら #ライブラリのインポート fromsklearn インポート分解 #トレーニングとテストのデータセットがtrainとtestとして設定されていると仮定します # PCA オブジェクトを作成 pca= decomposition.PCA(n_components=k) # k のデフォルト値 =min(n_sample, n_features) # 因子分析の場合 #fa= 分解.FactorAnalysis() # PCAを使用してトレーニングデータセットの次元を削減 train_reduced =pca.fit_transform(train) #テストデータセットの次元を削減 test_reduced =pca.transform(テスト) Rコード ライブラリ(統計) pca <-princomp(train,cor =TRUE) train_reduced <-predict(pca,train) test_reduced <-predict(pca,テスト) 10.勾配ブースティングとAdaBoost GBM と AdaBoost はどちらも、大量のデータがある場合に予測精度を向上させるブースティング アルゴリズムです。ブースティングはアンサンブル学習法です。複数の弱い分類器/推定器の推定結果を順次組み合わせることで予測精度を向上させます。これらのブースティング アルゴリズムは、Kaggle、AV Hackthon、CrowdAnalytix などのデータ サイエンス コンテストで優れたパフォーマンスを発揮しました。 さらに読む: Gradient と AdaBoost について詳しく知る Pythonコード #ライブラリのインポート fromsklearn.ensemble インポートGradientBoostingClassifier #トレーニングデータセットのX(予測子)とY(ターゲット)と、test_datasetのx_test(予測子)があると仮定します # 勾配ブースティング分類器オブジェクトを作成する モデル=GradientBoostingClassifier(n_estimators=100、learning_rate=1.0、max_depth=1、random_state=0) # トレーニングセットを使用してモデルをトレーニングし、スコアをチェックする モデル.fit(X,y) #出力を予測する 予測=モデル.予測(x_test) Rコード ライブラリ(キャレット) x <-cbind(x_train,y_train) # フィッティングモデル fitControl <-trainControl(メソッド =”repeatedcv”,数値 =4,繰り返し =4) fit <-train(y ~.,data =x,method =”gbm”,trControl =fitControl,verbose =FALSE) 予測=予測(適合、x_テスト、タイプ=”prob”)[,2] GradientBoostingClassifier と Random Forest は、2 つの異なるブースティング分類ツリーです。これら 2 つのアルゴリズムの違いは何かとよく聞かれます。 ◆ ◆ ◆ 結論 この時点で、読者は一般的に使用されている機械学習アルゴリズムについてある程度理解していると思います。この記事は、すぐに学習を開始できるように書かれ、R および Python コードも提供されています。ぜひ実践して、これらのアルゴリズム プロセスに対する理解を深め、それを応用してみてください。そうすれば、機械学習が大好きになるでしょう。 編集者: @Jiujiu 著者: ビッグデータダイジェスト |
<<: それは継承でしょうか、それとも継続的な変化でしょうか?任天堂の新しいリーダーは誰になるでしょうか?
>>: 均質性の天井はすでに現れています。モバイル「ショーフィールド」はどうすれば競争力を高めることができるのでしょうか?
ワイヤレス充電フォームワイヤレス充電には、電磁誘導、磁場共鳴、電波の3つの形式があります。現在、最も...
キノコ類などの食品に豊富に含まれるビタミンDはカルシウムの吸収を促進する。いくつかの研究では、ビタ...
(上海、2024年2月20日)2月26日に正式に開幕する2024年ジュネーブモーターショーでは、上海...
ドーパミンの多様な役割:日常の喜びからアルツハイマー病治療の可能性まで神経伝達物質ドーパミンは最近非...
1. 関係者によると、BAICニューエナジーの常州工場は、ファーウェイの元CTO、李怡南氏が設立し...
最近、国内の多くの地域で気温が急激に下がったため、太った人たちの中には突然防御力を失ってしまった人も...
生活の中では、一般的な食べ物の種類がたくさんあります。食べ物を選ぶときは、自分の好みに応じて選ぶこと...
クルミの核、またはクルミのカーネルとも呼ばれます。クルミの核はクルミの果肉です。クルミの実は食べるこ...
テスラのグローバル副社長である任玉祥氏がフォーラムに出席した。写真/ビジュアルチャイナテスラは技術革...
里芋を見たことがある人は多く、実際に里芋を食べるのが好きな人もたくさんいます。しかし、里芋を食べると...
ネットには、女の子がこんなふうに1ヶ月を過ごすというジョークがありました。「どうしてまだ生理が来ない...
アイスクリームにはさまざまなフレーバーがあります。夏はどこにいてもとても暑く感じます。暑い気候は私た...
車の洗車も窒息死につながるのでしょうか? ? ?安徽省応急管理局の公式ウェブサイトによると1月11日...
董明珠と雷軍が10億ドルを賭けて以来、外の世界はGreeが電子商取引の道を歩み始める日を待ち望んでい...
米マサチューセッツ大学の最新の研究結果によると、Google Glassは隠し動画の撮影に使用できる...