Monologue

7.オブジェクトという哲学(2019/07/23)

1)分かるとは

今までの人生の中で、「分かった!」と思えたことが何度かあります。仏(如来)ではありませんので、悟りを開いたという事ではありません。では、この分かるという現象はどの様なことを意味するのでしょうか。本ブログでは、当たり前の様に「見える化」「分かる化」「できる化」だといっていますが、「分かる化」とは何なのかを説明していません。しかし、「見える化」しても「分かる化」ではないという事はいっていますし、「分かる化」しただけでは、「できる化」には至っていないともいっています。
つまり、「分かる」という事象には、段階があるという事です。例えば、学生時代の数学の公式が分かったといえるのは、以下のような3段階があります。
 
 ①知っている
 ②理解している
 ③分かる
 
①知っているとは、公式の名前とその内容を知っているという段階です。誰かに、当該公式について知っているかと尋ねられれば、知っていると回答することができます。脳の中にその内容の記憶があり、ラベル付けされ、当該情報を出し入れできるという事になります。②理解しているというのは、①知っている状態からさらに進み、当該知識を使うことができます。当該公式に関するテストが出ても、当該公式を活用して問題を解くことができます。脳の中には、単なる知識という情報の記録だけでなく、ノウハウと呼ばれる活用方法が備わっているという事になります。③分かるとは、ノウハウがあるという段階を超えていることになります。当該公式の本質を理解し、他の事象にも活用できる状態です。脳の中では、当該知識やノウハウに近しい複数の情報とリンクし、他との違い等が整理されます。前述した「繋がる」という状況です。この状況に達した時、「分かった」と思えるのです。
さて、この分かるという事象に至る、知識やノウハウ等は、どの様にして成り立っているのでしょうか。

2)概念と論理

哲学の出発点となった、インド哲学(仏教)の釈迦、儒教の孔子、ギリシャ哲学のソクラテスは、不思議なことに共に紀元前5世紀頃の人達です。ソクラテスは、「無知の知」という言葉でも有名です。自分は知らないという事を自覚しており、無自覚な人々より優れていると考えていました。孔子は、「これを知るを知ると為し、知らざるを知らずと為す。是れ知るなり。」といっています。ソクラテスは、対話を通じ、あいまいな事柄を明確化しようとしてきました。この行為こそが哲学なのかもしれません。そして、ソクラテスの弟子のプラトンは、「イデア論」を唱えます。概念は、相対的にだけ決まるのではなく、真理が存在すると考えます。物事には、本質というものが存在するという事だと思います。例えば、「美しい」という概念を相対的に考えるのではなく、絶対的な概念として、本質が「分かる」という事です。
仏教では、「諸行無常」「諸法無我」の真理があります。世の中のものは絶えず変化していて一定ではなく、
すべては繋がりの中で変化しているという考えです。これらは、執着することの愚かさを諭したものであり、お互いの関係の中で生かされていることを教えるものです。お釈迦様も、真理を追究していたのです。哲学者であったといえます。
真理の追及はさておき、分かるということは、知識やノウハウ等が概念として形成され、その関係性が理解されるという事です。プラトンの弟子のアリストテレスは、知「ソフィア」を愛する「フィロ」ことが人の本性であると考えました。これが語源となり、哲学は、英語でphilosophyといいます。アリストテレスは、三段論法を定式化したことでも有名で、推論形式の体系化を行った論理学の草分けです。論理学は、哲学の一分野ですが、論理学の数学への応用が始まり、集合論、モデル理論、再帰理論、証明論があり、これらが発展して、プログラミングができています。
プログラミングとは、論理を記号で表すものです。プログラミングにより、数式を表すこともできますが、概念を表すこともできますし、概念の関係性を表すこともできます。また、こうしたことの組合せにより情報システムは作られますし、データ分析にも活用されます。

3)内包と外延

イチロウは、男性です。男性は、人間ですが、人間は、男性とは断言できません。当たり前ですが、イチロウ、男性、人間は、それぞれ概念です。そして、概念には関係性があります。
論理学では、概念を説明する方法に「内包(intension)」と「外延(extension)」の2種類があります。「内包」とは、概念の共通的な性質により説明する方法で、「外延」とは、概念に該当する具体的な事例により説明する方法です。
数学の集合の記法例としては、「内包」で表した{x|xは10未満の正の奇数}と「外延」で表した{1,3,5,7,9}は同じ集合を表します。これは、要素が少ない場合ですので分かり易いですが、要素が多すぎて書き表せない場合もあります。
一般的な概念の説明において、教師という概念を説明をしようとした場合、「内包」では、学校等で教育を担当する人のように説明することができます。「外延」では、ヘレンケラー、坊ちゃん、坂本金八等の様な実例を列記する説明となりますが、これで通じるでしょうか。概念によって、「内包」で説明した方が分かり易い場合、「外延」で説明した方が分かり易い場合、両方で説明しないと分からない場合があるようです。
Pythonは、オブジェクト指向言語です。オブジェクト指向でいうところのオブジェクトとは、概念のことです。Pythonでは、変数もそうですし、Pandasで定義されている、シリーズやデータフレームもオブジェクトです。シリーズやデータフレームは、Pandasにより、「内包」で定義されています。どういう性質で、どういう操作ができるかが定義されています。
我々は、データ分析において、データフレームとして定義されたデータを実体化し、名前を付けます。例えば、abcという名前のデータフレームを実体化しようとすると、abcは、n列×m行のデータであり、列として、個人識別番号、個人名称、出身地、電話番号、所属組織、給与の6列の情報があり、当該組織の全員分の行で構成されているというようになります。また、他にも実体化されたデータフレームxyzがあったとすると、これらabc、xyzは、データフレームの「外延」として位置づけられることになります。そして、abc、xyzは、データフレームとして定義されている全ての操作が同じように使用できるという事になります。

4)オブジェクト指向で考える

データ分析は、オブジェクト指向で考えます。データ分析では、目標を定めて優先順位を考えて行うことが大事で、「見える化」を行い、「分かる化」が図られ、「できる化」につながることが重要です。そして、正しくデータを理解するという事が、データ分析の基本になります。
本ブログでは、Pandasのデータフレームの概念を基本としています。データフレームに限定している訳ではないのですが、多くの場合、データフレームを中心として考えるのが有効であろうと思います。人工知能等の特殊な分析をするのでない限り、多くの統計パッケージがそうであるように、データを表形式で捉えることをお勧めします。
この表形式のデータをデータフレームという同じ概念で扱うことで、データ分析の処理がスムーズになります。また、有効なデータ分析を行うためには、目標を定めて、扱うデータの概念を整理することが重要になります。データ分析したい目標は、1つではありません。最終目標は1つかも知れませんが、それを導き出すために段階的な目標を設定する必要があります。説明したいことを補強する為の目標もありますし、目標に近づくための探索的な分析を必要とする場合もあります。よほど単純な命題でない限り、これらの目標は複数存在するはずです。
データ分析を進めるためには、目標を整理し、それらの目標に合わせて扱うべき概念を整理する必要があります。つまり、データフレームというオブジェクトによる複数の具体化された性質で構成される概念を整理することが必要になります。目標に合わせて、イチロウ、男性、人間、教師、ヘレンケラー、坊ちゃん、坂本金八の様な概念を整理することになります。これらの具体的な概念は、それぞれの分析目標に合わせて具体的な性質が設定されていなければなりません。
関係する概念を組み合わせて概念化するという事も必要になります。個人の特徴を分析するための概念、組織の特徴を分析する概念の2つがあった場合、この2つを組み合わせた組織毎の個人という概念を新たに定義することで、新たな分析ができるようになります。個人の概念を男性と女性の2つの概念に分ける、子供、成人と老人の3つの概念に分けるという様に分けた方が良い場合もあります。どうすべきかは、目標によります。
オブジェクト指向では、全ての対象をオブジェクトとして捉えます。また、オブジェクトの関係性で全体を把握します。また、Pandasのデータフレームは、データ分析で必要となるようなほとんどの操作を所与のものとしてくれます。システム開発をする必要はありません。オブジェクトの整理ができれば、ほとんどの表現が可能なのです。表現方法は、ネット検索すれば分かりますので、どの様にオブジェクトを整理し、どの様にオブジェクトを具体化するのかがポイントになります。本ブログでは、オブジェクトを具体化する事例を沢山示していきたいと考えています。オブジェクトの操作方法を学んでいけば、データ分析ができるようになると思います。
具現化の方法をどうすればできるのかは事例で覚えてください。表現方法は、ネット検索すれば難しくありません。しかし、目標を整理し、概念を整理するというのは、自分で考えながら経験を積むしかありません。初心者の方は、色々と試行錯誤を繰り返してください。また、概念を整理するというオブジェクト指向的な発想を大事にしてください。