Monthly Archives: 12月 2011

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

Posted on by 0 comment

参加者 青木(読み手)、沼田、今井(記)
範囲 pp. 135 – 141

6章 ドキュメントフィルタリング

  • 6.5 単純ベイズ分類器
    • 6.5.2 ベイズの定理の簡単な紹介
      • p.136 ベイズの定理
        Pr(A|B) = Pr(B|A) x Pr(A)/Pr(B)
        にある’x‘は掛ける?
        → Yes. Wikipediaでは、分母にPr(B|A)Pr(A)、分子にPr(A)というような形で書いてあった。
        Pr(B)Pr(A|B) = Pr(A)Pr(B|A) = Pr(A∩B)
        から、両辺をPr(B)で割ると求まる。ベン図を書いてPr(A∩B)から考えるとわかりやすい(らしい)。
      • p.137 def prob(self,item,cat)内
        catはcategoryの意、catProbはcategory probabilityの意。
        前頁のベイズの定理のPr(B)部分は計算していない。∵prob()は確率値を得たいわけではなく比較に使いたいだけ、かつPr(ドキュメント)はどのカテゴリでも同じなので割らずに比較しても同じ。(コード上方の本文より)
    • 6.5.3 カテゴリの選択
      • p.138 コード 下から2行目
        少なくともここまでのコードでは、

        • self.getthreshold(best)はループ毎にかわりはしないので、ループ外で値を得てそれを用いる方が良い。
        • probs(best)は前のループでmaxに入っているからそれを用いる方が良い。
        • そもそもベスト2も、その前のベスト1を選ぶループで取得しておけば良いのでは?
      • p.138 実行例中
        default=’unknown’を指定しないと’unknown’が表示されるところはNoneが返るが、何が表示されるのだろう。

        >>> None

        >>>

        でした。
  • 6.6 フィッシャー法
    • 6.6.1 特徴たちのカテゴリの確率
      • p.139 下方、三変数の算出の説明中 cprob = clf / (clf + nclf)nclfはどこにも説明が無いが何?
        → 次頁のコードでは、p=clf/(freqsum)になっているので、おそらく Pr(特徴|このカテゴリ以外のカテゴリ) だろう。なぜここだけnclfを使っているかはわからない。
    • 6.6.2 確率を統合する
      • p.140 本文下からl.3行末 誤字
        に立つ。 → に立つ。
      • p.141 コード中、math.exp(-m)は何?
        → 自然対数の底 e の -m 乗
      • p.141 コード中、// は何?
        オペランドが浮動小数点数であっても、除算結果の小数点以下を切り捨てた値を返すオペレータ。
      • p.141 実行例
        cprobは’quick’の、fisherprobは’quick rabbit’のスコアを調べているので、cprobとfisherprobの比較ができないね。

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

参加者 今井(読み手)、青木、沼田(記)
範囲 pp. 127 – 135

6章 ドキュメントフィルタリング

  • 6.1 スパムフィルタリング
  • 6.2 ドキュメントと単語
  • 6.3 分類器のトレーニング
  • 6.4 確率を計算する
    • 6.4.1 推測を始める
  • 6.5 単純ベイズ分類器
    • 第2パラグラフ末尾
      …前者の方に”money”という単語より出現しやすい。、では?
    • 6.5.1 ドキュメント全体の確率

「集合知プログラミング」第19回(12月16日)

Posted on by 0 comment

参加者 沼田(読み手)、今井(記)
範囲 pp. 118 – 126

5章 最適化

  • 5.9 嗜好への最適化
    • 5.9.2 コスト関数
      • p.119 リスト l.4
        slotsはp.118と同じだが、作り方がp.118と違う。なぜ?
        どの寮も空きが二つという前提があるからp.118でもできるが、本来各寮によって空き数はちがうだろうから、p.119のように直接つくるのが普通の気もする。
    • 5.9.3 最適化の実行
      • p.119 リストの中ほど
        optimization.geneticoptimize()の戻り値をsに入れていないのはおかしい。
  • 5.10 ネットワークの可視化
    • 5.10.1 レイアウト問題
    • 5.10.2 交差線のカウント
      • p.122 5.10.2のl.4
        ここに限らないが、なぜsolを二次元リストやタプルのリストで表現せず、一次元リストで表現するのだろう。データが表す意味がわかりにくい。
      • p.122 crosscount()の定義
        文章中の交差判定の説明はわかるが、コードが良くわからない。
        → 線分のベクトル表現の外積が0なら並行……云々らしいです。
      • p.123 l.8
        なぜ、左右の余白は違う(左余白は10で右余白は30)のだろう。
        → p.124で解決。座標が文字列の始まりになるので、文字列の長さを考えて右余白を多めにとっているのだろう。
    • 5.10.3 ネットワークの描画
  • 5.11 さらなる可能性
  • 5.12 エクササイズ

「集合知プログラミング」第18回(12月13日)

Posted on by 0 comment

参加者 青木(読み手)、沼田、今井(記)
範囲 pp. 110 – 118

5章 最適化

  • 5.8 実際のフライトを検索する
    • 5.8.1 Kayak API
    • 5.8.2 minidomパッケージ
    • 5.8.3 フライト検索
      • p.113 本文 l.2
        「検索上重要なパラメータは…」にsid, destination, depart_dateが書いてあるが、originも重要なはず。
      • p.114
        コードの最後で、リストのタプルを作ってzip()している。その下の実行例ではタプルのリストになっているが、この変換はzip()がやっている?
        → Yes. Pythonの組込関数。シーケンス型のタプルを、タプルのリストに変換する。リストサイズは引数シーケンスの一番小さいものになる。
      • p.115 l.2
        「運賃が同じであれば時刻順に返される」のは、Kayakがそのように返してくれるからだろう。コード上にはそのような処理はない。
      • p.115 実行例
        Seymourの後に改行はないはず。
  • 5.9 嗜好への最適化
    • 5.9.1 学寮の最適化
      • p.116
        dorm.pyのdormってなんだろう。 → dormitory (寮)

「集合知プログラミング」第17回(12月9日)

Posted on by 0 comment

参加者 今井(読み手)、青木、沼田(記)
範囲 pp. 102 – 110

5章 最適化

  • 5.5 ヒルクライム
  • 5.6 模擬アニーリング
  • 5.7 遺伝アルゴリズム
    • p.108 l.1
      randintの第2引数がlen(domain)-2となっているが何故1ではなくて2?

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

Posted on by 0 comment

参加者 沼田(読み手)、青木(記)
範囲 pp. 93 – 101

4章 検索とランキング

  • 4.8 エクササイズ
    p.94 3.完全一致 SQLの差集合演算:OracleのMINUS句やPostgreSQLのEXCEPT句など

5章 最適化

  • 5.1 グループ旅行
  • 5.2 解の表現
  • 5.3 コスト関数
    誤植:p.100中程  誤:reload(opptimization) → 正:reload(optimization)
  • 5.4 ランダムサーチ(無作為探索)
    p.101  関数randomoptimizeの戻り値が間違っている。rではなくbestrを返さなければならない。