Category Archives: 集合知プログラミング

「集合知プログラミング」第42回(6月5日)

Posted on by 1 comment

参加者 今井(読み手)、青木(記)
範囲 pp. 295 – 308

12章アルゴリズムのまとめ

  • 12.5 K近傍法
    • 12.5.1 スケーリングと過剰変数
    • 12.5.2 K近傍法コードの利用
    • 12.5.3 強みと弱み
  • 12.6 クラスタリング
    • 12.6.1 階層的クラスタリング
    • 12.6.2 K平均法クラスタリング
    • 12.6.3 クラスタリングコードの利用
  • 12.7 多次元尺度構成法
    • 12.7.1 多次元尺度構成法のコードの利用
  • 12.8 非負値行列因子分解
    • 12.8.1 NMFコードの利用
  • 12.9 最適化
    • 12.9.1 コスト関数
    • 12.9.2 模擬アニーリング
    • 12.9.3 遺伝アルゴリズム
    • 12.9.4 最適化コードの利用

「集合知プログラミング」第41回(5月29日)

Posted on by 0 comment

参加者 青木(読み手)、今井(記)
範囲 pp. 309 – 318

12章アルゴリズムのまとめ

  • 12.3 ニューラルネットワーク
    • p.310 図12-5の隠れ層3の値は、0ではなく-5なのではないか?
    • 12.3.1 ニューラルネットワークのトレーニング
    • 12.3.2 ニューラルネットワークのコード利用
      • p.312 [online]をnotspamでトレーニングを繰り返したときの、[online, pharmacy]の結果も見てみたいね。
    • 12.3.3 強みと弱み
  • 12.4 サポートベクトルマシン
    • p.313 下から1行目 誤植
      バックコートプレイヤーはOとして → バックコートプレイヤーは○として
    • p.313 図12-7とその上の説明
      本文では、
      身長の高いプレイヤー:フロントコート:×
      素早い動きを必要:バックコート:○
      として書いてあるが、図12-7では○と×が逆に見える。
    • p.314 l.4
      本文中では”Best”とあるが、図12-7では「最適」になっている。
    • 12.4.1 カーネルトリック
    • 12.4.2 LIBSVMの利用
    • 12.4.3 強みと弱み
  • 12.5 K近傍法

「集合知プログラミング」第40回(5月25日)

Posted on by 0 comment

参加者 今井(読み手)、青木(記)
範囲 pp. 295 – 308

11章 進化する知性

  • 11.9 さらなる可能性
    より複雑な問題を考えて挑戦する。

    • 11.9.1 数学的な関数を増やす
      複雑な問題を扱うには、ツリー作成に利用する関数を増やす必要がある。
    • 11.9.2 メモリ
      複雑な問題を扱うには、次のラウンドで利用する情報を保存する手段が必要である。
    • 11.9.3 さまざまなデータタイプ
      複雑な問題を扱うには、扱える変数の型を増やすことが必要である。
  • 11.10エクササイズ

12章 アルゴリズムのまとめ

  • 12.1 ベイジアン分類器
    • 12.1.1 トレーニング
    • 12.1.2 分類
    • 12.1.3 ベイジアン分類器のコードの使用
    • 12.1.4 強みと弱み
  • 12.2 決定木による分類器
    • 12.2.1 トレーニング
    • 12.2.2 決定木分類器の利用
    • 12.2.3 強みと弱み

「集合知プログラミング」第39回(5月22日)

Posted on by 0 comment

参加者 青木(読み手)、今井(記)
範囲 pp. 287 – 295

11章 進化する知性

  • 11.7 環境を作り上げる
    • p.287 コード l.5
      なぜ、logをとるのだろう?
    • p.290 l.5
      10<5 → 10>5の間違い
    • 11.7.1 多様性の大事さ
  • 11.8 シンプルなゲーム
    • p.292 コード l.15
      リストの[:]はどういう意味?
      → スライスで範囲の最初も最後も両方省略された形。つまりもとのリストと同じ範囲のリスト
    • 11.8.1 ラウンドロビントーナメント
      • p.293 コード l.3
        losses=[o for p in pl]o(オー) は、0(ゼロ)の間違いではないか。各要素を0で初期化しているのだと思う。
    • 11.8.2 実際の人間とプレイしてみる
      • p.294 コードの最後
        p.292のコードでは、0→x-1, 1→x+1, 2→y-1, 3→y+1 しているので、x軸を上から下、y軸を左から右、と考えている?

「集合知プログラミング」第38回(5月15日)

Posted on by 0 comment

参加者 今井(読み手)、青木(記)
範囲 pp. 277 – 287

11章 進化する知性

  • 11.2 ツリー構造のプログラム
    • 11.2.3 プログラムを表示する
      生成されたプログラムをツリーの文字列表現で表示するdisplayメソッドをgp.pyに追加。
  • 11.3 最初の集団を作る
    ランダムにプログラムを作るメソッドmakerandomtreeをgp.pyに追加。
  • 11.4 解決法をテストする
    • 11.4.1 単純な数学的テスト
      遺伝プログラミングをテストするデータセットを作成するメソッドbuildhiddensetをgp.pyに追加。
    • 11.4.2 成功の度合いを計測する
      テスト結果を評価するメソッドscorefunctionをgp.pyに追加。
  • 11.5 プログラムの突然変異
    プログラムの突然変異を行うメソッドmutateをgp.pyに追加。
  • 11.6 交叉(Crossover)
    プログラムの交叉(交配)を行うメソッドcrossoverをgp.pyに追加。

「集合知プログラミング」第37回(5月11日)

Posted on by 0 comment

参加者 青木(読み手)、今井(記)
範囲 pp. 267 – 277

10章 特徴を発見する

  • 10.5 株式市場のデータを使用する
    • (10.5.4章がない。目次にもない)
    • 10.5.5 NMFを走らせる
    • 10.5.6 結果を表示する
  • 10.6 エクササイズ

11章 進化する知性

  • 11.1 遺伝的プログラミングとは?
    • p.272 以前遊んだ、Robocodeとかで試すと面白いかも。
    • 11.1.2 遺伝的プログラミングVS遺伝アルゴリズム
    • (囲み記事)遺伝的プログラミングの成功
      • それほど強くはならないんだね。
  • 11.2 ツリー構造のプログラム
    • p.274 図11-2
      なぜ、+だけ○?
      → 図の下2行目に、「円で表記されているノードは」とあるので、単に本文から参照しやすくしただけ?
    • 11.2.1 Pythonでツリーを表現する
      • p.276 下から2行目 ミススペル
        substract → subtract
    • 11.2.2 ツリーの構築と評価

「集合知プログラミング」第36回(5月8日)

Posted on by 0 comment

参加者 今井(読み手)、青木(記)
範囲 pp. 260 – 267

10章 特徴を発見する

  • 10.4 結果を表示する
    特徴毎に単語のトップ6、記事のトップ3を出力するメソッド showfeaturesをnewsfeatures.pyに追加。

    • 10.4.1 記事を表示する
      記事毎に特徴のトップ3を出力するメソッド showatriclesをnewsfeatures.pyに追加。
  • 10.5 株式市場のデータを使用する
    NMFは数値データに対しても適している。Yahoo! Financeのデータを使って検討していく。

    • 10.5.1 取引量とは何か?
      ある期間内に売られたり、買われた株式の数のこと。
    • 10.5.2 Yahoo! Financeからデータをダウンロードする
      stockvolume.py作成。Yahoo! Financeからデータをダウンロードする処理を作成。
    • 10.5.3 行列の準備
      NMF関数で使用できる形にデータを変形。

「集合知プログラミング」第35回(4月27日)

Posted on by 0 comment

参加者 青木(読み手)、今井(記)
範囲 pp. 249 – 260

10章 特徴を発見する

  • 10.1 ニュースのコーパス
    • 10.1.3 行列に変換する
  • 10.2 これまでのアプローチ
    • 10.2.1 ベイジアン分類器
    • 10.2.2 クラスタリング
      • p.252 図10-1
        本文中でこの図の中身を参照しているが、図が小さすぎて文字が読み取れない。
  • 10.3 非負値行列因子分解
    • 10.3.1 行列に関する数学の簡単な紹介
    • 10.3.2 これは記事の行列とどのような関わりがあるの?
      • p.255 図10-6
        なぜ計算結果はかかれていないのだろう?

        20   0  30   0
         0  16   1   9
         0  10   6  11
    • 10.3.3 NumPyを使う
      • p.256 l.4 行頭
        「比肩」の読みは? → ひけん
    • 10.3.4 アルゴリズム

「集合知プログラミング」第34回(4月24日)

Posted on by 0 comment

参加者 今井(読み手)、青木(記)
範囲 pp. 241 – 249

9章 高度な分類手法:カーネルメソッドとSVM

  • 9.9 Facebookでのマッチ
    • 9.9.4 マッチのデータセットを作る
      友人であれば1を、そうでなければ0を返すメソッドarefriendsを追加。
      LIBSVNで動作するデータセットを作成するメソッドmakedatasetを追加。
    • 9.9.5 SVNモデルを構築する
  • 9.10 エクササイズ

10章 特徴を発見する

  • 10.1 ニュースのコーパス
    • 10.1.1 情報源の選択
    • 10.1.2 情報源をダウンロードする

「集合知プログラミング」第33回(4月20日)

Posted on by 0 comment

参加者 青木(読み手)、今井(記)
範囲 pp. 232 – 241

9章 高度な分類手法:カーネルメソッドとSVM

  • 9.7 サポートベクトルマシン
  • 9.8 LIBSVMを使う
    • 9.8.1 LIBSVMの入手
    • 9.8.2 セッション中での使用例
    • 9.8.3 SVMをmatchmakerデータセットに適用する
      • p.235 下から3行目 ミスタイプ
        LIVSVM → LIBSVM
  • 9.9 Facebookでのマッチ
    • 9.9.1 Developer Keyを取得する
      • p.237 下のコード
        1行目と2行目の改行位置がおかしい。fromの前ではなくimportの前のはず。
    • 9.9.2 セッションを作成する
    • 9.9.3 友人データをダウンロードする