Haha, what a funny question. Of course they can’t. How can one teach a computer all the intricacies of lawmaking process, and trust it well enough to let it vote? This must surely be a recipe for disaster.
Yet, as I realized in previous research, the parties mostly demand ruthless discipline from their parliamentary representatives at voting time, simply to be able to actually govern in Slovenian multiparty democracy, where there’s never an absolute winner. This leads to coalition governments, where every vote counts towards a majority.
That means that in a polarized parliament, one could theoretically predict a representative’s vote by examining the votes cast by all other representatives. If an opposition party proposes to vote on an act, it’s very likely that members of government block will uniformly, or at least predominantly, vote against it, and vice versa. There are few exceptions to that rule, namely some profoundly ethical decisions, in which majority parties will let their members vote by conscience. But they are few and far apart.
Fun with neural networks
I decided to test this out by modeling some representatives by neural networks, and training the networks with a few voting sessions and their outcomes in the beginning of the parliamentary term.
Model for each representative was fed votes by every other rep except him- or herself as input, and his or her vote as desired output. This was repeated and repeated again for all hundred training sessions, until the model converged (loss fell under 0.05).
It was then shown voting sessions iz hasn’t seen yet, and tasked to predict the outcomes.
The results are shown in images below. For each representative, the image contains:
- name and party,
- training vector (the votes he/she cast in first 100 voting sessions – red for “against”, blue for “in favor”, yellow for absence for whatever reason),
- actual votes (400 votes the network hasn’t seen and was trying to predict),
- predicted votes (how the neural network thought the representative would vote), and
- difference indicator (with red rectangles for wrong prediction, green rectangles for correct prediction, and yellow rectangles for absence)
I didn’t bother too much with statistics, to see who was the most predictable, neither did I try to predict voting for every rep.
In short, those with the mainly green bottom strip were the most predictable.
Government coalition
DeSUS
SMC
SD
Opposition
NSi
IMNS
SDS
ZL
ZAAB
A cursory examination of results yields several realizations:
- even in best predictions with lowest error rate, the model doesn’t predict absences well, especially for representatives with low incidence of absence in training data. This is intuitively understandable on two levels: first, it’s hard for the network to generalize something it didn’t observe, and second, absences can happen on a human whim, which is unreachable for a mathematical model. For representatives of opposition parties, who frequently engage in obstruction as a valid tactics, the model fares a little better.
- the model predicts best the voting behavior of majjority party (SMC) members.
- the model utterly fails to predict anything for representatives whowere absent in training period (duh).
So, could we substitute the actual representatives with simple neural networks? Not with this methodology. The problem is that we need votes of everyone else in the same session to predict the vote of modeled rep, so at the time of prediction, we already have their vote. We don’t have a way of inferring votes from scratch, or from previous votes.
We could, in theory, try to predict each rep’s vote independently from others by training the network on proposed acts’ texts. I speculate that a deeper network could correlate vectorized keywords in training texts with voting outcomes, and then be able to predict voting for each rep independently based on previous unseen texts. Maybe I’ll do that when I get the texts and learn a bit more. It’s still ANN 101 period for me.
I used a simple perceptron with 98 inputs (there have been 99 representatives in this term, counting also current ministers and substitutes), a hidden layer of 60 neurons, and a softmax classifier on the end.
As usual, I used Karpathy’s convnetjs for modeling, and d3 for visualization. Dataset comes from Zakonodajni monitor.
This was a fun problem to think about, I’m sure, but the models are completely useless because in real world you don’t get voting data on how others voted until everybody casts the vote.
Text mining is, as you’ve guessed, a more realistic approach, it’s not theoretical at all. It has its pitfalls, such as extracting features pertaining to a law copywriter’s language characteristics, extracting features that correlate the law’s acceptance conditions and its effect to a person’s vote, which are independent variables, and so on. The latter can be avoided with data that spans over at least two terms.
Actually, more data is a baseline requirement for such an approach. But it’s hard to satisfy with the volatility of political parties, the shortness of one term, stability of coalitions. I think the issue of coalition formation and our political system’s “voting machine” characteristic are two problems that’d need to get solved first, to define proper weights and so on. The “voting machine” characteristic actually simplifies modeling, because then you don’t need to model every individual’s voting pattern, but rather just pick the main political players, as there is a good chance they will vote the same anyway. This also removes restrictions on data volume and data recency and can be used to produce more complex models.
Of course they are useless, that’s what I wrote, with the exact same justification as you gave here. I’m encouraged you think text mining is the way to go, but yes, it would be difficult. There’s actually another text corpus that might be useful – the session minutes, but they are plagued by the same shortcomings you mentioned.