
Outline
http://scikit-learn.org/0.18/modules/ensemble.html を google翻訳した
scikit-learn 0.18 ユーザーガイド 1. 教師付き学習 より
1.11. アンサンブルメソッド
アンサンブル学習 の目標は、単一の推定器に対する汎用性/頑健性を向上させるために、与えられた学習アルゴリズムで構築されたいくつかの基本推定器の予測を組み合わせることです。
通常、アンサンブル学習は2つのファミリに区別されます。
-
平均化手法 は、いくつかの推定器を独立して作成し、それらの予測値を平均化することを原則としています。 平均して、結合された推定器は、その分散が減少するので、通常、単一の推定器よりも優れている。
- 例:バギング法、無作為化された木の森、…
-
対照的に、 ブースティング法 では、ベース推定器が順次構築され、結合推定器のバイアスを低減しようとする。 モチベーションはいくつかの弱いモデルを組み合わせて強力なアンサンブルを作り出すことです。
- 例:AdaBoost、勾配ツリーブースト、…
1.11.1. バギング メタ推定器
アンサンブルアルゴリズムでは、バギング法は、元のトレーニングセットのランダムなサブセットにブラックボックス推定器を構築し、個々の予測を集約して最終的な予測を形成する、アルゴリズムのクラスを形成します。これらの方法は、ランダム化をその構築手順に導入し、アンサンブルを作成することによって、ベース推定器(例えば、決定木)の分散を低減します。多くの場合、バギング法は、基礎となる基本アルゴリズムを適応させる必要なく、単一のモデルに関して改善する非常に簡単な方法を構成します。それらが過剰適合を減らす方法を提供するので、通常、弱いモデル(例えば、浅い決定木)で最も効果的なブースティング方法とは対照的に、バギング法は強くて複雑なモデル(例えば、完全に展開された決定木)で最も効果的である。
バギング法は多くの種類がありますが、トレーニングセットのランダムな部分集合を描く方法による違いがほとんどです。
- データセットのランダムなサブセットがサンプルのランダムなサブセットとして描かれるとき、このアルゴリズムは Pasting と呼ばれます。[B1999]
- サンプルを置き換えて描画する場合、この方法は Bagging として知られています。[B1996]
- データセットのランダムな部分集合が特徴量のランダムな部分集合として描かれるとき、その方法はランダムな部分空間として知られている。[H1998]
- 最後に、ベース推定器がサンプルと特徴量の両方のサブセット上に構築される場合、この方法はランダムパッチとして知られている。[LG2012]
scikit-learnでは、バギング法は、 BaggingClassifier メタ推定器(及び BaggingRegressor )として提供され、ランダムサブセットを描画するための戦略を指定するパラメータと共にユーザ指定のベース推定器を入力として受け取ります。特に、 max_samples
と max_features
はサブセットのサイズを(サンプルと特徴量の観点から)制御しますが、 bootstrap
と bootstrap_features
はサンプルと特徴量を置き換えるかどうかを制御します。使用可能なサンプルのサブセットを使用する場合、 oob_score = True
を設定することにより、アウトオブバッグサンプルで一般化の精度を推定することができます。例として、以下のスニペットは、サンプルの50%と特徴量の50%のランダムなサブセットで構築された KNeighborsClassifier ベースの特徴器値のバギングアンサンブルをインスタンス化する方法を示します。
>>> from sklearn.ensemble import BaggingClassifier
>>> from sklearn.neighbors import KNeighborsClassifier
>>> bagging = BaggingClassifier(KNeighborsClassifier(),
... max_samples=0.5, max_features=0.5)
-
例:
-
参考文献
- [B1999] L. Breiman、 “大きなデータベースとオンラインで分類するために小さな票を貼る”機械学習、36(1)、85-103、1999
- [B1996] L. Breiman、 “Bagging predictors”、機械学習、24(2)、123-140、1996
[H1998] T. Ho、「決定フォレストを構築するためのランダム部分空間法」、パターン解析と機械知能、20(8)、832-844、1998。 - [LG2012] G. LouppeとP. Geurts、「無作為パッチに関するアンサンブル」、データベースにおける機械学習と知識発見、346-361、2012。
1.11.2. ランダム化された木の森
sklearn.ensemble モジュールには、RandomForestアルゴリズムとExtra-Treesメソッドというランダム化された決定木に基づく2つの平均化アルゴリズムが含まれています。 両方のアルゴリズムは、樹木のために特別に設計された摂動と結合技術 [B1998] です。 これは、分類器構築にランダム性を導入することによって、多様な分類器セットが作成されることを意味する。 アンサンブルの予測は、個々の分類器の平均予測として与えられる。
他の分類器として、フォレスト分類器には2つの配列が必要です。トレーニングサンプルを保持するサイズ [n_samples, n_features]
のスパースまたは密な配列Xと、ターゲット値(クラスラベル)を保持するサイズ [n_samples]
の配列Y トレーニングサンプル:
>>> from sklearn.ensemble import RandomForestClassifier
>>> X = [[0, 0], [1, 1]]
>>> Y = [0, 1]
>>> clf = RandomForestClassifier(n_estimators=10)
>>> clf = clf.fit(X, Y)
決定木 と同様に、ツリーの森は マルチ出力問題 にも拡張されます(Yがサイズ [n_samples, n_outputs]
の配列の場合)。
1.11.2.1. ランダムフォレスト
ランダムフォレスト( RandomForestClassifier クラスと RandomForestRegressor クラスを参照)では、アンサンブルの各ツリーは、トレーニングセットの置換(すなわち、ブートストラップサンプル)で描画されたサンプルから構築されます。さらに、ツリーの構築中にノードを分割する場合、選択された分割は、もはやすべての特徴量の中で最良の分割ではなくなりました。代わりに、ピックされた分割は、特徴量のランダムなサブセットの中で最も良い分割です。このランダム性の結果として、森林の偏りは、通常、(単一の非ランダム木の偏りに関して)わずかに増加するが、平均化のために、その偏差も減少し、通常はバイアスの増加を補うだけでなく、全体としてより良いモデルが得られます。
元の論文 [B2001] とは対照的に、scikit-learnの実装は、各分類器に単一のクラスに投票させる代わりに、確率的予測を平均化することによって分類器を組み合わせる。
1.11.2.2. 非常にランダム化された木
非常にランダム化されたツリー( ExtraTreesClassifier クラスと ExtraTreesRegressor クラスを参照)では、分割が計算される方法において、ランダム性はさらに一歩進んでいます。ランダムフォレストの場合と同様に、候補特徴量のランダムなサブセットが使用されますが、最も顕著なしきい値を探す代わりに、候補特徴量ごとにランダムにしきい値が描画され、これらのランダムに生成されたしきい値の最高値が分割ルールとして選択されます。これは、通常、バイアスのわずかな増加を犠牲にして、モデルの分散をさらに少しだけ減らすことを可能にします。
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.datasets import make_blobs
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import ExtraTreesClassifier
>>> from sklearn.tree import DecisionTreeClassifier
>>> X, y = make_blobs(n_samples=10000, n_features=10, centers=100,
... random_state=0)
>>> clf = DecisionTreeClassifier(max_depth=None, min_samples_split=2,
... random_state=0)
>>> scores = cross_val_score(clf, X, y)
>>> scores.mean()
0.97...
>>> clf = RandomForestClassifier(n_estimators=10, max_depth=None,
... min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y)
>>> scores.mean()
0.999...
>>> clf = ExtraTreesClassifier(n_estimators=10, max_depth=None,
... min_samples_split=2, random_state=0)
>>> scores = cross_val_score(clf, X, y)
>>> scores.mean() > 0.999
True
1.11.2.3. パラメーター
これらのメソッドを使用するときに調整する主なパラメータは n_estimators
と max_features
です。前者は木の数です。大きい方が良いですが、計算に時間がかかります。さらに、重要な数のツリーを超えても結果が大幅に改善されないことに注意してください。後者は、ノードを分割するときに考慮すべき特徴量のランダムなサブセットのサイズです。低いほど、分散の減少は大きくなるが、バイアスの増加も大きくなる。経験的に良いデフォルト値は、回帰問題の場合は max_features = n_features
、分類タスクの場合は max_features = sqrt(n_features)
です( n_features
はデータ内の特徴量の数です)。 max_depth = None
を min_samples_split = 1
(すなわち、ツリーを完全に展開するとき)と組み合わせて設定すると、良い結果が得られることが多い。しかし、これらの値は通常最適ではなく、多くのRAMを消費するモデルになる可能性があることに注意してください。最良のパラメータ値は常にクロスバリデーションされるべきです。さらに、ランダムフォレストでは、デフォルトでブートストラップサンプルが使用され( bootstrap = True
)、エクストラツリーのデフォルト戦略はデータセット全体を使用する( bootstrap = False
)ことに注意してください。ブートストラップサンプリングを使用するとき、一般化の精度は、レフトアウトまたはアウトオブバッグサンプルで推定することができます。これを有効にするには、 oob_score = True
を設定します。
1.11.2.4. 並列化
最後に、このモジュールはツリーの並列構造と、 n_jobs
パラメータによる予測の並列計算も特長としています。 n_jobs = k
の場合、計算は k
個のジョブに分割され、マシンの k
個のコアで実行されます。 n_jobs = -1
の場合、マシン上で使用可能なすべてのコアが使用されます。プロセス間通信オーバヘッドのために、スピードアップは線形ではないかもしれない(すなわち、 k
ジョブを使用することは残念ながら k
倍高速ではない)。多数の木を構築するときや、単一の木を構築するときにかなりの時間(例えば、大規模なデータセット)を必要とするときでさえも、大幅なスピードアップを達成することができる。
-
例:
-
参考文献
- [B2001] Breiman、 “ランダムフォレスト”、機械学習、45(1)、5-32,2001。
- [B1998] Breiman、 “Arcing Classifiers”、Annals of Statistics 1998
- [GEW2006] P. Geurts、D. Ernst。、およびL. Wehenkel、「超無作為化された木」、Machine Learning、63(1)、3-42,2006。
1.11.2.5. 特徴量の重要度評価
ツリー内の決定ノードとして使用される特徴量の相対的ランク(すなわち深さ)を使用して、ターゲット変数の予測可能性に関するその特徴量の相対的重要度を評価することができる。木の頂部で使用される特徴量は、入力サンプルのより大きな部分の最終的な予測決定に寄与する。したがって、 それらが寄与するサンプルの期待される割合 は、 特徴量(説明変数)の相対的重要度 の推定値として使用することができる。
いくつかの無作為化された樹木にわたってこれらの期待された活動率を 平均化 することにより、そのような推定値の 分散を減少 させ、それを特徴量選択に使用することができる。
次の例は、 ExtraTreesClassifier モデルを使用した顔認識タスクの各ピクセルの相対的な読み込みの色分けされた表現を示しています。
実際には、これらの推定値はフィッティングされたモデルに feature_importances_
という名前の属性として保存されます。これはシェイプ (n_features, )
の値が正の値で1.0の合計を持つ配列です。値が高いほど、一致関数の予測関数への寄与がより重要になります。
1.11.2.6. 完全にランダムなツリー埋め込み
RandomTreesEmbedding は、教師なしのデータ変換を実装します。完全にランダムなツリーのフォレストを使用して、 RandomTreesEmbedding は、データポイントが終わるリーフのインデックスによってデータをエンコードします。このインデックスは、Kの1対1の方法でエンコードされ、高次元の疎なバイナリコーディングにつながります。このコーディングは非常に効率的に計算され、他の学習タスクの基礎として使用できます。コードのサイズと希薄さは、ツリーの数とツリーあたりの最大深さを選択することによって影響を受ける可能性があります。アンサンブル内の各ツリーに対して、コーディングには1つのエントリが含まれます。コーディングのサイズは最大で n_estimators * 2 ** max_depth
、フォレスト内の最大葉数です。
隣接するデータポイントがツリーの同じリーフ内にある可能性が高いので、変換は暗黙の非パラメトリック密度推定を実行する。
- 例:
- 完全無作為木を使ったハッシュ変換
- 手書き数字のマニホールド学習:局所的線形埋め込み、Isomap… は手書き数字の非線形次元削減技術を比較します。
- ツリーのアンサンブルによる特徴量変換 は、監督されたツリーと管理されていないツリーベースの特徴量変換を比較します。
See also: マニホールド学習 技術は、特徴量空間の非線形表現を導出するのにも役立ちます。また、これらのアプローチは次元削減にも重点を置いています。
1.11.3. AdaBoost
モジュール sklearn.ensemble には、Freund と Schapire によって1995年に導入された一般的なブースティングアルゴリズム AdaBoost [FS1995] が含まれています。
AdaBoost のコア原則は、繰り返し修正されたバージョンのデータに対して、弱学習器のシーケンス(小さな決定木など、ランダムな推測よりわずかに優れたモデル)を適合させることです。それらのすべてからの予測は、最終的な予測を生成するために重み付けされた多数決(または合計)によって結合されます。各ブースティング反復におけるデータ修正は、トレーニングサンプルのそれぞれに重み $w_1, w_2, …, w_N$ を適用することからなる。最初は、これらの重みはすべて $w_i = 1 / N$ に設定されているため、最初のステップでは弱学習器に元のデータを単純に訓練します。反復ごとに、サンプルの重みが個別に変更され、学習アルゴリズムが再加重されたデータに再適用されます。与えられたステップでは、前のステップで誘発されたブーストされたモデルによって誤って予測されたトレーニング例は、重みが増加し、正しく予測されたものに対しては、重みが減少する。反復が進むにつれて、予測が困難な例はますます増加する影響を受ける。その後の各弱学習器は、シーケンスの前の弱学習器が見逃した例に集中することを余儀なくされる [HTF]。
- AdaBoostは、分類問題と回帰問題の両方に使用できます。
- マルチクラス分類では、AdaBoost-SAMMEとAdaBoost-SAMME.R [ZZRH2009]を実装した AdaBoostClassifier を。
- 回帰の場合、AdaBoost.R2 [D1997] を実装した AdaBoostRegressor を。
1.11.3.1. 使用法
次の例は、AdaBoost分類器で 100の弱学習器を用いて学習する方法を示しています。
>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import AdaBoostClassifier
>>> iris = load_iris()
>>> clf = AdaBoostClassifier(n_estimators=100)
>>> scores = cross_val_score(clf, iris.data, iris.target)
>>> scores.mean()
0.9...
弱学習器の数は、パラメータ n_estimators
によって制御されます。 learning_rate
パラメータは、最終的な組み合わせにおける弱学習器の寄与を制御します。デフォルトでは、弱学習器は 決定株 です。 base_estimator
パラメータを使用して、弱学習器を指定することができます。良好な結果を得るために調整する主なパラメータは、 n_estimator
と、ベース推定値の複雑さ(例えば、デプスツリーの場合、デプス max_depth
またはリーフ min_samples_leaf
でのサンプルの最小必要数)です。
-
例:
- 離散対実数AdaBoost は、AdaBoost-SAMMEとAdaBoost-SAMME.Rを使用して、決定断端、決定木、およびブーストされた決定断端の分類誤差を比較します。
- マルチクラスのAdaBoosted Decision Trees は、マルチクラスの問題に対するAdaBoost-SAMMEとAdaBoost-SAMME.Rのパフォーマンスを示します。
- 2クラスのAdaBoost は、AdaBoost-SAMMEを使用して、非線形に分離可能な2クラス問題の決定境界値と決定関数値を示します。
- AdaBoostによるDecision Tree Regression は、AdaBoost.R2アルゴリズムによる回帰を示します。
-
参考文献
- [FS1995] Y. FreundとR. Schapire、 “オンライン学習の決定論的一般化とブースティングへの応用”、1997。
- [ZZRH2009] J. Zhu、H.Zou、S.Rosset、T.Hastie。 “マルチクラスAdaBoost”、2009。
- [D1997] ドラッカー。 “ブースティング技術を用いた回帰機の改良”、1997。
- [HTF] T. Hastie、R. TibshiraniおよびJ. Friedman、 “Elements of Statistical Learning Ed。 2 “、Springer、2009。
1.11.4. 勾配ツリーブースト
勾配ツリーブースト または勾配ブースト回帰ツリー(GBRT)は、任意の微分可能な損失関数にブーストする一般化です。 GBRTは、回帰および分類問題の両方に使用できる、正確で効果的な市販の手順です。 Gradient Tree Boostingモデルは、Web検索ランキングや生態学など、さまざまな分野で使用されています。
- GBRTの利点は次のとおりです。
- 混合型データ(=異質な特徴量)の自然な扱い
- 予測力
- 出力空間における異常値に対するロバスト性(ロバストなロス関数による)
- GBRTの欠点は次のとおりです。
- ブースティングのシーケンシャル性のためほとんど並列化できません。
モジュール sklearn.ensemble は、勾配ブーストされた回帰木による分類と回帰の両方のためのメソッドを提供します。
1.11.4.1. 分類
GradientBoostingClassifier は、バイナリクラスとマルチクラスの両方の分類をサポートします。次の例は、勾配ブースティング分類器を100人の決定株と弱学習器として適合させる方法を示しています。
>>> from sklearn.datasets import make_hastie_10_2
>>> from sklearn.ensemble import GradientBoostingClassifier
>>> X, y = make_hastie_10_2(random_state=0)
>>> X_train, X_test = X[:2000], X[2000:]
>>> y_train, y_test = y[:2000], y[2000:]
>>> clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0,
... max_depth=1, random_state=0).fit(X_train, y_train)
>>> clf.score(X_test, y_test)
0.913...
弱学習器(すなわち、回帰木)の数は、パラメータ n_estimators
によって制御される。 各ツリーのサイズ は、ツリーの深さを max_depth
で設定するか、 max_leaf_nodes
でリーフノードの数を設定することによって制御できます。 learning_rate
は、 収縮 によるオーバーフィットを制御する範囲 (0.0, 1.0]
のハイパーパラメータです。
注意: 2つ以上のクラスを持つ分類は、各反復で n_classes
回帰木の誘導を必要とするため、誘導木の総数は n_classes * n_estimators
に等しくなります。 多数のクラスを持つデータセットの場合、 GradientBoostingClassifier の代わりに RandomForestClassifier を使用することを強くお勧めします。
1.11.4.2. 回帰
GradientBoostingRegressor は、引数の loss
によって指定できる回帰のさまざまな 損失関数 をサポートしています。 回帰のデフォルト損失関数は最小二乗( 'ls'
)です。
>>> import numpy as np
>>> from sklearn.metrics import mean_squared_error
>>> from sklearn.datasets import make_friedman1
>>> from sklearn.ensemble import GradientBoostingRegressor
>>> X, y = make_friedman1(n_samples=1200, random_state=0, noise=1.0)
>>> X_train, X_test = X[:200], X[200:]
>>> y_train, y_test = y[:200], y[200:]
>>> est = GradientBoostingRegressor(n_estimators=100, learning_rate=0.1,
... max_depth=1, random_state=0, loss='ls').fit(X_train, y_train)
>>> mean_squared_error(y_test, est.predict(X_test))
5.00...
下の図は、ボストンの住宅価格データセット( sklearn.datasets.load_boston )に対して、最小二乗損失および500ベースの学習者が適用された GradientBoostingRegressor の結果を示しています。 左のプロットは列車と各反復時のテストエラーを示しています。 各反復における列車誤差は、勾配ブースティングモデルの train_score_
属性に格納されます。 各反復でのテストエラーは、ステージごとに予測を生成するジェネレータを返す staged_predict メソッドを使用して取得できます。 このようなプロットを使用して、早期停止によって最適なツリー数( n_estimators
)を決定することができます。 右側のプロットは、 feature_importances_
プロパティを使用して取得できる特徴量のインポートを示しています。
1.11.4.3. 追加の学習
GradientBoostingRegressor と GradientBoostingClassifier はどちらも、 warm_start = True
をサポートしています。これにより、既に fit したモデルに学習を追加できます。
>>> _ = est.set_params(n_estimators=200, warm_start=True) # set warm_start and new nr of trees
>>> _ = est.fit(X_train, y_train) # fit additional 100 trees to est
>>> mean_squared_error(y_test, est.predict(X_test))
3.84...
1.11.4.4. ツリーサイズの制御
回帰木ベース学修器のサイズは、勾配ブースティングモデルによって取り込まれる可変相互作用のレベルを定義します。一般に、深さ h
の木は、次数 h
の相互作用を捕捉することができる。個々の回帰木のサイズを制御するには2つの方法があります。
max_depth = h
を指定すると、深さ h
のバイナリツリーが完成します。そのような木は、(最大で)2 ** h
の葉ノードと 2 ** h-1
の分割ノードを有する。
または、 max_leaf_nodes
パラメータを使用してリーフノードの数を指定してツリーサイズを制御することもできます。この場合、不純物が最も改善されたノードが最初に展開されるベストファーストサーチを使用してツリーが成長します。 max_leaf_nodes = k
のツリーは、 k-1
個の分割ノードを持ち、 max_leaf_nodes-1
までの相互作用をモデル化することができます。
我々は、 max_leaf_nodes = k
が max_depth = k-1
に匹敵する結果を与えるが、訓練するのがはるかに速いことを発見したが、わずかに高いトレーニング誤差を犠牲にしている。 max_leaf_nodes
パラメータは[F2001]の勾配ブーストに関する章の変数 J
に対応し、 max_leaf_nodes == interaction.depth + 1
の R’s gbm パッケージの interaction.depth
パラメータに関連しています。
1.11.4.5. 数学的処方
GBRTは、以下の形式の加法モデルを考慮する:
F(x) = \sum_{m=1}^{M} \gamma_m h_m(x)
ここで、 $h_m(x)$ は、通常、ブースティングのコンテキストで弱学習器と呼ばれる基底関数です。 Gradient Tree Boostingは、固定サイズの 決定木 を弱学習器として使用します。ディシジョンツリーには、混合型のデータを扱う能力と複雑な特徴量をモデル化する能力を高めるために、ブースティングに役立ついくつかの能力があります。
他のブースティングアルゴリズムと同様に、GBRTは加算器モデルを順方向の段階で構築します。
F_m(x) = F_{m-1}(x) + \gamma_m h_m(x)
各段階において、決定木 $h_m(x)$ は、現在のモデル $F_{m-1}$ 及びその適合 $F_{m-1}(x_i)$ が与えられたときの損失関数 $L$ を最小にするように選択される。
F_m(x) = F_{m-1}(x) + \arg\min_{h} \sum_{i=1}^{n} L(y_i,
F_{m-1}(x_i) - h(x))
初期モデル $F_{0}$ は問題に固有であり、最小2乗回帰のために通常は目標値の平均を選択する。
注意: 初期モデルは、init引数で指定することもできます。渡されたオブジェクトはフィット感と予測を実装する必要があります。
勾配ブーストは、最急降下を介してこの最小化問題を数値的に解くことを試みます。最も急峻な降下方向は、微分可能な任意の損失関数について計算できる現行モデル $F_{m-1}$ で評価される損失関数の負の勾配です。
F_m(x) = F_{m-1}(x) + \gamma_m \sum_{i=1}^{n} \nabla_F L(y_i,
F_{m-1}(x_i))
行の長さを指定してステップ長 $\gamma_m$ を選択すると、
\gamma_m = \arg\min_{\gamma} \sum_{i=1}^{n} L(y_i, F_{m-1}(x_i)
- \gamma \frac{\partial L(y_i, F_{m-1}(x_i))}{\partial F_{m-1}(x_i)})
回帰と分類のためのアルゴリズムは、使用される具体的な損失関数でのみ異なります。
1.11.4.5.1. 損失関数
以下の損失関数がサポートされており、パラメータ loss
を使用して指定することができます。
- 回帰
- 最小二乗(
'ls'
):優れた計算特性に起因する回帰の自然選択。初期モデルは、目標値の平均によって与えられる。 - 最小絶対偏差(
'lad'
):回帰のロバストロス関数。初期モデルは、目標値の中央値によって与えられる。 - Huber(
'huber'
):最小自乗と最小絶対偏差を組み合わせたもう1つのロバストロス関数。アウトライアに関して感度を制御するためにalpha
を使用する(詳細は [F2001] を参照)。 - Quantile(
'quantile'
):分位回帰の損失関数。分位数を指定するには、0 < alpha < 1
を使用します。この損失関数を使用して予測間隔を作成することができます(勾配ブースト回帰の予測間隔を参照)。
- 最小二乗(
- 分類
- 二項分類(
'deviance'
):二項分類のための負の二項対数尤度損失関数(確率推定を提供する)。初期モデルは対数オッズ比によって与えられる。 - 多項式偏差(
'deviance'
):相互排他的なクラスn_classes
を持つ多クラス分類のための負の多項対数 – 尤度損失関数。それは確率推定を提供する。初期モデルは、各クラスの事前確率によって与えられる。繰り返しのたびに、多数のクラスを持つデータセットではGBRTをむしろ非効率にする回帰ツリーを構築する必要があります。 - 指数関数的な損失(
'exponential'
): AdaBoostClassifier と同じ損失関数。'deviance'
よりも誤ったラベルを付けられた例はあまり強くありません。バイナリ分類にのみ使用できます。
- 二項分類(
1.11.4.6. 正規化
1.11.4.6.1. 収縮
[F2001]は、各弱学習器の寄与を因子でスケーリングする簡単な正則化戦略を提案しました。 $\nu$ :
F_m(x) = F_{m-1}(x) + \nu \gamma_m h_m(x)
パラメータ $\nu$ は勾配降下手順のステップ長さをスケーリングするので 学習率 とも呼ばれます。 learning_rate
パラメータを使用して設定できます。
パラメータ learning_rate
は、弱学習器の数に合致するパラメータ n_estimators
と強く対話します。 learning_rate
の値が小さいほど、一定のトレーニングエラーを維持するために、より多くの弱学習器が必要になります。経験的な証拠によると、 learning_rate
の値が小さいほどテストエラーが改善されることを示しています。 [HTF2009]は、学習率を小さな定数(例えば、 learning_rate <= 0.1
)に設定し、早期停止によって n_estimators
を選択することを推奨しています。 learning_rate
と n_estimators
の相互作用の詳細については、[R2007]を参照してください。
1.11.4.6.2. サブサンプリング
[F1999]は、勾配ブーストとブートストラップ平均(バギング)を組み合わせた確率的勾配ブーストを提案しました。各反復において、基本分類器は、利用可能な訓練データの小数 subsample
について訓練される。サブサンプルは置換せずに描画されます。 subsample
の典型的な値は0.5です。
下の図は、収縮とサブサンプリングがモデルの適合度に及ぼす影響を示しています。収縮が収縮しないことが明らかに分かります。収縮を伴うサブサンプリングは、モデルの精度をさらに高めることができる。一方、収縮のないサブサンプリングは、あまりうまくいかない。
分散を減らすもう1つの戦略は、 RandomForestClassifier でランダムな分割に類似する特徴量をサブサンプリングすることです。サブサンプリングされた特徴量の数は、 max_features
パラメータによって制御できます。
注意: max_featuresの値を小さくすると、ランタイムが大幅に減少する可能性があります。
確率的勾配ブースティングは、ブートストラップサンプルに含まれない例(すなわち、バッグ外れの例)に対する逸脱の改善を計算することによって、テスト逸脱の袋外推定を計算することを可能にする。改善は属性 oob_improvement_
に格納されます。 oob_improvement_[i]
は、現在の予測にi番目のステージを追加すると、OOBサンプルの損失に関する改善を保持します。最適な反復回数の決定など、モデル選択にアウトオブバッグの推定を使用できます。 OOBの推定器は通常非常に悲観的であるため、代わりに相互検証を使用し、相互検証が時間がかかり過ぎる場合にのみOOBを使用することをお勧めします。
1.11.4.7. 解釈
個々の決定木は、単に木構造を視覚化するだけで簡単に解釈できます。しかし、勾配ブースティングモデルは何百もの回帰木を含んでいるため、個々の樹木の目視検査によって容易に解釈することはできません。幸いにも、勾配ブースティングモデルを要約し、解釈するための多くの技術が提案されている。
1.11.4.7.1. 特徴量の重要性
多くの場合、特徴量は目標応答を予測するために均等に貢献しません。多くの場合、特徴量の大半は実際には無関係です。モデルを解釈するとき、最初の質問は通常、それらの重要な特徴量は何か、そしてそれらが目標応答の予測にどのように貢献しているかということです。
個々の決定木は、本質的に、適切な分割点を選択することによって特徴量選択を実行する。この情報は、各特徴量の重要度を測定するために使用できます。基本的な考え方は、ツリーの分割ポイントで特徴量が使用される頻度が高いほど特徴量が重要になることです。この重要な概念は、各ツリーの特徴量重要度を単純に平均化することによって、意思決定ツリーアンサンブルに拡張することができます(詳細については、 重要度評価 を参照してください)。
フィット勾配ブースティングモデルの特徴量重要度スコアは、feature_importances_
プロパティからアクセスできます。
>>> from sklearn.datasets import make_hastie_10_2
>>> from sklearn.ensemble import GradientBoostingClassifier
>>> X, y = make_hastie_10_2(random_state=0)
>>> clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0,
... max_depth=1, random_state=0).fit(X, y)
>>> clf.feature_importances_
array([ 0.11, 0.1 , 0.11, ...
- 例:
1.11.4.7.2. 部分依存
部分依存性プロット(PDP)は、ターゲット応答と他のすべての特徴量(「補完」特徴量)の値を周縁化する「ターゲット」特徴量のセットとの間の依存性を示す。 直観的に、我々は、部分的依存を、「目標」特徴量[2]の関数として、期待される目標応答[1]として解釈することができる。
人間の知覚の限界のため、ターゲット特徴量セットのサイズは小さくなければならず(通常は1つまたは2つ)、したがって、ターゲット特徴量は通常最も重要な特徴量の中から選択される。
下の図は、カリフォルニア州の住宅データセットの4つの一方向および一方向の部分依存プロットを示しています。
一方向PDPは、ターゲット応答とターゲット特徴量(例えば、線形、非線形)との間の相互作用について教えている。上記の図の左上のプロットは、地区内の平均収入が住宅価格の中央値に与える影響を示しています。我々はそれらの間に線形関係がはっきりと見える。
2つのターゲット特徴量ーを有するPDPは、2つの特徴量ー間の相互作用を示す。例えば、上の図の2変数PDPは、住宅価格の中央値が家計年齢と平均のジョイント値にどのように依存するかを示しています。世帯あたりの占有者数。 2つの特徴量の間の相互作用を明確に見ることができます。 2人以上の場合、家の価格は家の年齢にほとんど依存しないのに対し、2人未満の場合は年齢に強く依存する。
モジュール partial_dependence は、片方向と双方向の部分依存関係プロットを作成する便利な関数 plot_partial_dependence を提供します。以下の例では、部分依存グラフのグリッドを作成する方法を示します。特徴量 0
と 1
の2つの一方向PDPと、2つの特徴量間の双方向PDPです。
>>> from sklearn.datasets import make_hastie_10_2
>>> from sklearn.ensemble import GradientBoostingClassifier
>>> from sklearn.ensemble.partial_dependence import plot_partial_dependence
>>> X, y = make_hastie_10_2(random_state=0)
>>> clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0,
... max_depth=1, random_state=0).fit(X, y)
>>> features = [0, 1, (0, 1)]
>>> fig, axs = plot_partial_dependence(clf, X, features)
マルチクラスモデルの場合、 label
引数を使用してPDPを作成するクラスラベルを設定する必要があります。
>>>
>>> from sklearn.datasets import load_iris
>>> iris = load_iris()
>>> mc_clf = GradientBoostingClassifier(n_estimators=10,
... max_depth=1).fit(iris.data, iris.target)
>>> features = [3, 2, (3, 2)]
>>> fig, axs = plot_partial_dependence(mc_clf, X, features, label=0)
プロットではなく部分依存関数の生の値が必要な場合は、 partial_dependence 関数を使うことができます:
>>>
>>> from sklearn.ensemble.partial_dependence import partial_dependence
>>> pdp, axes = partial_dependence(clf, [0], X=X)
>>> pdp
array([[ 2.46643157, 2.46643157, ...
>>> axes
[array([-1.62497054, -1.59201391, ...
関数は、部分依存関数を評価すべき対象特徴量の値を指定する引数 grid
、またはトレーニングデータからグリッドを自動的に作成するための簡易モードである引数 X
のいずれかを必要とする。 X
が指定されている場合、関数によって返された軸の値は各ターゲット特徴量の軸になります。
grid
内の「ターゲット」特徴量の各値について、部分依存関数は、「補完」特徴量のすべての可能な値にわたるツリーの予測を疎遠にする必要がある。決定木では、この機能は、トレーニングデータを参照することなく効率的に評価することができます。各グリッドポイントについて、重み付けされたツリートラバーサルが実行される:分割されたノードに「ターゲット」特徴量が含まれている場合、対応する左または右に分岐します。それ以外の場合は両方の分岐を追います。各枝には、その枝に入ったトレーニングサンプルの割合が加重されます。最後に、部分依存性は、訪問されたすべてのリーフの加重平均によって与えられます。ツリーアンサンブルの場合、個々のツリーの結果は再び平均化されます。
-
脚注
- [1]損失= ‘逸脱’の分類では、目標応答はlogit(p)です。
- [2]より正確には、初期モデルを考慮した後の目標応答の期待。部分依存グラフにはinitモデルは含まれていません。
-
例:
-
参考文献
- [F2001](1、2、3)J.フリードマン、 “貪欲関数近似:勾配ブーストマシン”、統計年報、Vol。 29巻、5号、2001年。
- [F1999] フリードマン、「確率的勾配ブースト」、1999
- [HTF2009] Hastie、R. TibshiraniおよびJ.Friedman、 “Elements of Statistical Learning Ed。 2 “、Springer、2009。
- [R2007] Ridgeway、 “Generalized Boosted Models:gbmパッケージのガイド”、2007
1.11.5. VotingClassifier
投票分類器実装の背後にあるアイデアは、概念的に異なる機械学習分類器を組み合わせ、多数決または平均予測確率(ソフト投票)を使用してクラスラベルを予測することである。そのような分類器は、個々の弱点を釣り合わせるために、同様に良好に機能するモデルのセットに有用であり得る。
1.11.5.1. 大多数のクラスのラベル(多数決/厳選)
過半数投票では、特定のサンプルの予測クラスラベルは、個々の分類子によって予測されるクラスラベルの大部分(モード)を表すクラスラベルです。
たとえば、与えられたサンプルの予測が
- 分類器1 → クラス1
- 分類器2 → クラス1
- 分類器3 → クラス2
VotingClassifier( voting = 'hard'
)は、多数クラスラベルに基づいてサンプルを「クラス1」として分類します。
同値の場合、VotingClassifierは昇順のソート順に基づいてクラスを選択します。たとえば、次のシナリオでは
- 分類器1 → クラス2
- 分類器2 → クラス1
クラスラベル1がサンプルに割り当てられます。
1.11.5.1.1. 使用法
次の例は、多数決ルール分類器を適合させる方法を示しています。
>>> from sklearn import datasets
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.naive_bayes import GaussianNB
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.ensemble import VotingClassifier
>>> iris = datasets.load_iris()
>>> X, y = iris.data[:, 1:3], iris.target
>>> clf1 = LogisticRegression(random_state=1)
>>> clf2 = RandomForestClassifier(random_state=1)
>>> clf3 = GaussianNB()
>>> eclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('gnb', clf3)], voting='hard')
>>> for clf, label in zip([clf1, clf2, clf3, eclf], ['Logistic Regression', 'Random Forest', 'naive Bayes', 'Ensemble']):
... scores = cross_val_score(clf, X, y, cv=5, scoring='accuracy')
... print("Accuracy: %0.2f (+/- %0.2f) [%s]" % (scores.mean(), scores.std(), label))
Accuracy: 0.90 (+/- 0.05) [Logistic Regression]
Accuracy: 0.93 (+/- 0.05) [Random Forest]
Accuracy: 0.91 (+/- 0.04) [naive Bayes]
Accuracy: 0.95 (+/- 0.05) [Ensemble]
1.11.5.2. 加重平均確率(ソフト投票)
大多数の投票(ハード投票)とは対照的に、ソフト投票はクラスラベルを予測確率の合計のargmaxとして返します。
特定の重みは、 weights
パラメータを介して各分類器に割り当てることができる。重みが与えられると、各分類器について予測されたクラス確率が収集され、分類器重みが乗算され、平均化される。最後のクラスラベルは、最も高い平均確率を有するクラスラベルから導出される。
これを簡単な例で説明すると、 w1=1
、 w2=1
、 w3=1
の3つの分類子と、すべての分類子に等しい重みを割り当てる3クラスの分類問題があるとします。
サンプルの加重平均確率は、次のように計算されます。
分類器 | クラス1 | クラス2 | クラス3 |
---|---|---|---|
分類器1 | w1 * 0.2 | w1 * 0.5 | w1 * 0.3 |
分級機2 | w2 * 0.6 | w2 * 0.3 | w2 * 0.1 |
分類器3 | w3 * 0.3 | w3 * 0.4 | w3 * 0.3 |
加重平均 | 0.37 | 0.4 | 0.23 |
ここで、予測クラスラベルは、平均確率が最も高いので、2である。
次の例は、線形サポートベクトルマシン、決定木、およびK最近傍の分類子に基づいてソフトVotingClassifierが使用されたときに、決定領域がどのように変化するかを示しています。
>>> from sklearn import datasets
>>> from sklearn.tree import DecisionTreeClassifier
>>> from sklearn.neighbors import KNeighborsClassifier
>>> from sklearn.svm import SVC
>>> from itertools import product
>>> from sklearn.ensemble import VotingClassifier
>>> # Loading some example data
>>> iris = datasets.load_iris()
>>> X = iris.data[:, [0,2]]
>>> y = iris.target
>>> # Training classifiers
>>> clf1 = DecisionTreeClassifier(max_depth=4)
>>> clf2 = KNeighborsClassifier(n_neighbors=7)
>>> clf3 = SVC(kernel='rbf', probability=True)
>>> eclf = VotingClassifier(estimators=[('dt', clf1), ('knn', clf2), ('svc', clf3)], voting='soft', weights=[2,1,2])
>>> clf1 = clf1.fit(X,y)
>>> clf2 = clf2.fit(X,y)
>>> clf3 = clf3.fit(X,y)
>>> eclf = eclf.fit(X,y)
1.11.5.3. GridSearchでVotingClassifierを使用する
VotingClassifierは、個々の推定器のハイパーパラメータを調整するために、GridSearchと一緒に使用することもできます。
>>> from sklearn.model_selection import GridSearchCV
>>> clf1 = LogisticRegression(random_state=1)
>>> clf2 = RandomForestClassifier(random_state=1)
>>> clf3 = GaussianNB()
>>> eclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('gnb', clf3)], voting='soft')
>>> params = {'lr__C': [1.0, 100.0], 'rf__n_estimators': [20, 200],}
>>> grid = GridSearchCV(estimator=eclf, param_grid=params, cv=5)
>>> grid = grid.fit(iris.data, iris.target)
1.11.5.3.1 使用法
予測されたクラス確率に基づいてクラスラベルを予測するために(VotingClassifierのscikit-lear estimatorsはpredict_probaメソッドをサポートしなければならない)
>>> eclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('gnb', clf3)], voting='soft')
オプションで、個々の分類子に重み付けを行うことができます。
>>> eclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('gnb', clf3)], voting='soft', weights=[2,5,1])
scikit-learn 0.18 ユーザーガイド 1. 教師付き学習 より
©2010 – 2016、scikit-learn developers(BSDライセンス)。
- TensorFlowのチュートリアルのチュートリアル
- 【機械学習】scikit learnでの画像減色プログラム
- TensorFlow製アート・音楽生成プロジェクト「magenta」で曲を作ってみる。
- サカナクションさんをTensorFlow製アート・音楽生成プロジェクト「Magenta」に学習させてみる。
- pixivの機械学習モデルからアイドルのキャラクター性を計算してみたよ ζ*’ヮ’)ζ
- 非プログラマのための機械学習ツールKNIMEのご紹介
- 機械学習でお客様が他にも買いそうな商品を予測しようじゃないか
- Tensorflowの精度低下はlog(0)のせいだった
- 手書きひらがなの認識で99.78%の精度をディープラーニングで
- TensorFlow製音楽生成プロジェクト「Magenta」を開発環境の設定から曲生成までやってみる。
- AdaGradが学習率のスケジューリングを上手く調整してくれる理由 – 理論編 –
- TensorFlow製音楽生成プロジェクト「Magenta」でMIDIファイルを学習させ、曲を生成する。
- 論文要約: Learning both Weights and Connections for Efficient Neural Networks
- 自然言語入力処理のMicrosoft LUIS(日本語版)を使ってChatBotサンプルを作ってみる
- ILSVRCとは何か?
- Ubuntu16.04 + GTX1080 + CUDA8.0で 機械学習環境を構築する
- エロゲ製作でAIを使おうとした話
- 人はRubyだけで手書き数字認識できるか?
- PandasのCategorical関係を調べてみた~慣れれば便利(と思う)
- ニューラルネットワークのライブラリのインストール方法
- 確率的勾配降下法をadで実装してみた
- クラウド統合開発環境Cloud9でTensorFlowを使う~GetStarted~
- 深層学習フレームワークヒッチハイクガイドVer3.0
- Kerasでアニメキャラの顔認識
- paragraph2vecの論文 要訳 (Distributed Representations of Sentences and Documents)
- 問題が明確化できているときは、半分解けている
- Coursera Machine Learning スライドまとめ
- Coursera Machine Learning 総復習用メモ
- 機械学習用の画像切り出しツールを作る
- <初心者向け>pythonライブラリ<機械学習用>
- 代表的な機械学習手法一覧
- Deep Learning bookを読んで学んだこと
- データシティ鯖江のオープンデータを使って水位計の値を機械学習で予測してみる
- Recurrent Neural Networkの基礎(Peterさんのチュートリアルの翻訳)
- {tensorflow}をirisデータで試してみる
- Python 機械学習プログラミング 第1章 「データから学習する能力」をコンピュータに与える まとめ
- 【機械学習】手書き文字データで分類器のパフォーマンスチェックをしてみる
- Pythonで体験する深層学習 2章(輪講用資料)
- 直感のきく技術者になろう
- numpyだけでCNN実装
- JubatusでQiita記事を推薦してくれる日報アプリ作ってみた
- 機械学習(深層学習)で画像関連をやってみたい場合はじめに抑えておいた方がよいものは何か
- TensorFlowをWindowsでビルドする
- 統計学とデータ分析で儲ける作戦! 選挙のタイミングで儲けられる銘柄を、相関係数を用いて探す
- ディープラーニングでメイドインアビスの欠落文字を推定する
- PRML第1章 ベイズ曲線フィッティング Python実装
- pythonでRNN実装
- scikit-learnでDBSCAN(クラスタリング)
- ディープラーニングが分からなくてもいい感じに物体認識させるサービスを試す(iOS Swift + Bluemix Visual Recognition)
- 機械学習関連情報をトピックモデルで分類する
- Watson ConversationのTutorialを日本語でやってみた (前編)
- 活性化関数ReLUについてとReLU一族【追記あり】
- seq2seqで利用可能な日本語対話データセットをダウンロードするツール
- PRML第2章 スチューデントのt分布 Python実装
- メモリを操作するRNNでソートアルゴリズム(可変長&順序フラグあり)を機械学習できたよっ!
- Coursera Machine Learning (1): 機械学習とは?単回帰分析、最急降下法、目的関数
- 機械学習をざっくりと理解する
- 機械学習を始めて2週間、機械学習を始めるのに必要だったこと
- Vision APIとNatural Language APIを組み合わせて名刺から情報抽出する
- 名刺から情報を抽出するSlackBotを作る
- Jubatusを使った感情分析を行うLINE Botの作成
- ChainerでYOLO
- うまくいきそうにない技術
- アンサンブル学習(Stacked generalization)のサンプルプログラムと実行例
- f-divergence一族の可視化
- Coursera Machine Learningの教材に沿って協調フィルタリングを学ぶ
- Watson ConversationのTutorialを日本語でやってみた (後編)
- FXシステムトレードのプログラムをいくつか作ってみて分かった課題とその解決法について
- 機械学習の開発内容について(Example)
- KerasでDCGAN書く
- Kaggleまとめ:BOSCH(kernels)
- Watson Visual Recognitionがすごすぎて俺の中で話題になっている件
- 高次元データの次元削減および2次元プロット手法
- Coursera Machine Learning (2): 重回帰分析、スケーリング、正規方程式
- PRML第3章 エビデンス近似 Python実装
- Windows10にChainer+CUDA 8.0をインストール
- Kaggleまとめ:BOSCH(winner)
- Watson Visual Recognitionを使った簡単顔認識アプリを作ってみよう
- Numpyのみを用いた、畳み込みニューラルネットワークの実装
- Tensorflowを使ってROS上でMNISTをやるノードを立てる
- 未踏の応募資料を公開します 【統計的かな漢字変換】
- MeCabとNEologdのインストール方法(CentOS6/CentOS7)
- PRMLのアルゴリズムをPython(ほぼNumpyだけ)で実装
- pythonでHMMのパラメータ推定実装
- 非機械的データ分析入門
- Tensorflow_in_ROSのコードを解説する
- Coursera Machine Learning (3): ロジスティック回帰、正則化
- 【初心者向け】Re:ゼロから始める遺伝的アルゴリズム【人工知能】
- PRML第4章 ベイズロジスティック回帰 Python実装
- Googleスプレッドシートの機械学習アドオンを日本語で試す
- defragTreesがよさそう
- 深層強化学習(DQN)でオセロもどきAIを作ってみた
- TensorFlow 0.12で追加されたEmbedding Visualizationを試す
- ニューラルかな漢字変換
- Jubatus をインストールして使ってみる【2017年版】
- [Python] Deep Learning: ディープラーニング (DBN, SDA) をライブラリを使わずに実装してみた
- 機械学習で美少女化 ~ あるいはNEW GAME! の世界 ~
- 取り急ぎpix2pixで遊んでみた(追記あり)
- 【論文シリーズ】DNCー動的な記憶装置を搭載した人工知能
- 全自動機械学習で実現する、現場のためのワンクリックデータ予測
- 誰でも分かるTrueSkill
- 機械学習向け並列分散処理フレームワーク Petuum について調べてみた
- Julia のススメ 〜 Deep Learning のための Julia 〜
- Coursera Machine Learning: 概要とWeek1-Week5までを振り返って
- Noise Contrastive Estimationについて
- Ruby でニューラルネットワーク
- メンターとパンサーを人工知能に区別させてみた
- Schooの動画レコメンドについて
- AdaBoost の弱学習器を色々試してみた
- PRML第5章 混合密度ネットワーク Python実装
- NLP/機械学習/データ分析系のDockerイメージ8選 + 1
- pix2pixでポップアートから写真を復元してみた (追記あり)
- “逐次的np.append”と”list.append+最後にnp.array作成”の速度比較
- Coursera Machine Learning (4): ニューラルネットワーク入門
- 幼女画像判定システムLolinco フロント編
- GCP(Google Cloud Platform)を活用した機械学習バッチ運用環境(2016)
- TensorFlowのinitialize_all_variablesがDeprecatedになった件
- これを理解できれば自然言語処理もできちゃう? MNISTでRNN(LSTM)を触りながら解説
- TensorFlow の名前空間を理解して共有変数を使いこなす
- Girl Friend Factory – 機械学習で彼女を創る –
- 機械学習でなんとなく材料研究者の気分を味わおう
- (Chainer) DNC(Differentiable Neural Computers)で文字列の学習&生成
- 絵で理解するWord2vecの仕組み
- PCAとSVDの関連について
- PRML第6章 ガウス過程による回帰 Python実装
- 人工知能やディープラーニングの理解に欠かせないパーセプトロンとは何か?
- 「ゼロから作るDeep Learning」の環境をDockerで作る
- JavaScript でニューラルネットワーク
- 2016年のディープラーニング論文100選
- 『Rによるデータサイエンス』をcaretで再現する
- Coursera Machine Learning (5): ニューラルネットワークとバックプロパゲーション
- ついに来た! Azure GPU インスタンス上に30分で構築する TensorFlow on GPU 実行環境構築手順
- LSTMを超える期待の新星、QRNN
- 非線形SVMとscikit-learnによる実装
- NIPS 2016参加報告
- PythonでAIシミュレーションプラットフォームOpen AI Gym を利用して遊ぶ (DQN編)
- TensorFlowをGCPで実行してみる
- Tensorflowで個人サービスにアップロードされた不適切なイラスト画像を検出する
- Chainerでモノクロ画像のカラー化を学習してみる
- Watson Knowledge StudioのTutorialをやってみた (前編)
- TensorFlowで競艇予想
- 環境構築から深層学習チュートリアル
- 2標本問題の新展開~古典的手法からカーネル法まで~
- 医薬品設計とニューラルネットワーク
- Javaで機械学習(DeepLeaning4j) 文書を学習して特定の単語と関連性の高い単語を抽出してみる
- 機械学習を1ヵ月で実践レベルにする #1 (とっかかり編)
- AWS Lambdaによるサーバーレスな機械学習APIの作り方
- 機械学習モデルの実装における、テストについて
- 空気を読むUIを作る
- 30分でわかる機械学習用語「クラスタリング(Clustering)」
- 機械学習を1ヵ月で実践レベルにする #2 (オンライン講座)
- PythonからGPU使用率などの情報を取得する(nvidia-smiコマンド)
- DeepLearning研究 2016年のまとめ
- 機械学習を1ヵ月で実践レベルにする #3 (Octave 編)
- scikit-optimizeの紹介
- 機械学習で競馬予想(その4)
- foobarNet: ディープラーニング関連の○○Netまとめ
- TensorFlowで畳み込みLSTMを用いた動画のフレーム予測
- まだ機械学習の論文を追うのに消耗してるの?それBotで解決したよ
- 確率とモナドと確率論的プログラミング
- 森を彷徨う
- 対話システムに使える(かもしれない)音声情報処理入門
- Pythonにまつわる3タイプ別オススメ書籍
- 【初級編; 2017年版】脳波で機械を操る!ブレインコンピュータインタフェース(BCI/BMI)って何?
- ペンパイナッポーとアッポーペンを識別する(ChainerでYOLO ver2)
- 機械学習を1ヵ月で実践レベルにする #4 (線形回帰編)
- 【転職会議】クチコミをword2vecで自然言語処理して会社を分類してみる
- 深層学習による声質変換
- RNNで人間行動認識
- Word2Vecを用いた類義語の抽出が上手く行ったので、分析をまとめてみた
- ボット開発者のための機械学習入門
- 「量子コンピュータが人工知能を加速する」を読んで、数式を使わずにPythonでその概要を説明してみた
- Metalでカメラからの動画入力をリアルタイム処理する
- 機械学習におけるクラス分類問題の各関数の意味解説
- 【翻訳】scikit-learn 0.18 User Guide 4.3. データ前処理
- CCVを使ってみよう
- 【翻訳】scikit-learn 0.18 User Guide 3.1. クロスバリデーション:推定器の成果を評価する
- Jubatusのバースト検知機能(jubaburst)を使ってみた
- TensorFlow for iOS のモデルについて
- WindowsでGPU使ってTensorFlowを動かすメモ(TensorBoardも動かす)
- 【翻訳】scikit-learn 0.18 User Guide 3.3. モデル評価:予測の質を定量化する
- iOSのMPSCNNによる手書き数字認識のサンプルを読む – 前編
- インフラエンジニアが見た機械学習のトップカンファレンス NIPS 2016
- RNNにおけるDropoutの適用について
- 手書きで数式を書きつつストレス無くノートをデジタル化する方法
- 【PyStan】Graphical LassoをStanでやってみる。
- javascriptでchainerモデルを利用するためのKeras.js
- ニューラルネットワークは電気ねずみの夢を見るか?
- 量子アニーリングで組合せ最適化
- Retty流『2200万ユーザを支える機械学習基盤』の作り方
- 新年をシリコンバレーで迎えるための7日間ハンズオン
- TensorFlowは「テンサーフロー」か「テンソルフロー」か?TensorFlow自身に聞いてみる。
- チャットボットをAIでもっと素敵にする!自然言語処理の仕組み
- DeepLearningはアニメを変えるのか?
- PyCon 2016で発表したChat Botをコードベースから解説(Chainerを利用した雑談応答編)
- 30分でわかる機械学習用語「次元削減(Dimensionality Reduction)」
- 機械学習を1ヵ月で実践レベルにする #9 (オーバーフィッティング)
- iOSのMetalで畳み込みニューラルネットワーク – MPSCNNを用いた手書き数字認識の実装
- Keras+DQNでリバーシのAI書く
- 3層ニューラルネットワークを実装する
- 外部メモリー付きのニューラルネット”Differentiable Neural Computing (DNC)”について解説するよ
- 機械学習の学習用に画像情報抽出とラベル付けが自動でできる前処理アプリをRailsで作ってみた
- Raspberry Pi 深層学習ライブラリで物体認識(Keras with TensorFlow・Open CV)
- scikit-learnを用いた機械学習入門 -データの取得からパラメータ最適化まで
- 音楽の構成(Aメロ、サビ等)を自動で分割する。
- ニューラルネットワークの出力層設計に関する指針
- ロバストにいこう
- ゼロから作るDeep Learning Pythonで学ぶディープラーニングの理論と実装 第3章
- TensorFlow Saverで保存する世代数を指定する方法 (元旦の悲劇)
- 江ノ島を描く ~Neural Style~ [TensorFlowでDeep Learning 14]
- ”ゼロから作る Deep Learning”のための環境構築をdockerとVagrantで実現
- 私的Chainer入門
- WebでChainerを「触って」学習出来る Chainer Playground をやってみた
- 機械学習に必要な最急降下法の実装に必要な知識まとめ
- ディープラーニング(seq2seq)でtwitter chatbotを作ってみた
- 文章を○○風に変換する機械学習をやってみた
- Coursera Machine Learning (6): 機械学習のモデル評価(交差検定、Bias & Variance、適合率 & 再現率)
- 機械学習の内輪向け勉強会: 概念の理解
- PRML第10章 変分混合ガウス分布 Python実装
- 可能性の枝切りができない開発は必ず失敗する。
- Raspberry Pi 深層学習で「赤りんご」と「青りんご」を見分ける(Keras・Open CV)
- Coursera Machine Learning (7): サポートベクターマシーン (SVM)、カーネル (Kernel)
- Coursera Machine Learning (8): 教師なし学習 (K-Means)、主成分分析 (PCA)
- 機械学習で精度が出ない時にやることまとめ
- fastTextを使って単語じゃないものの分散表現を獲得する
- 機械学習をゼロから1ヵ月間勉強し続けた結果
- LightGBM ハンズオン – もう一つのGradient Boostingライブラリ
- 多分もっともわかりやすいTensorFlow 入門 (Introduction)
- 3日で資産が3倍に!! Azure Machine Learning(ML) でFx予測と自動売買連携。-その1 概要・準備編
- 【Tensorflow入門】適当にTensorflowを理解して、モデルを作ってみる
- カルマンフィルタってなに?
- ゼロから作るDeep Learningのメモまとめ
- Stanfordの授業CS231nでニューラルネット、畳み込みニューラルネットを学ぶ
- Raspberry Pi 深層学習でリアルタイム顔認識(Keras・Open CV)
- NIPS 2016 Adversarial Training Workshop 体験記
- 機械学習で電力需要を予測してみる パート2
- TensorFlowの学習モデルによるモバイル端末でのリアルタイム画像認識
- Coursera Machine Learning (10): 大規模機械学習
- いますぐ使える単語埋め込みベクトルのリスト
- OpenAI UniverseでするAtari Pongの強化学習
- 【初心者向け】MacでDockerを使ってTensorFlowを試す(Jupyter Notebook)
- 機械学習ことはじめ(オススメ教材・情報)
- Inside of Deep Learning (ディープラーニングの基本要素)
- Inside of Deep Learning あるいは深層学習は何を変えるのか
- ゆるふわ強化学習1
- PRML第12章 ベイズ的主成分分析 Python実装
- はじめての人向け機械学習【2017年度版】
- ニューラルネットワークを使ったWindowsアプリを作成
- Jupyter on Dockerでパスワードの設定方法が分からないあなたへ
- Coursera Machine Learning (11): 写真の光学文字認識 (Photo OCR)
- fastTextの学習済みモデルを公開しました
- ChainerやTensorFlowでGPUを使うと毎回結果が変わる理由と対策 (まとめ)
- ChainerでGPUを使うと毎回結果が変わる理由と対策
- TensorFlowでGPUを使うと毎回結果が変わる理由と対策
- 【word2vec】会社のクチコミを自然言語処理した結果を可視化してみる
- 再訪scikit-learn
- Pythonでベイズ最適化を行うパッケージ GPyOpt
- 機械学習のルールとベストプラクティス(Rules of Machine Learning: Best Practices for ML Engineering の意訳)
- 人工知能関連ニュースの、実際のところシリーズ
- 遺伝的アルゴリズムxニューラルネットワーク(NeuroEvolution)でOpen AI Gymの山登りをさせた話
- 月刊Interface 2017年03月号がTensorFlow大特集になっている話
- 数学の苦手なバイオの学生がCourseraの機械学習コースを修了して気づいたこと
- Tensorflowでブロック崩し
- Chainer2.0が近日リリース またそれとは別の大規模分散処理に対応したChainerもリリースされるらしい
- 機械学習ざっくりまとめ~パーセプトロンからディープラーニングまで~
- PRML第13章 隠れマルコフモデルの最尤推定 Python実装
- 趣味用に安く深層学習PCを作った
- iOSのMetal Performance Shadersでニューラルネットを実行する際のモデルの渡し方
- GPUなしではじめるディープラーニング
- TensorFlowでVGG19を使ってMNISTのエラー画像一覧を作ってみた
- O(log N)の底は何なのか
- 強化学習
- keras(tensorflow)で花の画像から名前を特定
- 自然言語処理における畳み込みニューラルネットワークを用いたモデル
- 普通のpython実行ファイル(argparseを含むファイル)をJupyter notebookで実行するときのメモ書き
- LINQ を使って 8 行で k-means 法を実装してみた
- TensorFlow (ディープラーニング)で為替(FX)の予測をしてみる
- GraphLassoを用いた株式市場の構造学習
- Kerasでfizzbuzz問題を解いてみる
- ゆるふわ強化学習2
- テキスト分類器fastTextを用いた文章の感情極性判定
- Keras with GridSearchCVでパラメータ最適化自動化
- 文系卒社会人が統計入門でのモヤモヤを克服した話
- 例の機械学習コースが良いらしいと知りながらも2年間スルーし続けたがやはり良かったという話
- 機械学習の regularization の訳は正則化 (正規化ではない)
- CPUで気軽に強化学習してみた話(DeepMind A3C)
- 機械学習とディープラーニングの入門者向けコンテンツまとめ
- なぜ機械学習にPythonが選ばれるのか
- 【テキスト分類】Convolutional Neural Networks for Sentence ClassificationをChainerで実装してみた
- ディープじゃない機械学習で為替(FX)の予測をしてみる
- Apache Sparkによる大規模データの分散処理による機械学習(回帰分析) by Amazon EMR
- 機械学習入門時に知っておきたい情報まとめ
- スタートアップ必須のコホート分析を、サバイバル分析の手法で、簡単かつ正確に
- Courseraの機械学習コースを始めるまえに用意しておくこと、覚悟すべきこと
- iOSのMPSCNNに渡すモデルパラメータのフォーマット / TensorFlowからの書き出し
- トピックモデルを操作 ~Interactive Topic Model~
- Cloud Dataflow(Python)で機械学習パイプラインを動かす
- TensorFlowの増大するAPIについて少し考えてみた
- [Python]強化学習(DQN)を実装しながらKerasに慣れる
- ScalaからTensorFlowのJava APIを呼びだすぞい
- Windowsに、オフラインでディープラーニング環境をインストールする(Tensorflow, Keras) ・・・「オフライン環境でのpipインストール方法」と言ってもいいかも・・・
- TensorFlow の “AttributeError: ‘module’ object has no attribute ‘xxxx'” エラーでつまづいてしまう人のための移行ガイド
- Webアプリケーションエンジニアがディープラーニングに挑戦する際にやったこと(Coursera Week1)
- 続々・node.js で社会性フィルター
- PyTorchリンク集
- TensorFlow iOS カメラサンプルで自作した画像分類器を動かす
- ChainerRLでライントレーサーする
- Cloud Dataflow(Python)でXGBoostを動かす
- 機械学習 トレーニングデータの分割と学習・予測・検証
- 文章から特徴量(素性)を抽出する.
- Qwiklabs の NVIDIA ラボで無料ハンズオンを試す
- 今更ながらchainerでSeq2Seq(1)
- kaggleの脳波検出コンペ上位モデルの解説を翻訳
- scikit-learnでモデルのハイパーパラメータチューニングをしよう!
- 今更ながらchainerでSeq2Seq(2)〜Attention Model編〜
- 自然言語処理における、Attentionの耐えられない短さ
- 4時間で「ゼロから作るDeep Learning」を読んで自分で動かしてみた
- 数学の知識がなくてもできる機械学習
- ゲーマーの為のTensorFlow入門
- [Python]KerasをTensorFlowから,TensorFlowをc++から叩いて実行速度を上げる
- 爆勝ちFXシストレ論文「Learning to Trade via Direct Reinforcement」を再現させたい
- Google Cloud DataflowでTensorFlowのGrid Searchをしてみた
- Ubuntu環境上でPyCharmを使った機械学習の環境を構築する(TensorFlowも導入するよ!)
- 会計データを学習して、仕訳の入力時に摘要の内容から勘定科目を予測してみる
- なぜ自然言語処理にとって単語の分散表現は重要なのか?
- scikit-learn でランダムフォレストによる多ラベル分類
- Google Video Intelligence APIのデモを触ってみた
- Getting Started With TensorFlow を翻訳
- 機械学習した結果から予測をHTTPで返す仕組みの一例
- 今更ながらchainerでSeq2Seq(3)〜CopyNet編〜
- Affineレイヤの逆伝播を地道に成分計算する
- 高校数学で理解・実装するニューラルネットワーク
- [改良版]KerasでVAT(Virtual Adversarial Training)を使ってMNISTをやってみる
- pytorch超入門
- GANで文章の生成(Controllable Text Generation – Arxiv.orgより)
- 【決定版】MacでPythonを使って『機械学習』を学ぶための環境構築
- 機械学習ナイーブベイズ分類器のアルゴリズムを理解したのでメモ。そしてPythonで書いてみた。
- Coursera Machine Learning を修了したので、感想を書いてみる
- 実サービスでの機械学習の活用に関するサーベイ
- ニコ動コメントコーパスでkaomoji2vecして顔文字をベクトル表現で扱う
- 【決定版】WindowsでPythonを使って『機械学習』を学ぶための環境構築
- 機械学習の環境を構築するのにAnacondaをインストールする必要はない。Minicondaを使おう
- TensorFlowによるDCGANでロゴ画像を生成してみた
- 教師無しimage to image ”Discover Cross-Domain Relations with Generative Adversarial Networks.” のざっくりした紹介
- TensorFlow (ディープラーニング)で為替(FX)の予測をしてみる CNN編
- MS の Deep Learning Framework CNTK で画風変換~もしも小学生の自分にゴッホを描かせたら?
- ディープラーニングのフレームワークの自作
- ある美女が,どの大学にいそうかを CNN で判別する
- FPGAでDeep Learningしてみる
- テンプレートを使って爆速で機械学習プロジェクトを作成する
- ブラウザで実行できるplaygroundまとめ
- 機械学習に用いるデータセット作成のための画像収集Pythonスクリプト
- Twitter感情分析で株価予測の論文を検証したら約70%の精度で上下予測できた
- ポエム判別器
- 生成モデルで語られる Kullback-Leibler を理解する
- データサイエンス、データ分析、機械学習に必要な数学
- Google Cloud ML EngineをJupyterから簡単に使えるMagic
- 【テキスト分類】Convolutional Neural NetworksにAttention機構を使ってみた。
- 転移学習:機械学習の次のフロンティアへの招待
- 誤差逆伝播法における行列演算まとめ
- ギブスサンプリング実装とJITコンパイラによる高速化
- Chainer で手書き数字認識(MNIST)
- ちょっと距離についてまとめてみた。
- デレマスで機械学習(データ取得編)
- 最小二乗法のアルゴリズムを理解したのでメモ。そしてPythonで書いてみた。
- トランプ氏のツイートを機械学習し、為替の予測をしてみた。〜GCP ML系使い倒し〜
- 【文分類】Convolutional Neural Networksのpooling方法を色々試してみた
- 【DeepAA on Web】ディープラーニングでアスキーアートを”Web上で”作る #DeepAA
- 「わかりやすさ」に注目した、機械学習による技術ブログの検索
- ディープラーニングでイラスト画像分類
- SE, PG系の方がデータ分析、機械学習をやる必要が出た時にまず手にとるべき一冊
- 顔画像から年齢・性別を推定するためのデータセットIMDB-WIKI
- DeepMindのSonnetを触ったので、TensorFlowやKerasと比較しながら解説してみた
- javascriptでお手軽に顔認識できちゃうライブラリ
- TensorFlow の複数プロセスで queue を共有
- deep learning にも使える scikit-learn の概要と便利な機能
- xgboost: テーブルデータに有効な機械学習モデル
- Kerasでちょっと難しいModelやTrainingを実装するときのTips
- KerasでBEGAN(Boundary Equilibrium Generative Adversarial Networks)を実装する
- ノンプログラミングで機械学習サービスが作りたい! テキスト分類編
- word2vecで吉川英治本の感情分析をしてみた
- 誤差逆伝播法等に用いる 計算グラフ の基本パーツ
- FPGAでDeep Learningしてみる – きゅうりを選果する
- 自然言語処理における前処理の種類とその威力
- DEEP PROBABILISTIC PROGRAMMING —”深層学習+ベイズ”のライブラリ— Edwardの紹介
- 週刊少年ジャンプの短命作品を,機械学習で予測する (前編:データ分析)
- 画像の認識 〜 Yolo
- Batch Normalization の理解
- 【決定版】WindowsでPythonを使って『画像処理』を学ぶための環境構築
- Splunkと機械学習(基礎編)
- 人工知能時代の音楽制作への招待 – Google Magenta 解説&体験ハンズオン (自習編) –
- ノンプログラミングで機械学習サービスが作りたい! WebAPI編
- クラスタリング手法のクラスタリング
- BEGAN( + DCGAN )をpytorchで実装して日本人顔の生成
- ノンプログラミングで機械学習サービスが作りたい! フロントエンド編
- GAN(Generative Adversarial Networks)を学習させる際の14のテクニック
- ベイズ最適化のKeras DNNモデルへの適用
- ResNetで料理の材料をあてていく:food2stuff
- 皆んなでやろう。 汎用人工知能 “General AI Challenge” のススメ
- 新規アプリケーションへの深層学習適用のベストプラクティス
- Microsoft の Deep Learning フレームワーク「CNTK」が Python 対応になって格段に使いやすくなってた話
- データの傾向が変わっても性能が落ちにくいモデルの作り方
- CNTKによる、CT画像からガン患者の推定
- 物体認識用データセット作成支援ツール(Faster R-CNNとかSSDとか)
- ある美女が、どこ出身かをディープラーニングで判別する
- 画像変換手法CycleGANでパンダ生成モデルを作った話
- 複数の機械学習ライブラリを一発で適応しちゃう方法
- C#で実装するトップダウン型自動微分
- データの前処理① Imputerとdropnaで欠損値の処理
- 自然言語処理による文書分類の基礎の基礎、トピックモデルを学ぶ
- Watson Retrieve and Rankの公式ツールを利用して質問応答システムを作る (1)
- Watson Retrieve and Rankの公式ツールを利用して質問応答システムを作る (2)
- Google Cloud Vision APIのOCR(画像認識)を検証する
- 行列の積演算で openBLAS cuBLAS を体感する
- 各種正則化から転移学習まで。tensorflowソースコードで見るDL性能改善手法 まとめ(ver 2)
- データ前処理② データを Categorical から Numerical に。
- 素人の言語処理100本ノック:まとめ
- gensim入門
- Modeling Relational Data with Graph Convolutional Networksのまとめ
- Yolo が遅延するのでプロファイラーを使ってみた
- Watson Retrieve and Rankの公式ツールを利用して質問応答システムを作る (3)
- データサイエンス、データ分析、機械学習に必要な数学2
- ディープラーニングでザッカーバーグの顔を識別するAIを作る①(学習データ準備編)
- ロジスティック回帰の数式を分かりやすく解説、、、できたらいいな
- 機械学習の情報を手法を中心にざっくり整理
- ドコモとリクルートの対話
- ディープラーニングでザッカーバーグの顔を識別するAIを作る②(AIモデル構築編)
- Python vs Ruby 『ゼロから作るDeep Learning』 1章 sin関数とcos関数のグラフ
- ディープラーニングでザッカーバーグの顔を識別するAIを作る③(データ学習編)
- ディープラーニングでザッカーバーグの顔を識別するAIを作る④(WEB構築編)
- 回帰と分類の違い
- 音楽と機械学習 前処理編 MFCC ~ メル周波数ケプストラム係数
- 機械学習⑤ アダブースト (AdaBoost) まとめ
- 人工知能は遊戯王カードの価格を予測できるか?
- 次元の呪い (Curse of dimensionality) とは何なのか
- ディープじゃないディープラーニングをNumPyのみで超簡単実装してみた
- 日本語極性判定を作って公開した~SentencePiece版~
- 2017年夏インターンまとめ【データサイエンス】
- 画像を送ると何が写っているのかを返す LINE Bot を GCP で作った話
- 人と対話するロボットを開発するための、研究ガイド
- 人工知能、機械学習、ディープラーニングを昔の自分でもすぐに理解できるように整理してみた
- 機械学習はライブラリを使えれば数学は必要ないのだろうか。生の声を聞いてみた。
- 割と簡単に顔画像を集める方法
- pythonでなんとなく材料研究者の気分を味わおう【pymatgen入門】
- DCGAN-tensorflowで自動画像生成をお手軽に試す
- 文・単語単位の評判分析データセットのまとめ
- 整数値のベクトルをone hot表現に変換
- データサイエンティストを目指すなら、まず最適解をデザインしよう
- 顧客セグメンテーションをクラスタリングのアルゴリズムを使って5分でやってみた
- TensorFlowを中心とした機械学習環境をUbuntuで構築
- 顧客同士の類似性をMDS(多次元尺度構成法)を使って5分で可視化する
- nvidiaのgpuメモリが解放されない場合の解決方法
- ゲームアプリの「ドット絵」をディープラーニングで自動生成する
- Google翻訳における多言語間翻訳の仕組みを転用して、応答時のテンションが変わるチャットボットを作ってみた
- 機械学習チュートリアルまとめ
- VAEでキャラクターの設定を作る。
- 多変量正規分布の場合のKullback Leibler Divergenceの導出
- Microsoft のCustom Vision を使って遊んでみると想像以上に凄そうなサービスだった
- 行列微分のコツ
- R, Python, SAS, SPSSをヨーロッパのデータサイエンティストの視点で比べてみた
- 初めてのTensorFlow(改訂版)- 線形回帰とロジスティック回帰
- 安倍政権による北朝鮮ミサイル打ち上げ関与の陰謀論をデータから検証してみた
- 単語分散表現のためのダウンローダを作りました
- 【翻訳】scikit-learn 0.18 User Guide 1.11. アンサンブルメソッド
- 3×3 畳み込みフィルタ 結果画像
- HTMLファイルで動作するWord2Vecもどきを作った
- TensorFlowを使ってDir en greyの顔分類器を作ってみた – ①紹介編
- GANで犬を猫にできるか~cycleGAN編(1)~
- Excelで作る人工知能
- なぜニューラルネットはSVMに勝てないのか
- 機械学習について
- TensorFlowを使ってぐるなびの株価の終値の上下を予測してみた(途中経過)
- visual studioでtensorflow
- 【iOS 11】開発者ドキュメントから見る iOS 11 の新機能 #WWDC17
- 口コミのdoc2vecを用いたリコメンデーションシステムの構築
- C#でTensorFlowのCNNを動かす。
- ローカル環境をよごさずに Jupyter で python コードが動く環境を手軽につくる方法
- サービスのエンゲージメントをDAU/MAU比率で計測、可視化、予測まで5分でやってみた
- 週刊少年ジャンプの短命作品を,機械学習で予測する (後編:学習と評価)
- iOS11のcoreMLで物体認識(VGG16)を実装してみる(3分クッキング)
- コロナ社「文脈解析」本のレビュー
- Python vs Ruby 『ゼロから作るDeep Learning』 まとめ
- マーケティング・キャンペーンのROIをGoogleが開発したCausal Impactをつかって5分で計測してみる
- 【iOS 11】【Core ML】pip install coremltools でエラーになった場合の対処法
- ITエンジニアのための機械学習理論入門読了者が Kaggle やってみた
- ディープじゃないディープラーニングをperlのPDLのみで超簡単実装してみた
- Watson Assistant(旧 Conversation)で行こう ②ホテル予約 チャットボットを作る
- Unity上でTensorFlowのCNNを動かす。
- 機械学習を学ぶ上で個人的に最強と思う教科書
- シンプルなNNで 学習失敗時の挙動と Batch Normalization の効果を見る
- Udemyで学べる機械学習を全部見てみたんで、お勧め報告
- KerasのstatefulなRNNを使って、wavファイルを元にして自動作曲できないか試してみた
- シンプルなNNで SeLU と eLU と ReLU を見比べてみる
- Kerasでのim2txtの実装系
- macOS Sierraでtensorflowの新しいObject Detection APIを試してみた
- Core ML+Visionを用いた物体認識の最小実装
- Kerasを用いたCIFAR-10チュートリアル
- Watson Assistant(旧 Conversation)で行こう ③コンテキスト(Context)を活用した、ホテル予約チャットボット
- 機械学習で共有スペース利用状況の解析
- 畳み込みニューラルネットの規模と正答率の実験
- 機械学習の超初心者が、みんなが良いと言う記事を読んでまとめてみた
- 最新ディープラーニングアルゴリズムを使って物体検出のチュートリアルを動かしてみた
- 【入門者向け解説】TensorFlowチュートリアルMNIST(初心者向け)
- CVAEによるキャラクターの台詞の生成と、口調変換
- KerasのモデルとTensorFlowの最適化でWasserstein GANを学習する
- 途中分岐するニューラルネットワークの書き方と精度
- 【入門者向け解説】TensorFlow基本構文とコンセプト
- 「自然言語処理シリーズ」まとめ(コロナ社)
- Chainerのレポーティング機能についてまとめてみる
- データサイエンティストを目指して勉強するなら、Kaggleからはじめよう
- SONY謹製DeepLearningライブラリNNablaでCifar10実装してみたヅラ【ニッポン万歳】
- Keras + iOS11 CoreML + Vision Framework による、ももクロ顔識別アプリの開発
- MNISTでハイパーパラメータをいじってloss/accuracyグラフを見てみる
- 楽曲生成ニューラルネットワークを作った話
- DeepLearningで楽曲特徴量を抽出し、タグを予測する
- TensorFlowのiOSサンプルの実行手順(2017年7月現在)
- Lua版 ゼロから作るDeep Learning まとめ
- 『データサイエンティストとマシンラーニングエンジニアはKaggleやれ』というのは何故なのか
- Webエンジニアがやりたいことドリブンで機械学習に入門してみた
- 機械学習、深層学習のプラットフォームの整理
- R で 巨大な Bayesian networks を扱う
- Webカメラで撮った画像中の数字を判別する
- KerasモデルをCloud ML Engineで学習してOnline Predictionしてみた
- 【随時更新】マシンラーニングエンジニアが機械学習、統計学のおすすめ本を紹介する
- 高速な Convolution 処理を目指してみた。 Kn2Image方式
- Convolution処理の手法 Im2Col方式の図解
- 自前のDeep Learning用のデータセットを拡張して水増しする
- ハミルトニアンモンテカルロ法
- XGBoost/LightGBM のGPUサポート状況調査とベンチマーク
- 【TensorBoard入門】TensorFlow処理を見える化して理解を深める
- 不均衡データに対するClassification
- 【ニューラルネットワーク】Dropout(ドロップアウト)についてまとめる
- 【入門者向け解説】TensorFlowチュートリアルDeep MNIST
- DCGANで画像の自動生成
- 【入門者向け解説】畳み込み処理入門(TensorFlowで説明)
- KerasでLSTM AutoEncoderを実装する
- Chainerでアニメキャラクターの顔画像を分類する
- Kerasはfunctional APIもきちんと理解しよう
- Class activation mappingを用いたCNNの可視化
- Kerasで最短で強化学習(reinforcement learning)する with OpenAI Gym
- 機械学習を英語ビデオで学ぶサイトまとめ
- OpenAIの標準強化学習アルゴリズムPPOを試す
- iOSの機械学習フレームワークの比較 – Core ML / Metal Performance Shaders (MPSCNN) / BNNS
- AWS EC2のスポットインスタンスでGPU版tensorflowを動かす
- 仮想通貨取引所のPoloniexからAPI経由でデータ取得し、ディープラーニング(Chainer)で翌日の価格予測をしよう
- KerasでLSGAN書く
- Variational Autoencoder徹底解説
- kerasのmnistのサンプルを読んでみる
- 「Python 機械学習プログラミング」まとめノート(Jupyter)
- 機械学習超入門
- scikit-learnとflaskで簡単な機械学習✕Webアプリ
- 類似顔検索を半日で実装する
- コロナ社「構文解析」本のレビュー
- データサイエンティスト・データエンジニアのための Python ライブラリ一覧
- 機械学習の論文を読んでみたいけど難しそう、という時に見るサイト
- メガネな人を見つめてくれるWebカメラ
- 「ベクトルで微分・行列で微分」公式まとめ
- k近傍法とk平均法の違いと詳細.
- 音声認識をカスタマイズできるMicrosoftのCustom Speech Serviceの使い方
- Microsoftの音声認識技術を本気で検証してみた
- Tensorflowにおける各種演算まとめ
- Keras チュートリアル
- 機械学習の情報収集に役立つ13のメルマガ
- 一から始める機械学習(機械学習概要)
- ごちうさしか見たことない人がけもふれを見るとどんなコメントをするのか,コメントだけで機械はチノちゃんを認識できるのか
- 論文メモ:Virtual Adversarial Training
- KerasでCNNを簡単に構築
- 論文メモ:Understanding Black-box Predictions via Influence Functions
- Windows版Anaconda上でTensorFlow +JupyterNotebook +Matplotlib の環境構築(2017年8月版)
- 自力で機械学習の訓練画像データを収集する(Google Custom Search API ピカチュウ編)
- 台詞発話時の表情を自動判定する
- Kaggle – Instacart上位陣解法まとめ
- 機械学習における、定型的な作業を自動化する
- 【プログラマーのための統計学】 度数分布とヒストグラム
- 【プログラマーのための統計学】目次 – データサイエンス
- 初めての深層学習ロードマップ [随時更新&文献追加 予定]
- はじめてのdeeplearn.js
- crystal でレコメンドエンジンを作った話
- 【プログラマーのための統計学】平均値・中央値・最頻値
- 【プログラマーのための統計学】箱ひげ図
- ゼロから作るDeepLearning by Rust(第三章まで)
- 機械学習を半自動化するauto-sklearnの環境構築(Mac&Docker)
- TensorFlowの基本的な関数をXORゲートを学習するニューラルネットワーク作成してまとめてみる
- 【プログラマーのための統計学】分散と標準偏差と変動係数
- 囲碁プロ棋士の棋譜を眺める
- Kerasで実践的な為替予測をしてみたかった(RNN編)
- 自力で機械学習の訓練画像データを収集する(Tumblr API 吉岡里帆編)
- コスト関数を解読する
- データシティ鯖江のオープンデータを使って水位計の値を機械学習で予測してみる パート2
- 機械学習によるギター画像の分類 その1
- (保存版:ど素人向け) 機械学習/データ分析 読むべき記事リスト by Team AI
- hyperoptって何してんの?
- 文系エンジニアがCourseraの機械学習コースを1ヶ月で修了したので振り返ってみました。
- (保存版:随時更新)データ分析ハッカソンやる時の便利なチュートリアル集 by Team AI
- 速報 : カナダで強化学習中心の深層学習ビデオコースが無料公開
- 正規分布間のKLダイバージェンス
- 機械学習によるギター画像の分類 その2 ~ 学習データへのノイズ付与による識別のロバスト性向上
- 典型的な DP (動的計画法) のパターンを整理 Part 1 ~ ナップサック DP 編 ~
- sklearn.feature_selection による特徴量選択
- 720万手をディープラーニングで学習したオセロAIをChainerで作ってみた

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。