<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/machinelearning/">
    <title>AIとか機械学習とか、それらのコンテストとかのwiki</title>
    <link>http://w.atwiki.jp/machinelearning/</link>
    <atom:link href="https://w.atwiki.jp/machinelearning/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>AIとか機械学習とか、それらのコンテストとかのwiki</description>

    <dc:language>ja</dc:language>
    <dc:date>2012-03-09T22:34:26+09:00</dc:date>
    <utime>1331300066</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/machinelearning/pages/1.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/machinelearning/pages/29.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/machinelearning/pages/28.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/machinelearning/pages/30.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/machinelearning/pages/27.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/machinelearning/pages/26.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/machinelearning/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/machinelearning/pages/25.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/machinelearning/pages/17.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/machinelearning/pages/18.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/machinelearning/pages/1.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/machinelearning/pages/1.html</link>
    <description>
      機械学習の勉強まとめ

各種AI系のコンテストとか用の勉強
初心者なのでいろいろと迷走してたり間違ってたり
考えればわかる最低限くらいを纏めてるはず


&amp;link_edit(編集)    </description>
    <dc:date>2012-03-09T22:34:26+09:00</dc:date>
    <utime>1331300066</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/machinelearning/pages/29.html">
    <title>機械学習/k-mean</title>
    <link>https://w.atwiki.jp/machinelearning/pages/29.html</link>
    <description>
      概要はk-meansで画像をググるとよくわかる。
n次元の点をクラスタリングする。


まずn個の点を適当にクラスタリング。
１、n個の点を一番近い基準点にクラスタリングする。
２、各基準点をクラスタリングされた点の重心に移動する。
３、１に戻る。



[[ソース&gt;&gt;http://www18.atwiki.jp/machinelearning/pages/30.html]]
中心(0,0),(0,10),(10,0),(10,10)の半径5の円内に点を適当に置く。
それをクラスタリング。

&amp;link_edit(編集)    </description>
    <dc:date>2012-03-09T21:43:15+09:00</dc:date>
    <utime>1331296995</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/machinelearning/pages/28.html">
    <title>機械学習/ID3/ソース</title>
    <link>https://w.atwiki.jp/machinelearning/pages/28.html</link>
    <description>
      //C++
#include &lt;map&gt;
#include &lt;set&gt;
#include &lt;cmath&gt;
#include &lt;stack&gt;
#include &lt;queue&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;bitset&gt;
#include &lt;fstream&gt;
#include &lt;sstream&gt;
#include &lt;stdio.h&gt;
#include &lt;ctype.h&gt;
#include &lt;string.h&gt;
#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;sys/time.h&gt;
using namespace std;
#define li        long long int
#define rep(i,to) for(li i=0;i&lt;((li)(to));++i)
#define pb        push_back
#define sz(v)     ((li)(v).size())
#define bit(n)    (1ll&lt;&lt;(li)(n))
#define all(vec)  (vec).begin(),(vec).end()
#define each(i,c) for(__typeof((c).begin()) i=(c).begin();i!=(c).end();i++)
#define MP        make_pair
#define F         first
#define S         second


string label[]={&quot;foot&quot;,&quot;eye&quot;,&quot;mouth&quot;};
string type[]={&quot;insect&quot;,&quot;non insect&quot;,&quot;alien&quot;};
li data[][4]={
{2,2,1,1},
{6,2,1,0},
{2,0,1,1},
{6,0,1,0},
{4,2,1,1},
{2,8,4,0},
{9,9,9,2}};

struct Node{
	vector&lt;pair&lt;li,Node&gt; &gt; child;
	string label;
};

Node make(vector&lt;li&gt; remain,set&lt;li&gt; rem_label){
	Node node;
	node.label=type[data[remain[0]][3]];
	if(sz(rem_label)==0) return node;
	bool ok=false;
	rep(i,sz(remain)-1){
		if(data[remain[i]][3]==data[remain[i+1]][3]) continue;
		ok=true;
		break;
	}
	if(!ok) return node;
	pair&lt;double,li&gt; best=MP(1e100,*rem_label.begin());
	each(it,rem_label){
		map&lt;li,pair&lt;li,map&lt;li,li&gt; &gt; &gt; mp;
		rep(i,sz(remain)){
			mp[data[remain[i]][*it]].F++;
			mp[data[remain[i]][*it]].S[data[remain[i]][3]]++;
		}
		double sum=0;
		each(it0,mp){
			double d=0;
			each(it1,it0-&gt;S.S){
				double p=(double)it1-&gt;S/it0-&gt;S.F;
				d-=p*log(p);
			}
			sum+=d*((double)it0-&gt;S.F/sz(remain));
		}
		best=min(best,MP(sum,*it));
	}
	node.label=label[best.S];
	rem_label.erase(best.S);
	map&lt;li,vector&lt;li&gt; &gt; mp;
	rep(i,sz(remain)) mp[data[remain[i]][best.S]].pb(remain[i]);
	each(it,mp) node.child.pb(MP(it-&gt;F,make(it-&gt;S,rem_label)));
	return node;
}

void print(Node node,int depth=0){
	rep(i,depth) cout&lt;&lt;&quot;   &quot;;
	cout&lt;&lt;node.label&lt;&lt;endl;
	rep(i,sz(node.child)){
		rep(j,depth) cout&lt;&lt;&quot;   &quot;;
		cout&lt;&lt;&quot;-&gt;&quot;&lt;&lt;node.child[i].F&lt;&lt;endl;
		print(node.child[i].S,depth+1);
	}
}

int main(){
	Node node;
	set&lt;li&gt; s;
	vector&lt;li&gt; vec;
	rep(i,3) s.insert(i);
	rep(i,7) vec.pb(i);
	node=make(vec,s);
	print(node);
}    </description>
    <dc:date>2012-03-09T21:41:31+09:00</dc:date>
    <utime>1331296891</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/machinelearning/pages/30.html">
    <title>機械学習/k-mean/ソース</title>
    <link>https://w.atwiki.jp/machinelearning/pages/30.html</link>
    <description>
      //C++
#include &lt;map&gt;
#include &lt;set&gt;
#include &lt;cmath&gt;
#include &lt;stack&gt;
#include &lt;queue&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;bitset&gt;
#include &lt;fstream&gt;
#include &lt;sstream&gt;
#include &lt;stdio.h&gt;
#include &lt;ctype.h&gt;
#include &lt;string.h&gt;
#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;sys/time.h&gt;
using namespace std;
#define li        long long int
#define rep(i,to) for(li i=0;i&lt;((li)(to));++i)
#define pb        push_back
#define sz(v)     ((li)(v).size())
#define bit(n)    (1ll&lt;&lt;(li)(n))
#define all(vec)  (vec).begin(),(vec).end()
#define each(i,c) for(__typeof((c).begin()) i=(c).begin();i!=(c).end();i++)
#define MP        make_pair
#define F         first
#define S         second


#define MAX 40000
double X[4]={0,0,10,10};
double Y[4]={0,10,0,10};
li cluster[MAX];
pair&lt;double,double&gt; center[4];
pair&lt;double,double&gt; points[MAX];

int main(){
	rep(i,MAX) points[i]=MP(rand()%7-3.0+X[i%4],rand()%7-3.0+Y[i%4]);
	rep(i,4) center[i]=MP(rand(),rand());
	rep(i,MAX) cluster[i]=i%4;
	bool updated=true;
	while(updated){
		updated=false;
		rep(i,4){
			double sumX=0,sumY=0;
			li cnt=0;
			rep(j,MAX)if(cluster[j]==i){
				sumX+=points[j].F;
				sumY+=points[j].S;
				cnt++;
			}
			if(cnt==0) continue;
			center[i]=MP(sumX/cnt,sumY/cnt);
		}
		rep(i,MAX){
			pair&lt;double,li&gt; best=MP(1e100,-1);
			rep(j,4){
				double dx=points[i].F-center[j].F;
				double dy=points[i].S-center[j].S;
				best=min(best,MP(hypot(dx,dy),j));
			}
			if(cluster[i]!=best.S) updated=true;
			cluster[i]=best.S;
		}
	}
	rep(i,4){
		cout&lt;&lt;center[i].F&lt;&lt;&quot; &quot;&lt;&lt;center[i].S&lt;&lt;endl;
		rep(j,MAX)if(cluster[j]==i){
//			cout&lt;&lt;&quot;  &quot;&lt;&lt;points[j].F&lt;&lt;&quot; &quot;&lt;&lt;points[j].S&lt;&lt;endl;
		}
	}
}    </description>
    <dc:date>2012-03-09T21:41:13+09:00</dc:date>
    <utime>1331296873</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/machinelearning/pages/27.html">
    <title>機械学習/ID3</title>
    <link>https://w.atwiki.jp/machinelearning/pages/27.html</link>
    <description>
      教師有り学習アルゴリズム
パラメーターから属するカテゴリを判別する。


与えられたデータから決定木を作成する
原理としてはオッカムの剃刀に基づく。
つまり少ない仮定で導かれる事実は優れている。
なので情報量が多い分岐を上に持ってくればいい。
つまり分岐後の平均情報量が少なくなるようにする。
　
逐次改善が行えない。
パラメーターが連続的だと使えない。

C4.5を要勉強





[[ID3のソース&gt;&gt;http://www18.atwiki.jp/machinelearning/pages/28.html]]
入力は以下。種類を推定する
足：目：口：種類
２：２：１：虫じゃない
６：２：１：虫
２：０：１：虫じゃない
６：０：１：虫
４：２：１：虫じゃない
２：８：４：虫
９：９：９：宇宙人

答えは足-&gt;目になるはず。



&amp;link_edit(編集)    </description>
    <dc:date>2012-03-09T21:11:51+09:00</dc:date>
    <utime>1331295111</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/machinelearning/pages/26.html">
    <title>機械学習/重回帰分析/多重共線性</title>
    <link>https://w.atwiki.jp/machinelearning/pages/26.html</link>
    <description>
      多重共線性

重回帰分析において関連性の高い要素が入るとバグる。

例えば理科に対する、数学と国語の関係を考える。
数学が上がると理科が上がるのは明らか。
しかし、そのせいで国語が上がると理科が下がりかねない。

この時は、数学か国語の一方を取り除けばいい。
けど、数学と国語の和と、数学と国語の差に変形してもいい。
ただ信頼性は落ちるのでサンプル数を増やす必要があるらしい。


&amp;link_edit(編集)    </description>
    <dc:date>2012-03-08T19:03:37+09:00</dc:date>
    <utime>1331201017</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/machinelearning/pages/2.html">
    <title>Menu</title>
    <link>https://w.atwiki.jp/machinelearning/pages/2.html</link>
    <description>
      **メニュー
-[[トップページ]]
-[[統計]]
-[[機械学習]]

----
**統計
#ls3(統計)

----
**機械学習
#ls3(機械学習)

----
**大会
#ls3(大会)

----
**過去問練習
#ls3(過去問練習)

&amp;link_editmenu(text=編集)    </description>
    <dc:date>2012-02-20T11:40:10+09:00</dc:date>
    <utime>1329705610</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/machinelearning/pages/25.html">
    <title>機械学習/重回帰分析</title>
    <link>https://w.atwiki.jp/machinelearning/pages/25.html</link>
    <description>
      多次元の点が渡されるのでそれについての関係を考える
どれらがどんな感じで関係してるかを求める


関係しそうな変数を自分で決める。
線形回帰でそれらについての関数を求める。
そしてどれとどれが関係が深いかとかを調べる。


例えば 0.1*a+1*b+1000*c=z
とかだったらcとzの関係が深そう。
(2.0001&lt;c&lt;2.0002)だとしたらzに与える影響は小さい
(0&lt;a&lt;100000000)とかだったらaが支配的。
これじゃよくわからないので各変数の平均を0,分散を1にしてやる。
ただ変数を変化させるのは面倒いので係数を変更する。
cの分散をS[c],係数をw[c]としたらw&#039;[c]=w[c]*sqrt(S[c]/S[z])



&amp;link_edit(編集)    </description>
    <dc:date>2012-02-19T07:20:29+09:00</dc:date>
    <utime>1329603629</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/machinelearning/pages/17.html">
    <title>統計/正規分布</title>
    <link>https://w.atwiki.jp/machinelearning/pages/17.html</link>
    <description>
      正規分布は測定誤差の分布
f(o):誤差がoになる確率

以下の性質を満たす。
-∫f(o)do=1となる。
-f(Y-y[0])*f(Y-y[1])*f(Y-y[2])‥[y:測定値]:これがY=(yの算術平均)で極値



&amp;link_edit(編集)    </description>
    <dc:date>2012-02-18T23:57:38+09:00</dc:date>
    <utime>1329577058</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/machinelearning/pages/18.html">
    <title>統計/標準偏差とか</title>
    <link>https://w.atwiki.jp/machinelearning/pages/18.html</link>
    <description>
      観測平均をX,観測値を各xとする。
真の平均をY,観測平均を各yとする。
Nを観測数、nを計算に使う数。

分散　　　:Σ(X-x)^2/n
不変分散　:Σ(X-x)^2/(n-1)
標準偏差　:sqrt(Σ(X-x)^2/(n-1))
標準誤差　:sqrt( (N-n)/(N-1) )*(標準偏差/sqrt(n))


分散　　　:離れてる度。絶対値だと不連続で不便なので２乗するらしい
不変分散　:離れてる度。基準点が影響力がないので1を引いてる
標準偏差　:離れてる度。分散を1次元に直す。
標準誤差　:標本数Nからn個選んだ時の統計量のばらつき。

基本的に2乗するのとかはノリらしい。
そのうえで性質を発見して利用してるのかな?


(Y-y)/(標準偏差/sqrt(n))は自由度(n-1)のt分布になる。
なのでN=∞で(Y-y)/(標準誤差)が自由度(n-1)のt分布
∫(Y-y)/(標準誤差)dy=0.95になるのが95%信頼区間かな？
t分布の値は表を見よう。



[[モンテカルロによる円周率の分布解析プログラム&gt;&gt;http://www18.atwiki.jp/machinelearning/pages/19.html]]





&amp;link_edit(編集)    </description>
    <dc:date>2012-02-18T11:18:36+09:00</dc:date>
    <utime>1329531516</utime>
  </item>
  </rdf:RDF>
